UNPKG

@jumio/websdk

Version:

Jumio WebSDK is a powerful, flexible software development kit that simplifies the integration of Jumio's services into your web applications.

6 lines 1.43 MB
const l = "data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDUuNC40NDkKICogcGRmanNCdWlsZCA9IGY0NGU1ZjBlNgogKi9jb25zdCBlPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSx0PVsuMDAxLDAsMCwuMDAxLDAsMF0sYT0xLjM1LHI9LjM1LGk9LjI1OTI1OTI1OTI1OTI1OTI0LG49MSxzPTIsbz00LGM9OCxsPTE2LGg9NjQsdT0xMjgsZD0yNTYsZj0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyIsZz0zLHA9OSxtPTEzLGI9MTUseT0xMDEsdz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fSx4PTEsUz0yLGs9MyxDPTAsdj00LEY9MSxUPTIsTz0zLEQ9e1RFWFQ6MSxMSU5LOjIsRlJFRVRFWFQ6MyxMSU5FOjQsU1FVQVJFOjUsQ0lSQ0xFOjYsUE9MWUdPTjo3LFBPTFlMSU5FOjgsSElHSExJR0hUOjksVU5ERVJMSU5FOjEwLFNRVUlHR0xZOjExLFNUUklLRU9VVDoxMixTVEFNUDoxMyxDQVJFVDoxNCxJTks6MTUsUE9QVVA6MTYsRklMRUFUVEFDSE1FTlQ6MTcsU09VTkQ6MTgsTU9WSUU6MTksV0lER0VUOjIwLFNDUkVFTjoyMSxQUklOVEVSTUFSSzoyMixUUkFQTkVUOjIzLFdBVEVSTUFSSzoyNCxUSFJFRUQ6MjUsUkVEQUNUOjI2fSxNPSJHcm91cCIsUj0iUiIsTj0xLEU9MixMPTQsXz0xNixVPTMyLGo9MTI4LFg9NTEyLHE9MSxIPTIsVz00MDk2LHo9ODE5MiwkPTMyNzY4LEc9NjU1MzYsVj0xMzEwNzIsSz0xMDQ4NTc2LEo9MjA5NzE1MixZPTgzODg2MDgsWj0xNjc3NzIxNixRPTEsZWU9Mix0ZT0zLGFlPTQscmU9NSxpZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn0sbmU9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9LHNlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn0sb2U9MSxjZT01LGxlPTEsaGU9Mix1ZT0zLGRlPTQsZmU9NSxnZT02LHBlPTcsbWU9OCxiZT05LHllPTEwLHdlPTExLHhlPTEyLFNlPTEzLEFlPTE0LGtlPTE1LENlPTE2LHZlPTE3LEZlPTE4LEllPTE5LFRlPTIwLE9lPTIxLERlPTIyLE1lPTIzLFJlPTI0LEJlPTI1LE5lPTI2LFBlPTI3LEVlPTI4LExlPTI5LF9lPTMwLFVlPTMxLGplPTMyLFhlPTMzLHFlPTM0LEhlPTM1LFdlPTM2LHplPTM3LCRlPTM4LEdlPTM5LFZlPTQwLEtlPTQxLEplPTQyLFllPTQzLFplPTQ0LFFlPTQ1LGV0PTQ2LHR0PTQ3LGF0PTQ4LHJ0PTQ5LGl0PTUwLG50PTUxLHN0PTUyLG90PTUzLGN0PTU0LGx0PTU1LGh0PTU2LHV0PTU3LGR0PTU4LGZ0PTU5LGd0PTYwLHB0PTYxLG10PTYyLGJ0PTYzLHl0PTY0LHd0PTY1LHh0PTY2LFN0PTY3LEF0PTY4LGt0PTY5LEN0PTcwLHZ0PTcxLEZ0PTcyLEl0PTczLFR0PTc0LE90PTc1LER0PTc2LE10PTc3LFJ0PTgwLEJ0PTgxLE50PTgzLFB0PTg0LEV0PTg1LEx0PTg2LF90PTg3LFV0PTg4LGp0PTg5LFh0PTkwLHF0PTkxLEh0PTkyLFd0PTkzLHp0PTk0LCR0PTAsR3Q9MSxWdD0yLEt0PTMsSnQ9NCxZdD0xLFp0PTI7bGV0IFF0PW9lO2Z1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIFF0fWZ1bmN0aW9uIGluZm8oZSl7UXQ+PWNlJiZjb25zb2xlLmluZm8oYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe1F0Pj1vZSYmY29uc29sZS53YXJuKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIGFzc2VydChlLHQpe2V8fHVucmVhY2hhYmxlKHQpfWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDtpZihhJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGEuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IHI9dD9VUkwucGFyc2UoZSx0KTpVUkwucGFyc2UoZSk7cmV0dXJuIGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2woZSl7c3dpdGNoKGU/LnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpP3I6bnVsbH1mdW5jdGlvbiBzaGFkb3coZSx0LGEscj0hMSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiFyLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IGVhPWZ1bmN0aW9uIEJhc2VFeGNlcHRpb25DbG9zdXJlKCl7ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbihlLHQpe3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7Y2xhc3MgUGFzc3dvcmRFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPXR9fWNsYXNzIFVua25vd25FcnJvckV4Y2VwdGlvbiBleHRlbmRzIGVhe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPXR9fWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJJbnZhbGlkUERGRXhjZXB0aW9uIil9fWNsYXNzIFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGUsIlJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dDt0aGlzLm1pc3Npbmc9YX19Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJGb3JtYXRFcnJvciIpfX1jbGFzcyBBYm9ydEV4Y2VwdGlvbiBleHRlbmRzIGVhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkFib3J0RXhjZXB0aW9uIil9fWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZ2b2lkIDAhPT1lPy5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IGk9MDtpPHQ7aSs9YSl7Y29uc3Qgbj1NYXRoLm1pbihpK2EsdCkscz1lLnN1YmFycmF5KGksbik7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIG9iamVjdFNpemUoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aH1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDQpO2VbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9c3RhdGljIGdldCBpc0ltYWdlRGVjb2RlclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEZWNvZGVyKX1zdGF0aWMgZ2V0IGlzRmxvYXQxNkFycmF5U3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0Zsb2F0MTZBcnJheVN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBGbG9hdDE2QXJyYXkpfXN0YXRpYyBnZXQgaXNTYW5pdGl6ZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzU2FuaXRpemVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIFNhbml0aXplcil9c3RhdGljIGdldCBwbGF0Zm9ybSgpe2NvbnN0e3BsYXRmb3JtOmUsdXNlckFnZW50OnR9PW5hdmlnYXRvcjtyZXR1cm4gc2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNBbmRyb2lkOnQuaW5jbHVkZXMoIkFuZHJvaWQiKSxpc0xpbnV4OmUuaW5jbHVkZXMoIkxpbnV4IiksaXNNYWM6ZS5pbmNsdWRlcygiTWFjIiksaXNXaW5kb3dzOmUuaW5jbHVkZXMoIldpbiIpLGlzRmlyZWZveDp0LmluY2x1ZGVzKCJGaXJlZm94Iil9KX1zdGF0aWMgZ2V0IGlzQ1NTUm91bmRTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzQ1NTUm91bmRTdXBwb3J0ZWQiLGdsb2JhbFRoaXMuQ1NTPy5zdXBwb3J0cz8uKCJ3aWR0aDogcm91bmQoMS41cHgsIDFweCkiKSl9fWNvbnN0IHRhPUFycmF5LmZyb20oQXJyYXkoMjU2KS5rZXlzKCksZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGEpe3JldHVybmAjJHt0YVtlXX0ke3RhW3RdfSR7dGFbYV19YH1zdGF0aWMgZG9tTWF0cml4VG9UcmFuc2Zvcm0oZSl7cmV0dXJuW2UuYSxlLmIsZS5jLGUuZCxlLmUsZS5mXX1zdGF0aWMgc2NhbGVNaW5NYXgoZSx0KXtsZXQgYTtpZihlWzBdKXtpZihlWzBdPDApe2E9dFswXTt0WzBdPXRbMl07dFsyXT1hfXRbMF0qPWVbMF07dFsyXSo9ZVswXTtpZihlWzNdPDApe2E9dFsxXTt0WzFdPXRbM107dFszXT1hfXRbMV0qPWVbM107dFszXSo9ZVszXX1lbHNle2E9dFswXTt0WzBdPXRbMV07dFsxXT1hO2E9dFsyXTt0WzJdPXRbM107dFszXT1hO2lmKGVbMV08MCl7YT10WzFdO3RbMV09dFszXTt0WzNdPWF9dFsxXSo9ZVsxXTt0WzNdKj1lWzFdO2lmKGVbMl08MCl7YT10WzBdO3RbMF09dFsyXTt0WzJdPWF9dFswXSo9ZVsyXTt0WzJdKj1lWzJdfXRbMF0rPWVbNF07dFsxXSs9ZVs1XTt0WzJdKz1lWzRdO3RbM10rPWVbNV19c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBtdWx0aXBseUJ5RE9NTWF0cml4KGUsdCl7cmV0dXJuW2VbMF0qdC5hK2VbMl0qdC5iLGVbMV0qdC5hK2VbM10qdC5iLGVbMF0qdC5jK2VbMl0qdC5kLGVbMV0qdC5jK2VbM10qdC5kLGVbMF0qdC5lK2VbMl0qdC5mK2VbNF0sZVsxXSp0LmUrZVszXSp0LmYrZVs1XV19c3RhdGljIGFwcGx5VHJhbnNmb3JtKGUsdCxhPTApe2NvbnN0IHI9ZVthXSxpPWVbYSsxXTtlW2FdPXIqdFswXStpKnRbMl0rdFs0XTtlW2ErMV09cip0WzFdK2kqdFszXSt0WzVdfXN0YXRpYyBhcHBseVRyYW5zZm9ybVRvQmV6aWVyKGUsdCxhPTApe2NvbnN0IHI9dFswXSxpPXRbMV0sbj10WzJdLHM9dFszXSxvPXRbNF0sYz10WzVdO2ZvcihsZXQgdD0wO3Q8Njt0Kz0yKXtjb25zdCBsPWVbYSt0XSxoPWVbYSt0KzFdO2VbYSt0XT1sKnIraCpuK287ZVthK3QrMV09bCppK2gqcytjfX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3QgYT1lWzBdLHI9ZVsxXSxpPXRbMF0qdFszXS10WzFdKnRbMl07ZVswXT0oYSp0WzNdLXIqdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9pO2VbMV09KC1hKnRbMV0rcip0WzBdK3RbNF0qdFsxXS10WzVdKnRbMF0pL2l9c3RhdGljIGF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCxhKXtjb25zdCByPXRbMF0saT10WzFdLG49dFsyXSxzPXRbM10sbz10WzRdLGM9dFs1XSxsPWVbMF0saD1lWzFdLHU9ZVsyXSxkPWVbM107bGV0IGY9cipsK28sZz1mLHA9cip1K28sbT1wLGI9cypoK2MseT1iLHc9cypkK2MseD13O2lmKDAhPT1pfHwwIT09bil7Y29uc3QgZT1pKmwsdD1pKnUsYT1uKmgscj1uKmQ7Zis9YTttKz1hO3ArPXI7Zys9cjtiKz1lO3grPWU7dys9dDt5Kz10fWFbMF09TWF0aC5taW4oYVswXSxmLHAsZyxtKTthWzFdPU1hdGgubWluKGFbMV0sYix3LHkseCk7YVsyXT1NYXRoLm1heChhWzJdLGYscCxnLG0pO2FbM109TWF0aC5tYXgoYVszXSxiLHcseSx4KX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSx0KXtjb25zdCBhPWVbMF0scj1lWzFdLGk9ZVsyXSxuPWVbM10scz1hKioyK3IqKjIsbz1hKmkrcipuLGM9aSoqMituKioyLGw9KHMrYykvMixoPU1hdGguc3FydChsKioyLShzKmMtbyoqMikpO3RbMF09TWF0aC5zcXJ0KGwraHx8MSk7dFsxXT1NYXRoLnNxcnQobC1ofHwxKX1zdGF0aWMgbm9ybWFsaXplUmVjdChlKXtjb25zdCB0PWUuc2xpY2UoMCk7aWYoZVswXT5lWzJdKXt0WzBdPWVbMl07dFsyXT1lWzBdfWlmKGVbMV0+ZVszXSl7dFsxXT1lWzNdO3RbM109ZVsxXX1yZXR1cm4gdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3QgYT1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLHI9TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihhPnIpcmV0dXJuIG51bGw7Y29uc3QgaT1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLG49TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gaT5uP251bGw6W2EsaSxyLG5dfXN0YXRpYyBwb2ludEJvdW5kaW5nQm94KGUsdCxhKXthWzBdPU1hdGgubWluKGFbMF0sZSk7YVsxXT1NYXRoLm1pbihhWzFdLHQpO2FbMl09TWF0aC5tYXgoYVsyXSxlKTthWzNdPU1hdGgubWF4KGFbM10sdCl9c3RhdGljIHJlY3RCb3VuZGluZ0JveChlLHQsYSxyLGkpe2lbMF09TWF0aC5taW4oaVswXSxlLGEpO2lbMV09TWF0aC5taW4oaVsxXSx0LHIpO2lbMl09TWF0aC5tYXgoaVsyXSxlLGEpO2lbM109TWF0aC5tYXgoaVszXSx0LHIpfXN0YXRpYyNlKGUsdCxhLHIsaSxuLHMsbyxjLGwpe2lmKGM8PTB8fGM+PTEpcmV0dXJuO2NvbnN0IGg9MS1jLHU9YypjLGQ9dSpjLGY9aCooaCooaCplKzMqYyp0KSszKnUqYSkrZCpyLGc9aCooaCooaCppKzMqYypuKSszKnUqcykrZCpvO2xbMF09TWF0aC5taW4obFswXSxmKTtsWzFdPU1hdGgubWluKGxbMV0sZyk7bFsyXT1NYXRoLm1heChsWzJdLGYpO2xbM109TWF0aC5tYXgobFszXSxnKX1zdGF0aWMjdChlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7aWYoTWF0aC5hYnMoYyk8MWUtMTIpe01hdGguYWJzKGwpPj0xZS0xMiYmdGhpcy4jZShlLHQsYSxyLGksbixzLG8sLWgvbCx1KTtyZXR1cm59Y29uc3QgZD1sKioyLTQqaCpjO2lmKGQ8MClyZXR1cm47Y29uc3QgZj1NYXRoLnNxcnQoZCksZz0yKmM7dGhpcy4jZShlLHQsYSxyLGksbixzLG8sKC1sK2YpL2csdSk7dGhpcy4jZShlLHQsYSxyLGksbixzLG8sKC1sLWYpL2csdSl9c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsaSxuLHMsbyxjKXtjWzBdPU1hdGgubWluKGNbMF0sZSxzKTtjWzFdPU1hdGgubWluKGNbMV0sdCxvKTtjWzJdPU1hdGgubWF4KGNbMl0sZSxzKTtjWzNdPU1hdGgubWF4KGNbM10sdCxvKTt0aGlzLiN0KGUsYSxpLHMsdCxyLG4sbywzKigzKihhLWkpLWUrcyksNiooZS0yKmEraSksMyooYS1lKSxjKTt0aGlzLiN0KGUsYSxpLHMsdCxyLG4sbywzKigzKihyLW4pLXQrbyksNioodC0yKnIrbiksMyooci10KSxjKX19Y29uc3QgYWE9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUsdD0hMSl7aWYoZVswXT49IsOvIil7bGV0IGE7aWYoIsO+Ij09PWVbMF0mJiLDvyI9PT1lWzFdKXthPSJ1dGYtMTZiZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSBpZigiw78iPT09ZVswXSYmIsO+Ij09PWVbMV0pe2E9InV0Zi0xNmxlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKGE9InV0Zi04Iik7aWYoYSl0cnl7Y29uc3Qgcj1uZXcgVGV4dERlY29kZXIoYSx7ZmF0YWw6ITB9KSxpPXN0cmluZ1RvQnl0ZXMoZSksbj1yLmRlY29kZShpKTtyZXR1cm4gdHx8IW4uaW5jbHVkZXMoIhsiKT9uOm4ucmVwbGFjZUFsbCgvXHgxYlteXHgxYl0qKD86XHgxYnwkKS9nLCIiKX1jYXRjaChlKXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7ZX0iLmApfX1jb25zdCBhPVtdO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYoIXQmJjI3PT09bil7Zm9yKDsrK3I8aSYmMjchPT1lLmNoYXJDb2RlQXQocik7KTtjb250aW51ZX1jb25zdCBzPWFhW25dO2EucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQocikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKWlmKGVbYV0hPT10W2FdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7ZSBpbnN0YW5jZW9mIERhdGV8fChlPW5ldyBEYXRlKGUpKTtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWxldCByYT1udWxsLGlhPW51bGw7ZnVuY3Rpb24gTWF0aENsYW1wKGUsdCxhKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxhKX1mdW5jdGlvbiB0b0hleFV0aWwoZSl7cmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSGV4P2UudG9IZXgoKTpBcnJheS5mcm9tKGUsZT0+dGFbZV0pLmpvaW4oIiIpfSJmdW5jdGlvbiIhPXR5cGVvZiBQcm9taXNlLnRyeSYmKFByb21pc2UudHJ5PWZ1bmN0aW9uKGUsLi4udCl7cmV0dXJuIG5ldyBQcm9taXNlKGE9PnthKGUoLi4udCkpfSl9KTsiZnVuY3Rpb24iIT10eXBlb2YgTWF0aC5zdW1QcmVjaXNlJiYoTWF0aC5zdW1QcmVjaXNlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZSgoZSx0KT0+ZSt0LDApfSk7Y29uc3QgbmE9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKSxzYT1TeW1ib2woIkVPRiIpO2xldCBvYT1PYmplY3QuY3JlYXRlKG51bGwpLGNhPU9iamVjdC5jcmVhdGUobnVsbCksbGE9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBOYW1le2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIGNhW2VdfHw9bmV3IE5hbWUoZSl9fWNsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIG9hW2VdfHw9bmV3IENtZChlKX19Y29uc3QgaGE9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBoYX07Y2xhc3MgRGljdHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX21hcD1uZXcgTWFwO3RoaXMueHJlZj1lO3RoaXMub2JqSWQ9bnVsbDt0aGlzLnN1cHByZXNzRW5jcnlwdGlvbj0hMTt0aGlzLl9fbm9uU2VyaWFsaXphYmxlX189aGF9YXNzaWduWHJlZihlKXt0aGlzLnhyZWY9ZX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSx0LGEpe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcC5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnJ9YXN5bmMgZ2V0QXN5bmMoZSx0LGEpe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcC5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwLmdldChlKTtpZih2b2lkIDA9PT1yJiZ2b2lkIDAhPT10KXtyPXRoaXMuX21hcC5nZXQodCk7dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwLmdldChhKSl9ciBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYocj10aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpO2lmKEFycmF5LmlzQXJyYXkocikpe3I9ci5zbGljZSgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylyW2VdaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKHJbZV09dGhpcy54cmVmLmZldGNoKHJbZV0sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKX1yZXR1cm4gcn1nZXRSYXcoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZSl9Z2V0S2V5cygpe3JldHVyblsuLi50aGlzLl9tYXAua2V5cygpXX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLnZhbHVlcygpXX1nZXRSYXdFbnRyaWVzKCl7cmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCl9c2V0KGUsdCl7dGhpcy5fbWFwLnNldChlLHQpfXNldElmTm90RXhpc3RzKGUsdCl7dGhpcy5oYXMoZSl8fHRoaXMuc2V0KGUsdCl9c2V0SWZOdW1iZXIoZSx0KXsibnVtYmVyIj09dHlwZW9mIHQmJnRoaXMuc2V0KGUsdCl9c2V0SWZBcnJheShlLHQpeyhBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZ0aGlzLnNldChlLHQpfXNldElmRGVmaW5lZChlLHQpe251bGwhPXQmJnRoaXMuc2V0KGUsdCl9c2V0SWZOYW1lKGUsdCl7InN0cmluZyI9PXR5cGVvZiB0P3RoaXMuc2V0KGUsTmFtZS5nZXQodCkpOnQgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnNldChlLHQpfXNldElmRGljdChlLHQpe3QgaW5zdGFuY2VvZiBEaWN0JiZ0aGlzLnNldChlLHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmE9ITF9KXtjb25zdCByPW5ldyBEaWN0KGUpLGk9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LHJdb2YgZS5fbWFwKXtsZXQgZT1pLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO2kuc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBpKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcC5zZXQodCxhWzBdKTtjb250aW51ZX1jb25zdCBpPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGEpZm9yKGNvbnN0W3QsYV1vZiBlLl9tYXApaS5fbWFwLmhhcyh0KXx8aS5fbWFwLnNldCh0LGEpO2kuc2l6ZT4wJiZyLl9tYXAuc2V0KHQsaSl9aS5jbGVhcigpO3JldHVybiByLnNpemU+MD9yOkRpY3QuZW1wdHl9Y2xvbmUoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRLZXlzKCkpZS5zZXQodCx0aGlzLmdldFJhdyh0KSk7cmV0dXJuIGV9ZGVsZXRlKGUpe3RoaXMuX21hcC5kZWxldGUoZSl9fWNsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWxhW2VdO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT0vXihcZCspUihcZCopJC8uZXhlYyhlKTtyZXR1cm4gYSYmIjAiIT09YVsxXT9sYVtlXT1uZXcgUmVmKHBhcnNlSW50KGFbMV0pLGFbMl0/cGFyc2VJbnQoYVsyXSk6MCk6bnVsbH1zdGF0aWMgZ2V0KGUsdCl7Y29uc3QgYT0wPT09dD9gJHtlfVJgOmAke2V9UiR7dH1gO3JldHVybiBsYVthXXx8PW5ldyBSZWYoZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX21hcC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfSp2YWx1ZXMoKXt5aWVsZCp0aGlzLl9tYXAudmFsdWVzKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19KmtleXMoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9tYXAua2V5cygpKXlpZWxkIFJlZi5mcm9tU3RyaW5nKGUpfX1mdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIE5hbWUmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX1mdW5jdGlvbiBpc0NtZChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgQ21kJiYodm9pZCAwPT09dHx8ZS5jbWQ9PT10KX1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9ZnVuY3Rpb24gaXNSZWZzRXF1YWwoZSx0KXtyZXR1cm4gZS5udW09PT10Lm51bSYmZS5nZW49PT10Lmdlbn1jbGFzcyBCYXNlU3RyZWFte2dldCBsZW5ndGgoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgZ2V0dGVyIGBsZW5ndGhgIGFjY2Vzc2VkIil9Z2V0IGlzRW1wdHkoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgZ2V0dGVyIGBpc0VtcHR5YCBhY2Nlc3NlZCIpfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRGF0YUxvYWRlZCIsITApfWdldEJ5dGUoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlYCBjYWxsZWQiKX1nZXRCeXRlcyhlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlc2AgY2FsbGVkIil9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7cmV0dXJuIHRoaXMuZ2V0Qnl0ZXMoZSx0KX1hc3luYyBhc3luY0dldEJ5dGVzKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgYXN5bmNHZXRCeXRlc2AgY2FsbGVkIil9Z2V0IGlzQXN5bmMoKXtyZXR1cm4hMX1nZXQgaXNBc3luY0RlY29kZXIoKXtyZXR1cm4hMX1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4hMX1hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe3JldHVybiBudWxsfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4gYnl0ZXNUb1N0cmluZyh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtPy5nZXRPcmlnaW5hbFN0cmVhbSgpfHx0aGlzfX1jb25zdCB1YT0vXlsxLTldXC5cZCQvLGRhPTIqKjMxLTEsZmE9WzEsMCwwLDEsMCwwXSxnYT1bIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdLHBhPVsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il07ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19Y2xhc3MgTWlzc2luZ0RhdGFFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBNaXNzaW5nIGRhdGEgWyR7ZX0sICR7dH0pYCwiTWlzc2luZ0RhdGFFeGNlcHRpb24iKTt0aGlzLmJlZ2luPWU7dGhpcy5lbmQ9dH19Y2xhc3MgUGFyc2VyRU9GRXhjZXB0aW9uIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiUGFyc2VyRU9GRXhjZXB0aW9uIil9fWNsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIGVhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19ZnVuY3Rpb24gYXJyYXlCdWZmZXJzVG9CeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBuZXcgVWludDhBcnJheSgwKTtpZigxPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZVswXSk7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cisrKWErPWVbcl0uYnl0ZUxlbmd0aDtjb25zdCByPW5ldyBVaW50OEFycmF5KGEpO2xldCBpPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlW2FdKTtyLnNldCh0LGkpO2krPXQuYnl0ZUxlbmd0aH1yZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBmZXRjaEJpbmFyeURhdGEoZSl7Y29uc3QgdD1hd2FpdCBmZXRjaChlKTtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmaWxlICIke2V9IiB3aXRoICIke3Quc3RhdHVzVGV4dH0iLmApO3JldHVybiBuZXcgVWludDhBcnJheShhd2FpdCB0LmFycmF5QnVmZmVyKCkpfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTphPSExLHN0b3BXaGVuRm91bmQ6cj0hMH0pe2xldCBpO2NvbnN0IG49bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFuLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZuLnB1dChlLm9iaklkKTtjb25zdCBzPWE/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1zKXtpZihyKXJldHVybiBzOyhpfHw9W10pLnB1c2gocyl9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIGl9Y29uc3QgbWE9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT0iTSIucmVwZWF0KGUvMWUzfDApK21hW2UlMWUzLzEwMHwwXSttYVsxMCsoZSUxMDAvMTB8MCldK21hWzIwK2UlMTBdO3JldHVybiB0P2EudG9Mb3dlckNhc2UoKTphfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU+MD9NYXRoLmNlaWwoTWF0aC5sb2cyKGUpKTowfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkSW50MTYoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNik+PjE2fWZ1bmN0aW9uIHJlYWRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiBpc1doaXRlU3BhY2UoZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfWZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8obnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoZT0+Im51bWJlciI9PXR5cGVvZiBlKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJiEoZSBpbnN0YW5jZW9mIEJpZ0ludDY0QXJyYXl8fGUgaW5zdGFuY2VvZiBCaWdVaW50NjRBcnJheSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pfWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNoYXJDb2RlQXQocik7aWYoaTwzM3x8aT4xMjZ8fDM1PT09aXx8NDA9PT1pfHw0MT09PWl8fDYwPT09aXx8NjI9PT1pfHw5MT09PWl8fDkzPT09aXx8MTIzPT09aXx8MTI1PT09aXx8NDc9PT1pfHwzNz09PWkpe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7aS50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIGVzY2FwZVN0cmluZyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8oWygpXFxcblxyXSkvZyxlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCl9ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxyKXtpZighZSlyZXR1cm47bGV0IGk9bnVsbDtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhlKSlyZXR1cm47aT1lO3IucHV0KGkpO2U9dC5mZXRjaChlKX1pZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBpIG9mIGUpX2NvbGxlY3RKUyhpLHQsYSxyKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUoZS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXtjb25zdCB0PWUuZ2V0KCJKUyIpO2xldCByO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I9dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihyPXQpO3ImJj1zdHJpbmdUb1BERlN0cmluZyhyLCEwKS5yZXBsYWNlQWxsKCJcMCIsIiIpO3ImJmEucHVzaChyLnRyaW0oKSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsYSxyKX1pJiZyLnJlbW92ZShpKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihpKWZvcihsZXQgdD1pLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBuPWlbdF07aWYobiBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygbi5nZXRLZXlzKCkpe2NvbnN0IGk9YVt0XTtpZighaSljb250aW51ZTtjb25zdCBzPVtdO19jb2xsZWN0SlMobi5nZXRSYXcodCksZSxzLG5ldyBSZWZTZXQpO3MubGVuZ3RoPjAmJihyW2ldPXMpfX1pZih0LmhhcygiQSIpKXtjb25zdCBhPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGEsbmV3IFJlZlNldCk7YS5sZW5ndGg+MCYmKHIuQWN0aW9uPWEpfXJldHVybiBvYmplY3RTaXplKHIpPjA/cjpudWxsfWNvbnN0IGJhPXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY29kZVBvaW50QXQodCk7YT41NTI5NSYmKGE8NTczNDR8fGE+NjU1MzMpJiZ0Kys7eWllbGQgYX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1pJiZpPD0xMjYpe2NvbnN0IG49YmFbaV07aWYobil7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKG4pO2E9cisxfX1lbHNle2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgJiN4JHtpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJnIrKzthPXIrMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGE9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGEmJmFbMV09PT1hWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHthWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7YVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChhKXx8IS9eW1x3LVxcXSskLy50ZXN0KGEpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6cixpdGFsaWNBbmdsZTppfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEsITApKXJldHVybiExO2NvbnN0IG49cj9yLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKG4pP246IjQwMCI7Y29uc3Qgcz1wYXJzZUZsb2F0KGkpO2UuaXRhbGljQW5nbGU9aXNOYU4ocyl8fHM8LTkwfHxzPjkwPyIxNCI6aS50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLHJdb2YgZSl7aWYoIWEuc3RhcnRzV2l0aChmKSljb250aW51ZTtsZXQgZT10LmdldChyLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoci5wYWdlSW5kZXgsZSl9ZS5wdXNoKHIpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gbnVsbD09ZXx8ZnVuY3Rpb24gaXNBc2NpaShlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuITE7cmV0dXJuIWV8fC9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX0oZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaCh0YVtyPj44JjI1NV0sdGFbMjU1JnJdKX1yZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2U3RyaW5nKGUsdD0hMSl7Y29uc3QgYT1bXTt0JiZhLnB1c2goIsO+w78iKTtmb3IobGV0IHQ9MCxyPWUubGVuZ3RoO3Q8cjt0Kyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KHQpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gZ2V0Um90YXRpb25NYXRyaXgoZSx0LGEpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxhXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxhXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1mdW5jdGlvbiBnZXRTaXplSW5CeXRlcyhlKXtyZXR1cm4gTWF0aC5jZWlsKE1hdGguY2VpbChNYXRoLmxvZzIoMStlKSkvOCl9Y2xhc3MgUUNNU3tzdGF0aWMjYT1udWxsO3N0YXRpYyBfbWVtb3J5PW51bGw7c3RhdGljIF9tdXN0QWRkQWxwaGE9ITE7c3RhdGljIF9kZXN0QnVmZmVyPW51bGw7c3RhdGljIF9kZXN0T2Zmc2V0PTA7c3RhdGljIF9kZXN0TGVuZ3RoPTA7c3RhdGljIF9jc3NDb2xvcj0iIjtzdGF0aWMgX21ha2VIZXhDb2xvcj1udWxsO3N0YXRpYyBnZXQgX21lbW9yeUFycmF5KCl7Y29uc3QgZT10aGlzLiNhO3JldHVybiBlPy5ieXRlTGVuZ3RoP2U6dGhpcy4jYT1uZXcgVWludDhBcnJheSh0aGlzLl9tZW1vcnkuYnVmZmVyKX19bGV0IHlhO2NvbnN0IHdhPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2lnbm9yZUJPTTohMCxmYXRhbDohMH0pOntkZWNvZGU6KCk9Pnt0aHJvdyBFcnJvcigiVGV4dERlY29kZXIgbm90IGF2YWlsYWJsZSIpfX07InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2RlciYmd2EuZGVjb2RlKCk7bGV0IHhhPW51bGw7ZnVuY3Rpb24gZ2V0VWludDhBcnJheU1lbW9yeTAoKXtudWxsIT09eGEmJjAhPT14YS5ieXRlTGVuZ3RofHwoeGE9bmV3IFVpbnQ4QXJyYXkoeWEubWVtb3J5LmJ1ZmZlcikpO3JldHVybiB4YX1sZXQgU2E9MDtmdW5jdGlvbiBwYXNzQXJyYXk4VG9XYXNtMChlLHQpe2NvbnN0IGE9dCgxKmUubGVuZ3RoLDEpPj4+MDtnZXRVaW50OEFycmF5TWVtb3J5MCgpLnNldChlLGEvMSk7U2E9ZS5sZW5ndGg7cmV0dXJuIGF9Y29uc3QgQWE9T2JqZWN0LmZyZWV6ZSh7UkdCODowLDA6IlJHQjgiLFJHQkE4OjEsMToiUkdCQTgiLEJHUkE4OjIsMjoiQkdSQTgiLEdyYXk4OjMsMzoiR3JheTgiLEdyYXlBODo0LDQ6IkdyYXlBOCIsQ01ZSzo1LDU6IkNNWUsifSksa2E9T2JqZWN0LmZyZWV6ZSh7UGVyY2VwdHVhbDowLDA6IlBlcmNlcHR1YWwiLFJlbGF0aXZlQ29sb3JpbWV0cmljOjEsMToiUmVsYXRpdmVDb2xvcmltZXRyaWMiLFNhdHVyYXRpb246MiwyOiJTYXR1cmF0aW9uIixBYnNvbHV0ZUNvbG9yaW1ldHJpYzozLDM6IkFic29sdXRlQ29sb3JpbWV0cmljIn0pO2Z1bmN0aW9uIF9fd2JnX2dldF9pbXBvcnRzKCl7Y29uc3QgZT17d2JnOnt9fTtlLndiZy5fX3diZ19jb3B5cmVzdWx0X2IwOGVlN2QyNzNmMjk1ZGQ9ZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24gY29weV9yZXN1bHQoZSx0KXtjb25zdHtfbXVzdEFkZEFscGhhOmEsX2Rlc3RCdWZmZXI6cixfZGVzdE9mZnNldDppLF9kZXN0TGVuZ3RoOm4sX21lbW9yeUFycmF5OnN9PVFDTVM7aWYodCE9PW4paWYoYSlmb3IobGV0IGE9ZSxuPWUrdCxvPWk7YTxuO2ErPTMsbys9NCl7cltvXT1zW2FdO3JbbysxXT1zW2ErMV07cltvKzJdPXNbYSsyXTtyW28rM109MjU1fWVsc2UgZm9yKGxldCBhPWUsbj1lK3Qsbz1pO2E8bjthKz0zLG8rPTQpe3Jbb109c1thXTtyW28rMV09c1thKzFdO3JbbysyXT1zW2ErMl19ZWxzZSByLnNldChzLnN1YmFycmF5KGUsZSt0KSxpKX0oZT4+PjAsdD4+PjApfTtlLndiZy5fX3diZ19jb3B5cmdiX2Q2MGNlMTdiYjA1ZDliNjc9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uIGNvcHlfcmdiKGUpe2NvbnN0e19kZXN0QnVmZmVyOnQsX2Rlc3RPZmZzZXQ6YSxfbWVtb3J5QXJyYXk6cn09UUNNUzt0W2FdPXJbZV07dFthKzFdPXJbZSsxXTt0W2ErMl09cltlKzJdfShlPj4+MCl9O2Uud2JnLl9fd2JnX21ha2Vjc3NSR0JfODkzYmYwY2Q5ZmRiMzAyZD1mdW5jdGlvbihlKXshZnVuY3Rpb24gbWFrZV9jc3NSR0IoZSl7Y29uc3R7X21lbW9yeUFycmF5OnR9PVFDTVM7UUNNUy5fY3NzQ29sb3I9UUNNUy5fbWFrZUhleENvbG9yKHRbZV0sdFtlKzFdLHRbZSsyXSl9KGU+Pj4wKX07ZS53YmcuX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZT1mdW5jdGlvbigpe2NvbnN0IGU9eWEuX193YmluZGdlbl9leHBvcnRfMCx0PWUuZ3Jvdyg0KTtlLnNldCgwLHZvaWQgMCk7ZS5zZXQodCswLHZvaWQgMCk7ZS5zZXQodCsxLG51bGwpO2Uuc2V0KHQrMiwhMCk7ZS5zZXQodCszLCExKX07ZS53YmcuX193YmluZGdlbl90aHJvdz1mdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcihmdW5jdGlvbiBnZXRTdHJpbmdGcm9tV2FzbTAoZSx0KXtlPj4+PTA7cmV0dXJuIHdhLmRlY29kZShnZXRVaW50OEFycmF5TWVtb3J5MCgpLnN1YmFycmF5KGUsZSt0KSl9KGUsdCkpfTtyZXR1cm4gZX1mdW5jdGlvbiBfX3diZ19maW5hbGl6ZV9pbml0KGUsdCl7eWE9ZS5leHBvcnRzO19fd2JnX2luaXQuX193YmluZGdlbl93YXNtX21vZHVsZT10O3hhPW51bGw7eWEuX193YmluZGdlbl9zdGFydCgpO3JldHVybiB5YX1hc3luYyBmdW5jdGlvbiBfX3diZ19pbml0KGUpe2lmKHZvaWQgMCE9PXlhKXJldHVybiB5YTt2b2lkIDAhPT1lJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZT8oe21vZHVsZV9vcl9wYXRoOmV9PWUpOmNvbnNvbGUud2FybigidXNpbmcgZGVwcmVjYXRlZCBwYXJhbWV0ZXJzIGZvciB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb247IHBhc3MgYSBzaW5nbGUgb2JqZWN0IGluc3RlYWQiKSk7Y29uc3QgdD1fX3diZ19nZXRfaW1wb3J0cygpOygic3RyaW5nIj09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBSZXF1ZXN0JiZlIGluc3RhbmNlb2YgUmVxdWVzdHx8ImZ1bmN0aW9uIj09dHlwZW9mIFVSTCYmZSBpbnN0YW5jZW9mIFVSTCkmJihlPWZldGNoKGUpKTtjb25zdHtpbnN0YW5jZTphLG1vZHVsZTpyfT1hd2FpdCBhc3luYyBmdW5jdGlvbiBfX3diZ19sb2FkKGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFJlc3BvbnNlJiZlIGluc3RhbmNlb2YgUmVzcG9uc2Upe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyl0cnl7cmV0dXJuIGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGUsdCl9Y2F0Y2godCl7aWYoImFwcGxpY2F0aW9uL3dhc20iPT1lLmhlYWRlcnMuZ2V0KCJDb250ZW50LVR5cGUiKSl0aHJvdyB0O2NvbnNvbGUud2FybigiYFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nYCBmYWlsZWQgYmVjYXVzZSB5b3VyIHNlcnZlciBkb2VzIG5vdCBzZXJ2ZSBXYXNtIHdpdGggYGFwcGxpY2F0aW9uL3dhc21gIE1JTUUgdHlwZS4gRmFsbGluZyBiYWNrIHRvIGBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZWAgd2hpY2ggaXMgc2xvd2VyLiBPcmlnaW5hbCBlcnJvcjpcbiIsdCl9Y29uc3QgYT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cmV0dXJuIGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCl9e2NvbnN0IGE9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZSx0KTtyZXR1cm4gYSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlP3tpbnN0YW5jZTphLG1vZHVsZTplfTphfX0oYXdhaXQgZSx0KTtyZXR1cm4gX193YmdfZmluYWxpemVfaW5pdChhLHIpfWNsYXNzIENvbG9yU3BhY2V7c3RhdGljI3I9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5uYW1lPWU7dGhpcy5udW1Db21wcz10fWdldFJnYihlLHQsYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe3RoaXMuZ2V0UmdiSXRlbShlLHQsYSwwKTtyZXR1cm4gYX1nZXRSZ2JIZXgoZSx0KXtjb25zdCBhPXRoaXMuZ2V0UmdiKGUsdCxDb2xvclNwYWNlLiNyKTtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoYVswXSxhWzFdLGFbMl0pfWdldFJnYkl0ZW0oZSx0LGEscil7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkl0ZW0iKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkJ1ZmZlciIpfWdldE91dHB1dExlbmd0aChlLHQpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRPdXRwdXRMZW5ndGgiKX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiExfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZShlLHRoaXMubnVtQ29tcHMpfWZpbGxSZ2IoZSx0LGEscixpLG4scyxvLGMpe2NvbnN0IGw9dCphO2xldCBoPW51bGw7Y29uc3QgdT0xPDxzLGQ9YSE9PWl8fHQhPT1yO2lmKHRoaXMuaXNQYXNzdGhyb3VnaChzKSloPW87ZWxzZSBpZigxPT09dGhpcy5udW1Db21wcyYmbD51JiYiRGV2aWNlR3JheSIhPT10aGlzLm5hbWUmJiJEZXZpY2VSR0IiIT09dGhpcy5uYW1lKXtjb25zdCB0PXM8PTg/bmV3IFVpbnQ4QXJyYXkodSk6bmV3IFVpbnQxNkFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTtlKyspdFtlXT1lO2NvbnN0IGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqdSk7dGhpcy5nZXRSZ2JCdWZmZXIodCwwLHUsYSwwLHMsMCk7aWYoZCl7aD1uZXcgVWludDhBcnJheSgzKmwpO2xldCBlPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7Y29uc3Qgcj0zKm9bdF07aFtlKytdPWFbcl07aFtlKytdPWFbcisxXTtoW2UrK109YVtyKzJdfX1lbHNle2xldCB0PTA7Zm9yKGxldCByPTA7cjxsOysrcil7Y29uc3QgaT0zKm9bcl07ZVt0KytdPWFbaV07ZVt0KytdPWFbaSsxXTtlW3QrK109YVtpKzJdO3QrPWN9fX1lbHNlIGlmKGQpe2g9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbCk7dGhpcy5nZXRSZ2JCdWZmZXIobywwLGwsaCwwLHMsMCl9ZWxzZSB0aGlzLmdldFJnYkJ1ZmZlcihvLDAscipuLGUsMCxzLGMpO2lmKGgpaWYoZCkhZnVuY3Rpb24gcmVzaXplUmdiSW1hZ2UoZSx0LGEscixpLG4scyl7cz0xIT09cz8wOnM7Y29uc3Qgbz1hL2ksYz1yL247bGV0IGwsaD0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KGkpLGQ9MyphO2ZvcihsZXQgZT0wO2U8aTtlKyspdVtlXT0zKk1hdGguZmxvb3IoZSpvKTtmb3IobGV0IGE9MDthPG47YSsrKXtjb25zdCByPU1hdGguZmxvb3IoYSpjKSpkO2ZvcihsZXQgYT0wO2E8aTthKyspe2w9cit1W2FdO3RbaCsrXT1lW2wrK107dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO2grPXN9fX0oaCxlLHQsYSxyLGksYyk7ZWxzZXtsZXQgdD0wLGE9MDtmb3IobGV0IGk9MCxzPXIqbjtpPHM7aSsrKXtlW3QrK109aFthKytdO2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTt0Kz1jfX19Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXt3YXJuKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1hO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsYSxyKXtjb25zdCBpPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxpLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKGksMCxhLHIpfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdCBvPXRoaXMudGludEZuLGM9dGhpcy5iYXNlLGw9MS8oKDE8PG4pLTEpLGg9Yy5udW1Db21wcyx1PWMudXNlc1plcm9Ub09uZVJhbmdlLGQ9KGMuaXNQYXNzdGhyb3VnaCg4KXx8IXUpJiYwPT09cztsZXQgZj1kP2k6MDtjb25zdCBnPWQ/cjpuZXcgVWludDhDbGFtcGVkQXJyYXkoaCphKSxwPXRoaXMubnVtQ29tcHMsbT1uZXcgRmxvYXQzMkFycmF5KHApLGI9bmV3IEZsb2F0MzJBcnJheShoKTtsZXQgeSx3O2Zvcih5PTA7eTxhO3krKyl7Zm9yKHc9MDt3PHA7dysrKW1bd109ZVt0KytdKmw7byhtLDAsYiwwKTtpZih1KWZvcih3PTA7dzxoO3crKylnW2YrK109MjU1KmJbd107ZWxzZXtjLmdldFJnYkl0ZW0oYiwwLGcsZik7Zis9aH19ZHx8Yy5nZXRSZ2JCdWZmZXIoZywwLGEscixpLDgscyl9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTt0aGlzLmhpZ2hWYWw9dDtjb25zdCByPWUubnVtQ29tcHMqKHQrMSk7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkocik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhyKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2F9YCk7Zm9yKGxldCBlPTA7ZTxyOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmYS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0e2Jhc2U6aSxoaWdoVmFsOm4sbG9va3VwOnN9PXRoaXMsbz1NYXRoQ2xhbXAoTWF0aC5yb3VuZChlW3RdKSwwLG4pKmkubnVtQ29tcHM7aS5nZXRSZ2JCdWZmZXIocyxvLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0e2Jhc2U6byxoaWdoVmFsOmMsbG9va3VwOmx9PXRoaXMse251bUNvbXBzOmh9PW8sdT1vLmdldE91dHB1dExlbmd0aChoLHMpO2ZvcihsZXQgbj0wO248YTsrK24pe2NvbnN0IGE9TWF0aENsYW1wKE1hdGgucm91bmQoZVt0KytdKSwwLGMpKmg7by5nZXRSZ2JCdWZmZXIobCxhLDEscixpLDgscyk7aSs9dX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMsdCl9aXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMiE9PWUubGVuZ3RoKXt3YXJuKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PDEpe3dhcm4oIkJpdHMgcGVyIGNvbXBvbmVudCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfXJldHVybiAwPT09ZVswXSYmZVsxXT09PSgxPDx0KS0xfX1jbGFzcyBEZXZpY2VHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUdyYXkiLDEpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3QgaT0yNTUqZVt0XTthW3JdPWFbcisxXT1hW3IrMl09aX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0yNTUvKCgxPDxuKS0xKTtsZXQgYz10LGw9aTtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PW8qZVtjKytdO3JbbCsrXT10O3JbbCsrXT10O3JbbCsrXT10O2wrPXN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBEZXZpY2VSZ2JDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCIiwzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2Fbcl09MjU1KmVbdF07YVtyKzFdPTI1NSplW3QrMV07YVtyKzJdPTI1NSplW3QrMl19Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2lmKDg9PT1uJiYwPT09cyl7ci5zZXQoZS5zdWJhcnJheSh0LHQrMyphKSxpKTtyZXR1cm59Y29uc3Qgbz0yNTUvKCgxPDxuKS0xKTtsZXQgYz10LGw9aTtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtyW2wrK109byplW2MrK107cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9fWNsYXNzIERldmljZVJnYmFDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCQSIsNCl9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIDQqZX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX1maWxsUmdiKGUsdCxhLHIsaSxuLHMsbyxjKXthIT09aXx8dCE9PXI/ZnVuY3Rpb24gcmVzaXplUmdiYUltYWdlKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89YS9pLGM9ci9uO2xldCBsPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkoaSk7aWYoMT09PXMpe2ZvcihsZXQgZT0wO2U8aTtlKyspaFtlXT1NYXRoLmZsb29yKGUqbyk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIpLHM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSx1PUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzE2Nzc3MjE1OjQyOTQ5NjcwNDA7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgdD1yLnN1YmFycmF5KE1hdGguZmxvb3IoZSpjKSphKTtmb3IobGV0IGU9MDtlPGk7ZSsrKXNbbCsrXXw9dFtoW2VdXSZ1fX1lbHNle2NvbnN0IHI9NCxzPWEqcjtmb3IobGV0IGU9MDtlPGk7ZSsrKWhbZV09TWF0aC5mbG9vcihlKm8pKnI7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgcj1lLnN1YmFycmF5KE1hdGguZmxvb3IoYSpjKSpzKTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBhPWhbZV07dFtsKytdPXJbYV07dFtsKytdPXJbYSsxXTt0W2wrK109clthKzJdfX19fShvLGUsdCxhLHIsaSxjKTpmdW5jdGlvbiBjb3B5UmdiYUltYWdlKGUsdCxhKXtpZigxPT09YSl7Y29uc3QgYT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIpLHI9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSxpPUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzE2Nzc3MjE1OjQyOTQ5NjcwNDA7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXJbZV18PWFbZV0maX1lbHNle2xldCBhPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cis9NCl7dFthKytdPWVbcl07dFthKytdPWVbcisxXTt0W2ErK109ZVtyKzJdfX19KG8sZSxjKX19Y2xhc3MgRGV2aWNlQ215a0NTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VDTVlLIiw0KX0jaShlLHQsYSxyLGkpe2NvbnN0IG49ZVt0XSphLHM9ZVt0KzFdKmEsbz1lW3QrMl0qYSxjPWVbdCszXSphO3JbaV09MjU1K24qKC00LjM4NzMzMjM4NDYwOTk4OCpuKzU0LjQ4NjE1MTk0MTg5MTc2KnMrMTguODIyOTA1MDIxNjUzMDIqbysyMTIuMjU2NjI0NTE2Mzk1ODUqYy0yODUuMjMzMTAyNjEzNzAwNCkrcyooMS43MTQ5NzYzNDc3MzYyMTM0KnMtNS42MDk2NzM2OTA0MDQ3MzE1Km8rLTE3Ljg3Mzg3MDg2MTQxNTQ0NCpjLTUuNDk3MDA2NDI3MTk2MzY2KStvKigtMi41MjE3MzQwMTMxNjgzMDMzKm8tMjEuMjQ4OTIzMzM3MzUzMDczKmMrMTcuNTExOTI3MDg0MTgxMykrYyooLTIxLjg2MTIyMTQ3NDYzNjA1KmMtMTg5LjQ4MTgwODM1OTIyNzQ3KTtyW2krMV09MjU1K24qKDguODQxMDQxNDIyMDM2MTQ5Km4rNjAuMTE4MDI3MDQ1NTk3MzY2KnMrNi44NzE0MjU1OTIwNDkwMDcqbyszMS4xNTkxMDAxMzAwNTU5MjIqYy03OS4yOTcwODQ0ODE2NTQ4KStzKigtMTUuMzEwMzYxMzA2OTY3ODE3KnMrMTcuNTc1MjUxMjYxMTA5NDgyKm8rMTMxLjM1MjUwOTEyNDkzOTc2KmMtMTkwLjk0NTMzMDI1ODg5NTEpK28qKDQuNDQ0MzM5MTAyODUyNzM5Km8rOS44NjMyODYxNDkzNDA1KmMtMjQuODY3NDE1ODI1NTU4NzgpK2MqKC0yMC43MzczMjU0NzExODEwMzQqYy0xODcuODA0NTM3MDk3MTk1NzgpO3JbaSsyXT0yNTUrbiooLjg4NDI1MjI0MzAwMDMyOTYqbis4LjA3ODY3NzUwMzExMjkyOCpzKzMwLjg5OTc4MzA5NzAzNzI5Km8tLjIzODgzMjM4Njg5MTc4OTM0KmMtMTQuMTgzNTc2Nzk5NjczMjg2KStzKigxMC40OTU5MzI3MzQzMjA3MipzKzYzLjAyMzc4NDk0NzU0MDUyKm8rNTAuNjA2OTU3NjU2MzYwNzM0KmMtMTEyLjIzODg0MjUzNzE5MjQ4KStvKiguMDMyOTYwNDExMTQ4NzMyMTcqbysxMTUuNjAzODQ0NDk2NDY2NDEqYy0xOTMuNTgyMDkzNTY4NjE1MDUpK2MqKC0yMi4zMzgxNjgwNzMwOTg4NipjLTE4MC4xMjYxMzk3NDcwODM2Nyl9Z2V0UmdiSXRlbShlLHQsYSxyKXt0aGlzLiNpKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89MS8oKDE8PG4pLTEpO2ZvcihsZXQgbj0wO248YTtuKyspe3RoaXMuI2koZSx0LG8scixpKTt0Kz00O2krPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUvNCooMyt0KXwwfX1jbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsR3JheSIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5YQix0aGlzLllCLHRoaXMuWkJdPXR8fFswLDAsMF07dGhpcy5HPWF8fDE7aWYodGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9MD09PXRoaXMuWEImJjA9PT10aGlzLllCJiYwPT09dGhpcy5aQnx8d2FybihgJHt0aGlzLm5hbWV9LCBCbGFja1BvaW50OiBYQjogJHt0aGlzLlhCfSwgWUI6ICR7dGhpcy5ZQn0sIFpCOiAke3RoaXMuWkJ9LCBvbmx5IGRlZmF1bHQgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuYCk7aWYodGhpcy5HPDEpe2luZm8oYEludmFsaWQgR2FtbWE6ICR7dGhpcy5HfSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkc9MX19I2koZSx0LGEscixpKXtjb25zdCBuPShlW3RdKmkpKip0aGlzLkcscz10aGlzLllXKm4sbz1NYXRoLm1heCgyOTUuOCpzKiouMzMzMzMzMzMzMzMzMzMzMy00MC44LDApO2Fbcl09bzthW3IrMV09bzthW3IrMl09b31nZXRSZ2JJdGVtKGUsdCxhLHIpe3RoaXMuI2koZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0xLygoMTw8biktMSk7Zm9yKGxldCBuPTA7bjxhOysrbil7dGhpcy4jaShlLHQscixpLG8pO3QrPTE7aSs9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle3N0YXRpYyNuPW5ldyBGbG9hdDMyQXJyYXkoWy44OTUxLC4yNjY0LC0uMTYxNCwtLjc1MDIsMS43MTM1LC4wMzY3LC4wMzg5LC0uMDY4NSwxLjAyOTZdKTtzdGF0aWMjcz1uZXcgRmxvYXQzMkFycmF5KFsuOTg2OTkyOSwtLjE0NzA1NDMsLjE1OTk2MjcsLjQzMjMwNTMsLjUxODM2MDMsLjA0OTI5MTIsLS4wMDg1Mjg3LC4wNDAwNDI4LC45Njg0ODY3XSk7c3RhdGljI289bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKTtzdGF0aWMjYz1uZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pO3N0YXRpYyNsPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2g9bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjdT1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNkPSgyNC8xMTYpKiozLzg7Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoIkNhbFJHQiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7Y29uc3RbaSxuLHNdPXRoaXMud2hpdGVQb2ludD1lLFtvLGMsbF09dGhpcy5ibGFja1BvaW50PXR8fG5ldyBGbG9hdDMyQXJyYXkoMyk7W3RoaXMuR1IsdGhpcy5HRyx0aGlzLkdCXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pO1t0aGlzLk1YQSx0aGlzLk1ZQSx0aGlzLk1aQSx0aGlzLk1YQix0aGlzLk1ZQix0aGlzLk1aQix0aGlzLk1YQyx0aGlzLk1ZQyx0aGlzLk1aQ109cnx8bmV3IEZsb2F0MzJBcnJheShbMSwwLDAsMCwxLDAsMCwwLDFdKTtpZihpPDB8fHM8MHx8MSE9PW4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihvPDB8fGM8MHx8bDwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtvfSwgJHtjfSwgJHtsfV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApe2luZm8oYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fSNmKGUsdCxhKXthWzBdPWVbMF0qdFswXStlWzFdKnRbMV0rZVsyXSp0WzJdO2FbMV09ZVszXSp0WzBdK2VbNF0qdFsxXStlWzVdKnRbMl07YVsyXT1lWzZdKnRbMF0rZVs3XSp0WzFdK2VbOF0qdFsyXX0jZyhlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19I3AoZSx0LGEpe2FbMF09Ljk1MDQ3KnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MS4wODg4Myp0WzJdL2VbMl19I20oZSl7cmV0dXJuIGU8PS4wMDMxMzA4P01hdGhDbGFtcCgxMi45MiplLDAsMSk6ZT49Ljk5NTU0NTI1PzE6TWF0aENsYW1wKDEuMDU1KmUqKigxLzIuNCktLjA1NSwwLDEpfSNiKGUpe3JldHVybiBlPDA/LXRoaXMuI2IoLWUpOmU+OD8oKGUrMTYpLzExNikqKjM6ZSpDYWxSR0JDUy4jZH0jeShlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9dGhpcy4jYigwKSxpPSgxLXIpLygxLXRoaXMuI2IoZVswXSkpLG49MS1pLHM9KDEtcikvKDEtdGhpcy4jYihlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS10aGlzLiNiKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qaStuO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0jdyhlLHQsYSl7aWYoMT09PWVbMF0mJjE9PT1lWzJdKXthWzBdPXRbMF07YVsxXT10WzFdO2FbMl09dFsyXTtyZXR1cm59Y29uc3Qgcj1hO3RoaXMuI2YoQ2FsUkdCQ1MuI24sdCxyKTtjb25zdCBpPUNhbFJHQkNTLiNsO3RoaXMuI2coZSxyLGkpO3RoaXMuI2YoQ2FsUkdCQ1MuI3MsaSxhKX0jeChlLHQsYSl7Y29uc3Qgcj1hO3RoaXMuI2YoQ2FsUkdCQ1MuI24sdCxyKTtjb25zdCBpPUNhbFJHQkNTLiNsO3RoaXMuI3AoZSxyLGkpO3RoaXMuI2YoQ2FsUkdCQ1MuI3MsaSxhKX0jaShlLHQsYSxyLGkpe2NvbnN0IG49TWF0aENsYW1wKGVbdF0qaSwwLDEpLHM9TWF0aENsYW1wKGVbdCsxXSppLDAsMSksbz1NYXRoQ2xhbXAoZVt0KzJdKmksMCwxKSxjPTE9PT1uPzE6bioqdGhpcy5HUixsPTE9PT1zPzE6cyoqdGhpcy5HRyxoPTE9PT1vPzE6byoqdGhpcy5HQix1PXRoaXMuTVhBKmMrdGhpcy5NWEIqbCt0aGlzLk1YQypoLGQ9dGhpcy5NWUEqYyt0aGlzLk1ZQipsK3RoaXMuTVlDKmgsZj10aGlzLk1aQSpjK3RoaXMuTVpCKmwrdGhpcy5NWkMqaCxnPUNhbFJHQkNTLiNoO2dbMF09dTtnWzFdPWQ7Z1syXT1mO2NvbnN0IHA9Q2FsUkdCQ1MuI3U7dGhpcy4jdyh0aGlzLndoaXRlUG9pbnQsZyxwKTtjb25zdCBtPUNhbFJHQkNTLiNoO3RoaXMuI3kodGhpcy5ibGFja1BvaW50LHAsbSk7Y29uc3QgYj1DYWxSR0JDUy4jdTt0aGlzLiN4KENhbFJHQkNTLiNjLG0sYik7Y29uc3QgeT1DYWxSR0JDUy4jaDt0aGlzLiNmKENhbFJHQkNTLiNvLGIseSk7YVtyXT0yNTUqdGhpcy4jbSh5WzBdKTthW3IrMV09MjU1KnRoaXMuI20oeVsxXSk7YVtyKzJdPTI1NSp0aGlzLiNtKHlbMl0pfWdldFJnYkl0ZW0oZSx0LGEscil7dGhpcy4jaShlLHQsYSxyLDEpfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdCBvPTEvKCgxPDxuKS0xKTtmb3IobGV0IG49MDtuPGE7KytuKXt0aGlzLiNpKGUsdCxyLGksbyk7dCs9MztpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH19Y2xhc3MgTGFiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiTGFiIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBMYWIiKTtbdGhpcy5YVyx0aGlzLllXLHRoaXMuWlddPWU7W3RoaXMuYW1pbix0aGlzLmFtYXgsdGhpcy5ibWluLHRoaXMuYm1heF09YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTtbdGhpcy5YQix0aGlzLllCLHRoaXMuWkJdPXR8fFswLDAsMF07aWYodGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMsIG5vIGZhbGxiYWNrIGF2YWlsYWJsZSIpO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApe2luZm8oIkludmFsaWQgQmxhY2tQb2ludCwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQiKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfWlmKHRoaXMuYW1pbj50aGlzLmFtYXh8fHRoaXMuYm1pbj50aGlzLmJtYXgpe2luZm8oIkludmFsaWQgUmFuZ2UsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0cyIpO3RoaXMuYW1pbj0tMTAwO3RoaXMuYW1heD0xMDA7dGhpcy5ibWluPS0xMDA7dGhpcy5ibWF4PTEwMH19I1MoZSl7cmV0dXJuIGU+PTYvMjk/ZSoqMzoxMDgvODQxKihlLTQvMjkpfSNBKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH0jaShlLHQsYSxyLGkpe2xldCBuPWVbdF0scz1lW3QrMV0sbz1lW3QrMl07aWYoITEhPT1hKXtuPXRoaXMuI0EobixhLDAsMTAwKTtzPXRoaXMuI0EocyxhLHRoaXMuYW1pbix0aGlzLmFtYXgpO289dGhpcy4jQShvLGEsdGhpcy5ibWluLHRoaXMuYm1heCl9cz50aGlzLmFtYXg/cz10aGlzLmFtYXg6czx0aGlzLmFtaW4mJihzPXRoaXMuYW1pbik7bz50aGlzLmJtYXg/bz10aGlzLmJtYXg6bzx0aGlzLmJtaW4mJihvPXRoaXMuYm1pbik7Y29uc3QgYz0obisxNikvMTE2LGw9YytzLzUwMCxoPWMtby8yMDAsdT10aGlzLlhXKnRoaXMuI1MobCksZD10aGlzLllXKnRoaXMuI1MoYyksZj10aGlzLlpXKnRoaXMuI1MoaCk7bGV0IGcscCxtO2lmKHRoaXMuWlc8MSl7Zz0zLjEzMzkqdSstMS42MTcqZCstLjQ5MDYqZjtwPS0uOTc4NSp1KzEuOTE2KmQrLjAzMzMqZjttPS4wNzIqdSstLjIyOSpkKzEuNDA1NypmfWVsc2V7Zz0zLjI0MDYqdSstMS41MzcyKmQrLS40OTg2KmY7cD0tLjk2ODkqdSsxLjg3NTgqZCsuMDQxNSpmO209LjA1NTcqdSstLjIwNCpkKzEuMDU3KmZ9cltpXT0yNTUqTWF0aC5zcXJ0KGcpO3JbaSsxXT0yNTUqTWF0aC5zcXJ0KHApO3JbaSsyXT0yNTUqTWF0aC5zcXJ0KG0pfWdldFJnYkl0ZW0oZSx0LGEscil7dGhpcy4jaShlLHQsITEsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0oMTw8biktMTtmb3IobGV0IG49MDtuPGE7bisrKXt0aGlzLiNpKGUsdCxvLHIsaSk7dCs9MztpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4hMH1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCExKX19ZnVuY3Rpb24gZmV0Y2hTeW5jKGUpe2NvbnN0IHQ9bmV3IFhNTEh0dHBSZXF1ZXN0O3Qub3BlbigiR0VUIixlLCExKTt0LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Quc2VuZChudWxsKTtyZXR1cm4gdC5yZXNwb25zZX1jbGFzcyBJY2NDb2xvclNwYWNlIGV4dGVuZHMgQ29sb3JTcGFjZXsjazsjQztzdGF0aWMjdj0hMDtzdGF0aWMjRj1udWxsO3N0YXRpYyNJPW51bGw7Y29uc3RydWN0b3IoZSx0LGEpe2lmKCFJY2NDb2xvclNwYWNlLmlzVXNhYmxlKXRocm93IG5ldyBFcnJvcigiTm8gSUNDIGNvbG9yIHNwYWNlIHN1cHBvcnQiKTtzdXBlcih0LGEpO2xldCByO3N3aXRjaChhKXtjYXNlIDE6cj1BYS5HcmF5ODt0aGlzLiNDPShlLHQsYSk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9vbmUoZSx0LGEpe3lhLnFjbXNfY29udmVydF9vbmUoZSx0LGEpfSh0aGlzLiNrLDI1NSplW3RdLGEpO2JyZWFrO2Nhc2UgMzpyPUFhLlJHQjg7dGhpcy4jQz0oZSx0LGEpPT5mdW5jdGlvbiBxY21zX2NvbnZlcnRfdGhyZWUoZSx0LGEscixpKXt5YS5xY21zX2NvbnZlcnRfdGhyZWUoZSx0LGEscixpKX0odGhpcy4jaywyNTUqZVt0XSwyNTUqZVt0KzFdLDI1NSplW3QrMl0sYSk7YnJlYWs7Y2FzZSA0OnI9QWEuQ01ZSzt0aGlzLiNDPShlLHQsYSk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9mb3VyKGUsdCxhLHIsaSxuKXt5YS5xY21zX2NvbnZlcnRfZm91cihlLHQsYSxyLGksbil9KHRoaXMuI2ssMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdLDI1NSplW3QrM10sYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG51bWJlciBvZiBjb21wb25lbnRzOiAke2F9YCl9dGhpcy4jaz1mdW5jdGlvbiBxY21zX3RyYW5zZm9ybWVyX2Zyb21fbWVtb3J5KGUsdCxhKXtjb25zdCByPXBhc3NBcnJheThUb1dhc20wKGUseWEuX193YmluZGdlbl9tYWxsb2MpLGk9U2E7cmV0dXJuIHlhLnFjbXNfdHJhbnNmb3JtZXJfZnJvbV9tZW1vcnkocixpLHQsYSk+Pj4wfShlLHIsa2EuUGVyY2VwdHVhbCk7aWYoIXRoaXMuI2spdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIElDQyBjb2xvciBzcGFjZSIpO0ljY0NvbG9yU3BhY2UuI0l8fD1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoZT0+eyFmdW5jdGlvbiBxY21zX2Ryb3BfdHJhbnNmb3JtZXIoZSl7eWEucWNtc19kcm9wX3RyYW5zZm9ybWVyKGUpfShlKX0pO0ljY0NvbG9yU3BhY2UuI0kucmVnaXN0ZXIodGhpcyx0aGlzLiNrKX1nZXRSZ2JIZXgoZSx0KXt0aGlzLiNDKGUsdCwhMCk7cmV0dXJuIFFDTVMuX2Nzc0NvbG9yfWdldFJnYkl0ZW0oZSx0LGEscil7UUNNUy5fZGVzdEJ1ZmZlcj1hO1FDTVMuX2Rlc3RPZmZzZXQ9cjtRQ01TLl9kZXN0TGVuZ3RoPTM7dGhpcy4jQyhlLHQsITEpO1FDTVMuX2Rlc3RCdWZmZXI9bnVsbH1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7ZT1lLnN1YmFycmF5KHQsdCthKnRoaXMubnVtQ29tcHMpO2lmKDghPT1uKXtjb25zdCB0PTI1NS8oKDE8PG4pLTEpO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyllW2FdKj10fVFDTVMuX211c3RBZGRBbHBoYT1zJiZyLmJ1ZmZlcj09PWUuYnVmZmVyO1FDTVMuX2Rlc3RCdWZmZXI9cjtRQ01TLl9kZXN0T2Zmc2V0PWk7UUNNUy5fZGVzdExlbmd0aD1hKigzK3MpOyFmdW5jdGlvbiBxY21zX2NvbnZlcnRfYXJyYXkoZSx0KXtjb25zdCBhPXBhc3NBcnJheThUb1dhc20wKHQseWEuX193YmluZGdlbl9tYWxsb2MpLHI9U2E7eWEucWNtc19jb252ZXJ0X2FycmF5KGUsYSxyKX0odGhpcy4jayxlKTtRQ01TLl9tdXN0QWRkQWxwaGE9ITE7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlL3RoaXMubnVtQ29tcHMqKDMrdCl8MH1zdGF0aWMgc2V0T3B0aW9ucyh7dXNlV2FzbTplLHVzZVdvcmtlckZldGNoOnQsd2FzbVVybDphfSl7aWYodCl7dGhpcy4jdj1lO3RoaXMuI0Y9YX1lbHNlIHRoaXMuI3Y9ITF9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO2lmKHRoaXMuI3YpaWYodGhpcy4jRil0cnl7dGhpcy5fbW9kdWxlPWZ1bmN0aW9uIGluaXRTeW5jKGUpe2lmKHZvaWQgMCE9PXlhKXJldHVybiB5YTt2b2lkIDAhPT1lJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZT8oe21vZHVsZTplfT1lKTpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2NvbnN0IHQ9X193YmdfZ2V0X2ltcG9ydHMoKTtlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9kdWxlfHwoZT1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGUpKTtyZXR1cm4gX193YmdfZmluYWxpemVfaW5pdChuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoZSx0KSxlKX0oe21vZHVsZTpmZXRjaFN5bmMoYCR7dGhpcy4jRn1xY21zX2JnLndhc21gKX0pO2U9ISF0aGlzLl9tb2R1bGU7UUNNUy5fbWVtb3J5PXRoaXMuX21vZHVsZS5tZW1vcnk7UUNNUy5fbWFrZUhleENvbG9yPVV0aWwubWFrZUhleENvbG9yfWNhdGNoKGUpe3dhcm4oYElDQ0Jhc2VkIGNvbG9yIHNwYWNlOiAiJHtlfSIuYCl9ZWxzZSB3YXJuKCJObyBJQ0MgY29sb3Igc3BhY2Ugc3VwcG9ydCBkdWUgdG8gbWlzc2luZyBgd2FzbVVybGAgQVBJIG9wdGlvbiIpO3JldHVybiBzaGFkb3codGhpcywiaXNVc2FibGUiLGUpfX1jbGFzcyBDbXlrSUNDQmFzZWRDUyBleHRlbmRzIEljY0NvbG9yU3BhY2V7c3RhdGljI1Q7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheShmZXRjaFN5bmMoYCR7Q215a0lDQ0Jhc2VkQ1MuI1R9Q0dBVFMwMDFDb21wYXQtdjItbWljcm8uaWNjYCkpLCJEZXZpY2VDTVlLIiw0KX1zdGF0aWMgc2V0T3B0aW9ucyh7aWNjVXJsOmV9KXt0aGlzLiNUPWV9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO0ljY0NvbG9yU3BhY2UuaXNVc2FibGUmJih0aGlzLiNUP2U9ITA6d2FybigiTm8gQ01ZSyBJQ0MgcHJvZmlsZSBzdXBwb3J0IGR1ZSB0byBtaXNzaW5nIGBpY2NVcmxgIEFQSSBvcHRpb24iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1VzYWJsZSIsZSl9fWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBpPWErZTtpPnImJihpPXIpO3RoaXMucG9zPWk7cmV0dXJuIHQuc3ViYXJyYXkoYSxpKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfWNsb25lKCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsdGhpcy5zdGFydCx0aGlzLmVuZC10aGlzLnN0YXJ0LHRoaXMuZGljdC5jbG9uZSgpKX19Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKHN0cmluZ1RvQnl0ZXMoZSkpfX1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX1jbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCk7dGhpcy5jaHVua1NpemU9dDt0aGlzLl9sb2FkZWRDaHVua3M9bmV3IFNldDt0aGlzLm51bUNodW5rcz1NYXRoLmNlaWwoZS90KTt0aGlzLm1hbmFnZXI9YTt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9LTF9Z2V0TWlzc2luZ0NodW5rcygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsYT10aGlzLm51bUNodW5rczt0PGE7Kyt0KXRoaXMuX2xvYWRlZENodW5rcy5oYXModCl8fGUucHVzaCh0KTtyZXR1cm4gZX1nZXQgbnVtQ2h1bmtzTG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5zaXplfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc31vblJlY2VpdmVEYXRhKGUsdCl7Y29uc3QgYT10aGlzLmNodW5rU2l6ZTtpZihlJWEhPT0wKXRocm93IG5ldyBFcnJvcihgQmFkIGJlZ2luIG9mZnNldDogJHtlfWApO2NvbnN0IHI9ZSt0LmJ5dGVMZW5ndGg7aWYociVhIT09MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBpPU1hdGguZmxvb3IoZS9hKSxuPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9aTtlPG47KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgYT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGE+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IHI9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBpPWE7aTxyOysraSlpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhpKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IHI9KGUrYSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLHI9dGhpcy5lbmQ7aWYoIWUpe3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxyKTtyZXR1cm4gdC5zdWJhcnJheShhLHIpfWxldCBpPWErZTtpPnImJihpPXIpO2k+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxpKTt0aGlzLnBvcz1pO3JldHVybiB0LnN1YmFycmF5KGEsaSl9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksYT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLHI9W107Zm9yKGxldCBlPXQ7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxyLnB1c2goZSk7cmV0dXJuIHJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IHI9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07ci5wb3M9ci5zdGFydD1lO3IuZW5kPWUrdHx8dGhpcy5lbmQ7ci5kaWN0PWE7cmV0dXJuIHJ9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgYT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTthLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoYS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgcj1bXSxpPTA7cmV0dXJuIG5ldyBQcm9taXNlKChlLHQpPT57Y29uc3QgcmVhZENodW5rPSh7dmFsdWU6bixkb25lOnN9KT0+e3RyeXtpZihzKXtjb25zdCB0PWFycmF5QnVmZmVyc1RvQnl0ZXMocik7cj1udWxsO2UodCk7cmV0dXJufWkrPW4uYnl0ZUxlbmd0aDthLmlzU3RyZWFtaW5nU3VwcG9ydGVkJiZ0aGlzLm9uUHJvZ3Jlc3Moe2xvYWRlZDppfSk7ci5wdXNoKG4pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTthLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pLnRoZW4odD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pfXJlcXVlc3RBbGxDaHVua3MoZT0hMSl7aWYoIWUpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucHJvbWlzZX1fcmVxdWVzdENodW5rcyhlKXtjb25zdCB0PXRoaXMuY3VyclJlcXVlc3RJZCsrLGE9bmV3IFNldDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Quc2V0KHQsYSk7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8YS5hZGQodCk7aWYoMD09PWEuc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3Qgcj1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQodCxyKTtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIGEpe2xldCBhPXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYoIWEpe2E9W107dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNldChlLGEpO2kucHVzaChlKX1hLnB1c2godCl9aWYoaS5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLmdyb3VwQ2h1bmtzKGkpO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5iZWdpbkNodW5rKnRoaXMuY2h1bmtTaXplLGE9TWF0aC5taW4odC5lbmRDaHVuayp0aGlzLmNodW5rU2l6ZSx0aGlzLmxlbmd0aCk7dGhpcy5zZW5kUmVxdWVzdChlLGEpLmNhdGNoKHIucmVqZWN0KX19cmV0dXJuIHIucHJvbWlzZS5jYXRjaChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLGk9W107Zm9yKGxldCBlPWE7ZTxyOysrZSlpLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3MoaSl9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChlLHQpPT5lLXQpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGE9LTEscj0tMTtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjsrK2kpe2NvbnN0IG49ZVtpXTthPDAmJihhPW4pO2lmKHI+PTAmJnIrMSE9PW4pe3QucHVzaCh7YmVnaW5DaHVuazphLGVuZENodW5rOnIrMX0pO2E9bn1pKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6bisxfSk7cj1ufXJldHVybiB0fW9uUHJvZ3Jlc3MoZSl7dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZStlLmxvYWRlZCx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uUmVjZWl2ZURhdGEoZSl7Y29uc3QgdD1lLmNodW5rLGE9dm9pZCAwPT09ZS5iZWdpbixyPWE/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixpPXIrdC5ieXRlTGVuZ3RoLG49TWF0aC5mbG9vcihyL3RoaXMuY2h1bmtTaXplKSxzPWk8dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihpL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwoaS90aGlzLmNodW5rU2l6ZSk7aWYoYSl7dGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPWl9ZWxzZSB0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKHIsdCk7dGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPW47ZTxzOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KGEpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKTt0LnNpemU+MHx8by5wdXNoKGEpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsocyk7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMDt0aGlzLnBkZk5ldHdvcmtTdHJlYW0/LmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX1mdW5jdGlvbiBjb252ZXJ0VG9SR0JBKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2UgRjpyZXR1cm4gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSk7Y2FzZSBUOnJldHVybiBmdW5jdGlvbiBjb252ZXJ0UkdCVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOnI9MCx3aWR0aDppLGhlaWdodDpufSl7bGV0IHM9MDtjb25zdCBvPWkqbiozLGM9bz4+MixsPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlcix0LGMpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtmb3IoO3M8Yy0yO3MrPTMscis9NCl7Y29uc3QgZT1sW3NdLHQ9bFtzKzFdLGk9bFtzKzJdO2Fbcl09NDI3ODE5MDA4MHxlO2FbcisxXT1lPj4+MjR8dDw8OHw0Mjc4MTkwMDgwO2FbcisyXT10Pj4+MTZ8aTw8MTZ8NDI3ODE5MDA4MDthW3IrM109aT4+Pjh8NDI3ODE5MDA4MH1mb3IobGV0IGk9NCpzLG49dCtvO2k8bjtpKz0zKWFbcisrXT1lW2ldfGVbaSsxXTw8OHxlW2krMl08PDE2fDQyNzgxOTAwODB9ZWxzZXtmb3IoO3M8Yy0yO3MrPTMscis9NCl7Y29uc3QgZT1sW3NdLHQ9bFtzKzFdLGk9bFtzKzJdO2Fbcl09MjU1fGU7YVtyKzFdPWU8PDI0fHQ+Pj44fDI1NTthW3IrMl09dDw8MTZ8aT4+PjE2fDI1NTthW3IrM109aTw8OHwyNTV9Zm9yKGxldCBpPTQqcyxuPXQrbztpPG47aSs9MylhW3IrK109ZVtpXTw8MjR8ZVtpKzFdPDwxNnxlW2krMl08PDh8MjU1fXJldHVybntzcmNQb3M6dCtvLGRlc3RQb3M6cn19KGUpfXJldHVybiBudWxsfWZ1bmN0aW9uIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSx3aWR0aDpyLGhlaWdodDppLG5vbkJsYWNrQ29sb3I6bj00Mjk0OTY3Mjk1LGludmVyc2VEZWNvZGU6cz0hMX0pe2NvbnN0IG89RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsbF09cz9bbixvXTpbbyxuXSxoPXI+PjMsdT03JnIsZD1lLmxlbmd0aDthPW5ldyBVaW50MzJBcnJheShhLmJ1ZmZlcik7bGV0IGY9MDtmb3IobGV0IHI9MDtyPGk7cisrKXtmb3IoY29uc3Qgcj10K2g7dDxyO3QrKyl7Y29uc3Qgcj10PGQ/ZVt0XToyNTU7YVtmKytdPTEyOCZyP2w6YzthW2YrK109NjQmcj9sOmM7YVtmKytdPTMyJnI/bDpjO2FbZisrXT0xNiZyP2w6YzthW2YrK109OCZyP2w6YzthW2YrK109NCZyP2w6YzthW2YrK109MiZyP2w6YzthW2YrK109MSZyP2w6Y31pZigwPT09dSljb250aW51ZTtjb25zdCByPXQ8ZD9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8dTtlKyspYVtmKytdPXImMTw8Ny1lP2w6Y31yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpmfX1jbGFzcyBJbWFnZVJlc2l6ZXJ7c3RhdGljI089MjA0ODtzdGF0aWMjRD1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2ltZ0RhdGE9ZTt0aGlzLl9pc01hc2s9dH1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNEP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2JtcCIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy4jTyYmdDw9dGhpcy4jTylyZXR1cm4hMTtjb25zdHtNQVhfRElNOmF9PXRoaXM7aWYoZT5hfHx0PmEpcmV0dXJuITA7Y29uc3Qgcj1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gcj50aGlzLk1BWF9BUkVBO2lmKHI8dGhpcy4jTyoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLiNPPU1hdGgubWF4KHRoaXMuI08sTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuI089dGhpcy5fZ3Vlc3NNYXgodGhpcy4jTyxhLDEyOCwwKTtyZXR1cm4gcj4odGhpcy5NQVhfQVJFQT10aGlzLiNPKioyKX1zdGF0aWMgZ2V0UmVkdWNlUG93ZXJGb3JKUFgoZSx0LGEpe2NvbnN0IHI9ZSp0LGk9MioqMzAvKDQqYSk7aWYoIXRoaXMubmVlZHNUb0JlUmVzaXplZChlLHQpKXJldHVybiByPmk/TWF0aC5jZWlsKE1hdGgubG9nMihyL2kpKTowO2NvbnN0e01BWF9ESU06bixNQVhfQVJFQTpzfT10aGlzLG89TWF0aC5tYXgoZS9uLHQvbixNYXRoLnNxcnQoci9NYXRoLm1pbihpLHMpKSk7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZzIobykpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNPLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jRD10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgYT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCkscj1hLmdldENvbnRleHQoIjJkIik7ci5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCBpPXIuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107YS53aWR0aD1hLmhlaWdodD0xO3JldHVybiAwIT09aX1jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsYSxyKXtmb3IoO2UrYSsxPHQ7KXtjb25zdCBhPU1hdGguZmxvb3IoKGUrdCkvMiksaT1yfHxhO3RoaXMuX2FyZUdvb2REaW1zKGEsaSk/ZT1hOnQ9YX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0OmF9PWU7aWYodCphKjQ+ZGEpe2NvbnN0IGU9dGhpcy4jTSgpO2lmKGUpcmV0dXJuIGV9Y29uc3Qgcj10aGlzLl9lbmNvZGVCTVAoKTtsZXQgaSxuO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe2k9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTpyLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOltyLmJ1ZmZlcl19KTtuPWkuZGVjb2RlKCkuY2F0Y2goZT0+e3dhcm4oYEJNUCBpbWFnZSBkZWNvZGluZyBmYWlsZWQ6ICR7ZX1gKTtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW3RoaXMuX2VuY29kZUJNUCgpLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSl9KS5maW5hbGx5KCgpPT57aS5jbG9zZSgpfSl9ZWxzZSBuPWNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtyLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSk7Y29uc3R7TUFYX0FSRUE6cyxNQVhfRElNOm99PUltYWdlUmVzaXplcixjPU1hdGgubWF4KHQvbyxhL28sTWF0aC5zcXJ0KHQqYS9zKSksbD1NYXRoLm1heChjLDIpLGg9TWF0aC5yb3VuZCgxMCooYysxLjI1KSkvMTAvbCx1PU1hdGguZmxvb3IoTWF0aC5sb2cyKGgpKSxkPW5ldyBBcnJheSh1KzIpLmZpbGwoMik7ZFswXT1sO2Quc3BsaWNlKC0xLDEsaC8oMTw8dSkpO2xldCBmPXQsZz1hO2NvbnN0IHA9YXdhaXQgbjtsZXQgbT1wLmltYWdlfHxwO2Zvcihjb25zdCBlIG9mIGQpe2NvbnN0IHQ9ZixhPWc7Zj1NYXRoLmZsb29yKGYvZSktMTtnPU1hdGguZmxvb3IoZy9lKS0xO2NvbnN0IHI9bmV3IE9mZnNjcmVlbkNhbnZhcyhmLGcpO3IuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UobSwwLDAsdCxhLDAsMCxmLGcpO20uY2xvc2UoKTttPXIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9ZS5kYXRhPW51bGw7ZS5iaXRtYXA9bTtlLndpZHRoPWY7ZS5oZWlnaHQ9ZztyZXR1cm4gZX0jTSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse2RhdGE6dCx3aWR0aDphLGhlaWdodDpyLGtpbmQ6aX09ZSxuPWEqcio0LHM9TWF0aC5jZWlsKE1hdGgubG9nMihuL2RhKSksbz1hPj5zLGM9cj4+cztsZXQgbCxoPXI7dHJ5e2w9bmV3IFVpbnQ4QXJyYXkobil9Y2F0Y2h7bGV0IGU9TWF0aC5mbG9vcihNYXRoLmxvZzIobisxKSk7Zm9yKDs7KXRyeXtsPW5ldyBVaW50OEFycmF5KDIqKmUtMSk7YnJlYWt9Y2F0Y2h7ZS09MX1oPU1hdGguZmxvb3IoKDIqKmUtMSkvKDQqYSkpO2NvbnN0IHQ9YSpoKjQ7dDxsLmxlbmd0aCYmKGw9bmV3IFVpbnQ4QXJyYXkodCkpfWNvbnN0IHU9bmV3IFVpbnQzMkFycmF5KGwuYnVmZmVyKSxkPW5ldyBVaW50MzJBcnJheShvKmMpO2xldCBmPTAsZz0wO2NvbnN0IHA9TWF0aC5jZWlsKHIvaCksbT1yJWg9PT0wP3I6ciVoO2ZvcihsZXQgZT0wO2U8cDtlKyspe2NvbnN0IHI9ZTxwLTE/aDptOyh7c3JjUG9zOmZ9PWNvbnZlcnRUb1JHQkEoe2tpbmQ6aSxzcmM6dCxkZXN0OnUsd2lkdGg6YSxoZWlnaHQ6cixpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6Zn0pKTtmb3IobGV0IGU9MCx0PXI+PnM7ZTx0O2UrKyl7Y29uc3QgdD11LnN1YmFycmF5KChlPDxzKSphKTtmb3IobGV0IGU9MDtlPG87ZSsrKWRbZysrXT10W2U8PHNdfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGMpKXtlLmRhdGE9ZDtlLndpZHRoPW87ZS5oZWlnaHQ9YztlLmtpbmQ9TztyZXR1cm4gbnVsbH1jb25zdCBiPW5ldyBPZmZzY3JlZW5DYW52YXMobyxjKTtiLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGQuYnVmZmVyKSxvLGMpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Yi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9YztyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOmF9PXRoaXMuX2ltZ0RhdGE7bGV0IHIsaT10aGlzLl9pbWdEYXRhLmRhdGEsbj1uZXcgVWludDhBcnJheSgwKSxzPW4sbz0wO3N3aXRjaChhKXtjYXNlIEY6e3I9MTtuPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGE9ZSs3Pj4zLHM9YSszJi00O2lmKGEhPT1zKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHMqdCk7bGV0IHI9MDtmb3IobGV0IG49MCxvPXQqYTtuPG87bis9YSxyKz1zKWUuc2V0KGkuc3ViYXJyYXkobixuK2EpLHIpO2k9ZX1icmVha31jYXNlIFQ6cj0yNDtpZigzJmUpe2NvbnN0IGE9MyplLHI9YSszJi00LG49ci1hLHM9bmV3IFVpbnQ4QXJyYXkocip0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLHI9dCphO2U8cjtlKz1hKXtjb25zdCB0PWkuc3ViYXJyYXkoZSxlK2EpO2ZvcihsZXQgZT0wO2U8YTtlKz0zKXtzW28rK109dFtlKzJdO3NbbysrXT10W2UrMV07c1tvKytdPXRbZV19bys9bn1pPXN9ZWxzZSBmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PWlbZV07aVtlXT1pW2UrMl07aVtlKzJdPXR9YnJlYWs7Y2FzZSBPOnI9MzI7bz0zO3M9bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGE9bmV3IERhdGFWaWV3KHMuYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7YS5zZXRVaW50MzIoMCwyNTUsITApO2Euc2V0VWludDMyKDQsNjUyODAsITApO2Euc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2Euc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7YS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTthLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTthLnNldFVpbnQzMig4LDY1MjgwLCEwKTthLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBjPTA7Y29uc3QgbD00MCtzLmxlbmd0aCxoPTE0K2wrbi5sZW5ndGgraS5sZW5ndGgsdT1uZXcgVWludDhBcnJheShoKSxkPW5ldyBEYXRhVmlldyh1LmJ1ZmZlcik7ZC5zZXRVaW50MTYoYywxOTc3OCwhMCk7Yys9MjtkLnNldFVpbnQzMihjLGgsITApO2MrPTQ7ZC5zZXRVaW50MzIoYywwLCEwKTtjKz00O2Quc2V0VWludDMyKGMsMTQrbCtuLmxlbmd0aCwhMCk7Yys9NDtkLnNldFVpbnQzMihjLGwsITApO2MrPTQ7ZC5zZXRJbnQzMihjLGUsITApO2MrPTQ7ZC5zZXRJbnQzMihjLC10LCEwKTtjKz00O2Quc2V0VWludDE2KGMsMSwhMCk7Yys9MjtkLnNldFVpbnQxNihjLHIsITApO2MrPTI7ZC5zZXRVaW50MzIoYyxvLCEwKTtjKz00O2Quc2V0VWludDMyKGMsMCwhMCk7Yys9NDtkLnNldEludDMyKGMsMCwhMCk7Yys9NDtkLnNldEludDMyKGMsMCwhMCk7Yys9NDtkLnNldFVpbnQzMihjLG4ubGVuZ3RoLzQsITApO2MrPTQ7ZC5zZXRVaW50MzIoYywwLCEwKTtjKz00O3Uuc2V0KHMsYyk7Yys9cy5sZW5ndGg7dS5zZXQobixjKTtjKz1uLmxlbmd0aDt1LnNldChpLGMpO3JldHVybiB1fX1jb25zdCBDYT1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPUNhO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUsdD1udWxsKXtjb25zdCBhPXRoaXMucG9zO2xldCByO2lmKGUpe3RoaXMuZW5zdXJlQnVmZmVyKGErZSk7cj1hK2U7Zm9yKDshdGhpcy5lb2YmJnRoaXMuYnVmZmVyTGVuZ3RoPHI7KXRoaXMucmVhZEJsb2NrKHQpO2NvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7cj5pJiYocj1pKX1lbHNle2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jayh0KTtyPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPXI7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KGEscil9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7aWYoIXRoaXMuY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIpcmV0dXJuIHRoaXMuaXNBc3luY0RlY29kZXI/dGhpcy5kZWNvZGVJbWFnZShudWxsLHQpOnRoaXMuZ2V0Qnl0ZXMoZSx0KTtjb25zdCBhPWF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gdGhpcy5kZWNvZGVJbWFnZShhLHQpfXJlc2V0KCl7dGhpcy5wb3M9MH1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpe2lmKHZvaWQgMD09PXQpZm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7ZWxzZXtjb25zdCBhPWUrdDtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1hJiYhdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCl9cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsZSx0LGEpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyZWFtP3RoaXMuc3RyZWFtLmdldEJhc2VTdHJlYW1zKCk6bnVsbH1jbG9uZSgpe2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLHRoaXMuc3RhcnQsdGhpcy5lbmQtdGhpcy5zdGFydCx0aGlzLmRpY3QuY2xvbmUoKSl9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7ZT1lLmZpbHRlcihlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbSk7bGV0IGE9MDtmb3IoY29uc3QgdCBvZiBlKWErPXQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0/dC5fcmF3TWluQnVmZmVyTGVuZ3RoOnQubGVuZ3RoO3N1cGVyKGEpO3RoaXMuc3RyZWFtcz1lO3RoaXMuX29uRXJyb3I9dH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtcztpZigwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUuc2hpZnQoKTtsZXQgYTt0cnl7YT10LmdldEJ5dGVzKCl9Y2F0Y2goZSl7aWYodGhpcy5fb25FcnJvcil7dGhpcy5fb25FcnJvcihlLHQuZGljdD8ub2JqSWQpO3JldHVybn10aHJvdyBlfWNvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgsaT1yK2EubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGkpLnNldChhLHIpO3RoaXMuYnVmZmVyTGVuZ3RoPWl9Z2V0QmFzZVN0cmVhbXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuc3RyZWFtcyl7Y29uc3QgYT10LmdldEJhc2VTdHJlYW1zKCk7YSYmZS5wdXNoKC4uLmEpfXJldHVybiBlLmxlbmd0aD4wP2U6bnVsbH19Y2xhc3MgQ29sb3JTcGFjZVV0aWxze3N0YXRpYyBwYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpuLGFzeW5jSWZOb3RDYWNoZWQ6cz0hMX0pe2NvbnN0IG89e3hyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufTtsZXQgYyxsLGg7aWYoZSBpbnN0YW5jZW9mIFJlZil7bD1lO2NvbnN0IGE9aS5nZXRCeVJlZihsKXx8bi5nZXRCeVJlZihsKTtpZihhKXJldHVybiBhO2U9dC5mZXRjaChlKX1pZihlIGluc3RhbmNlb2YgTmFtZSl7Yz1lLm5hbWU7Y29uc3QgdD1uLmdldEJ5TmFtZShjKTtpZih0KXJldHVybiB0fXRyeXtoPXRoaXMuI1IoZSxvKX1jYXRjaChlKXtpZihzJiYhKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO3Rocm93IGV9aWYoY3x8bCl7bi5zZXQoYyxsLGgpO2wmJmkuc2V0KG51bGwsbCxoKX1yZXR1cm4gcz9Qcm9taXNlLnJlc29sdmUoaCk6aH1zdGF0aWMjQihlLHQpe2NvbnN0e2dsb2JhbENvbG9yU3BhY2VDYWNoZTphfT10O2xldCByO2lmKGUgaW5zdGFuY2VvZiBSZWYpe3I9ZTtjb25zdCB0PWEuZ2V0QnlSZWYocik7aWYodClyZXR1cm4gdH1jb25zdCBpPXRoaXMuI1IoZSx0KTtyJiZhLnNldChudWxsLHIsaSk7cmV0dXJuIGl9c3RhdGljI1IoZSx0KXtjb25zdHt4cmVmOmEscmVzb3VyY2VzOnIscGRmRnVuY3Rpb25GYWN0b3J5OmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm59PXQ7aWYoKGU9YS5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnJnYjtjYXNlIkRldmljZVJHQkEiOnJldHVybiB0aGlzLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IFBhdHRlcm5DUyhudWxsKTtkZWZhdWx0OmlmKHIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPXIuZ2V0KCJDb2xvclNwYWNlIik7aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9YS5nZXQoZS5uYW1lKTtpZihyKXtpZihyIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gdGhpcy4jUihyLHQpO2U9cjticmVha319fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlOiAke2UubmFtZX1gKTtyZXR1cm4gdGhpcy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9YS5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbyxjLGwsaCx1O3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuY215aztjYXNlIkNhbEdyYXkiOnM9YS5mZXRjaElmUmVmKGVbMV0pO2w9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2g9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO3U9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MobCxoLHUpO2Nhc2UiQ2FsUkdCIjpzPWEuZmV0Y2hJZlJlZihlWzFdKTtsPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtoPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTt1PXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgZD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGwsaCx1LGQpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IGY9ZVsxXWluc3RhbmNlb2YgUmVmO2lmKGYpe2NvbnN0IHQ9bi5nZXRCeVJlZihlWzFdKTtpZih0KXJldHVybiB0fWNvbnN0IGc9YS5mZXRjaElmUmVmKGVbMV0pLHA9Zy5kaWN0O289cC5nZXQoIk4iKTtpZihJY2NDb2xvclNwYWNlLmlzVXNhYmxlKXRyeXtjb25zdCB0PW5ldyBJY2NDb2xvclNwYWNlKGcuZ2V0Qnl0ZXMoKSwiSUNDQmFzZWQiLG8pO2YmJm4uc2V0KG51bGwsZVsxXSx0KTtyZXR1cm4gdH1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgdDt3YXJuKGBJQ0NCYXNlZCBjb2xvciBzcGFjZSAoJHtlWzFdfSk6ICIke3R9Ii5gKX1jb25zdCBtPXAuZ2V0UmF3KCJBbHRlcm5hdGUiKTtpZihtKXtjb25zdCBlPXRoaXMuI0IobSx0KTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTt3YXJuKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuZ3JheTtpZigzPT09bylyZXR1cm4gdGhpcy5yZ2I7aWYoND09PW8pcmV0dXJuIHRoaXMuY215azticmVhaztjYXNlIlBhdHRlcm4iOmM9ZVsxXXx8bnVsbDtjJiYoYz10aGlzLiNCKGMsdCkpO3JldHVybiBuZXcgUGF0dGVybkNTKGMpO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpjPXRoaXMuI0IoZVsxXSx0KTtjb25zdCBiPU1hdGhDbGFtcChhLmZldGNoSWZSZWYoZVsyXSksMCwyNTUpLHk9YS5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKGMsYix5KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3Qgdz1hLmZldGNoSWZSZWYoZVsxXSk7bz1BcnJheS5pc0FycmF5KHcpP3cubGVuZ3RoOjE7Yz10aGlzLiNCKGVbMl0sdCk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sYyx4KTtjYXNlIkxhYiI6cz1hLmZldGNoSWZSZWYoZVsxXSk7bD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7aD1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3QgUz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgTGFiQ1MobCxoLFMpO2RlZmF1bHQ6d2FybihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtyfWApO3JldHVybiB0aGlzLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLmdyYXl9c3RhdGljIGdldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX1zdGF0aWMgZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfXN0YXRpYyBnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9c3RhdGljIGdldCBjbXlrKCl7aWYoQ215a0lDQ0Jhc2VkQ1MuaXNVc2FibGUpdHJ5e3JldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IENteWtJQ0NCYXNlZENTKX1jYXRjaHt3YXJuKCJDTVlLIGZhbGxiYWNrOiBEZXZpY2VDTVlLIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19Y2xhc3MgSnBlZ0Vycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnBlZ0Vycm9yIil9fWNsYXNzIEROTE1hcmtlckVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJETkxNYXJrZXJFcnJvciIpO3RoaXMuc2NhbkxpbmVzPXR9fWNsYXNzIEVPSU1hcmtlckVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgdmE9bmV3IFVpbnQ4QXJyYXkoWzAsMSw4LDE2LDksMiwzLDEwLDE3LDI0LDMyLDI1LDE4LDExLDQsNSwxMiwxOSwyNiwzMyw0MCw0OCw0MSwzNCwyNywyMCwxMyw2LDcsMTQsMjEsMjgsMzUsNDIsNDksNTYsNTcsNTAsNDMsMzYsMjksMjIsMTUsMjMsMzAsMzcsNDQsNTEsNTgsNTksNTIsNDUsMzgsMzEsMzksNDYsNTMsNjAsNjEsNTQsNDcsNTUsNjIsNjNdKSxGYT00MDE3LElhPTc5OSxUYT0zNDA2LE9hPTIyNzYsRGE9MTU2NyxNYT0zNzg0LFJhPTU3OTMsQmE9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsaT0wLG49MTY7Zm9yKDtuPjAmJiFlW24tMV07KW4tLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8bjthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtpXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31pKyt9aWYoYSsxPG4pe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscixpLG4scyxvLGMsbD0hMSl7Y29uc3QgaD1hLm1jdXNQZXJMaW5lLHU9YS5wcm9ncmVzc2l2ZSxkPXQ7bGV0IGY9MCxnPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGc+MCl7Zy0tO3JldHVybiBmPj5nJjF9Zj1lW3QrK107aWYoMjU1PT09Zil7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmbCl7Y29uc3Qgcj1yZWFkVWludDE2KGUsdCs9Mik7dCs9MjtpZihyPjAmJnIhPT1hLnNjYW5MaW5lcyl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEROTCBtYXJrZXIgKDB4RkZEQykgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiLHIpfWVsc2UgaWYoMjE3PT09cil7aWYobCl7Y29uc3QgZT15Kig4PT09YS5wcmVjaXNpb24/ODowKTtpZihlPjAmJk1hdGgucm91bmQoYS5zY2FuTGluZXMvZSk+PTUpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhLCBwb3NzaWJseSBjYXVzZWQgYnkgaW5jb3JyZWN0IGBzY2FuTGluZXNgIHBhcmFtZXRlciIsZSl9dGhyb3cgbmV3IEVPSU1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIil9dGhyb3cgbmV3IEpwZWdFcnJvcihgdW5leHBlY3RlZCBtYXJrZXIgJHsoZjw8OHxyKS50b1N0cmluZygxNil9YCl9fWc9NztyZXR1cm4gZj4+Pjd9ZnVuY3Rpb24gZGVjb2RlSHVmZm1hbihlKXtsZXQgdD1lO2Zvcig7Oyl7dD10W3JlYWRCaXQoKV07c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51bWJlciI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOmNvbnRpbnVlfXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgaHVmZm1hbiBzZXF1ZW5jZSIpfX1mdW5jdGlvbiByZWNlaXZlKGUpe2xldCB0PTA7Zm9yKDtlPjA7KXt0PXQ8PDF8cmVhZEJpdCgpO2UtLX1yZXR1cm4gdH1mdW5jdGlvbiByZWNlaXZlQW5kRXh0ZW5kKGUpe2lmKDE9PT1lKXJldHVybiAxPT09cmVhZEJpdCgpPzE6LTE7Y29uc3QgdD1yZWNlaXZlKGUpO3JldHVybiB0Pj0xPDxlLTE/dDp0KygtMTw8ZSkrMX1sZXQgcD0wO2xldCBtLGI9MDtsZXQgeT0wO2Z1bmN0aW9uIGRlY29kZU1jdShlLHQsYSxyLGkpe2NvbnN0IG49YSVoO3k9KGEvaHwwKSplLnYrcjtjb25zdCBzPW4qZS5oK2k7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseSxzKSl9ZnVuY3Rpb24gZGVjb2RlQmxvY2soZSx0LGEpe3k9YS9lLmJsb2Nrc1BlckxpbmV8MDtjb25zdCByPWElZS5ibG9ja3NQZXJMaW5lO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHkscikpfWNvbnN0IHc9ci5sZW5ndGg7bGV0IHgsUyxrLEMsdixGO0Y9dT8wPT09bj8wPT09bz9mdW5jdGlvbiBkZWNvZGVEQ0ZpcnN0KGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpPDxjO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cn06ZnVuY3Rpb24gZGVjb2RlRENTdWNjZXNzaXZlKGUsdCl7ZS5ibG9ja0RhdGFbdF18PXJlYWRCaXQoKTw8Y306MD09PW8/ZnVuY3Rpb24gZGVjb2RlQUNGaXJzdChlLHQpe2lmKHA+MCl7cC0tO3JldHVybn1sZXQgYT1uO2NvbnN0IHI9cztmb3IoO2E8PXI7KXtjb25zdCByPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksaT0xNSZyLG49cj4+NDtpZigwPT09aSl7aWYobjwxNSl7cD1yZWNlaXZlKG4pKygxPDxuKS0xO2JyZWFrfWErPTE2O2NvbnRpbnVlfWErPW47Y29uc3Qgcz12YVthXTtlLmJsb2NrRGF0YVt0K3NdPXJlY2VpdmVBbmRFeHRlbmQoaSkqKDE8PGMpO2ErK319OmZ1bmN0aW9uIGRlY29kZUFDU3VjY2Vzc2l2ZShlLHQpe2xldCBhPW47Y29uc3Qgcj1zO2xldCBpLG8sbD0wO2Zvcig7YTw9cjspe2NvbnN0IHI9dCt2YVthXSxuPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goYil7Y2FzZSAwOm89ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtpPTE1Jm87bD1vPj40O2lmKDA9PT1pKWlmKGw8MTUpe3A9cmVjZWl2ZShsKSsoMTw8bCk7Yj00fWVsc2V7bD0xNjtiPTF9ZWxzZXtpZigxIT09aSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO209cmVjZWl2ZUFuZEV4dGVuZChpKTtiPWw/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPW4qKHJlYWRCaXQoKTw8Yyk7ZWxzZXtsLS07MD09PWwmJihiPTI9PT1iPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1uKihyZWFkQml0KCk8PGMpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09bTw8YztiPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPW4qKHJlYWRCaXQoKTw8YykpfWErK31pZig0PT09Yil7cC0tOzA9PT1wJiYoYj0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgaT0xO2Zvcig7aTw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEsbj1hPj40O2lmKDA9PT1yKXtpZihuPDE1KWJyZWFrO2krPTE2O2NvbnRpbnVlfWkrPW47Y29uc3Qgcz12YVtpXTtlLmJsb2NrRGF0YVt0K3NdPXJlY2VpdmVBbmRFeHRlbmQocik7aSsrfX07bGV0IFQsTz0wO2NvbnN0IEQ9MT09PXc/clswXS5ibG9ja3NQZXJMaW5lKnJbMF0uYmxvY2tzUGVyQ29sdW1uOmgqYS5tY3VzUGVyQ29sdW1uO2xldCBNLFI7Zm9yKDtPPD1EOyl7Y29uc3QgYT1pP01hdGgubWluKEQtTyxpKTpEO2lmKGE+MCl7Zm9yKFM9MDtTPHc7UysrKXJbU10ucHJlZD0wO3A9MDtpZigxPT09dyl7eD1yWzBdO2Zvcih2PTA7djxhO3YrKyl7ZGVjb2RlQmxvY2soeCxGLE8pO08rK319ZWxzZSBmb3Iodj0wO3Y8YTt2Kyspe2ZvcihTPTA7Uzx3O1MrKyl7eD1yW1NdO009eC5oO1I9eC52O2ZvcihrPTA7azxSO2srKylmb3IoQz0wO0M8TTtDKyspZGVjb2RlTWN1KHgsRixPLGssQyl9TysrfX1nPTA7VD1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighVClicmVhaztpZihULmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke2E+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtULmludmFsaWR9YCk7dD1ULm9mZnNldH1pZighKFQubWFya2VyPj02NTQ4OCYmVC5tYXJrZXI8PTY1NDk1KSlicmVhazt0Kz0yfXJldHVybiB0LWR9ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCByPWUucXVhbnRpemF0aW9uVGFibGUsaT1lLmJsb2NrRGF0YTtsZXQgbixzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5LHcseCxTO2lmKCFyKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7Zj1pW3QrZV07Zz1pW3QrZSsxXTtwPWlbdCtlKzJdO209aVt0K2UrM107Yj1pW3QrZSs0XTt5PWlbdCtlKzVdO3c9aVt0K2UrNl07eD1pW3QrZSs3XTtmKj1yW2VdO2lmKDAhPT0oZ3xwfG18Ynx5fHd8eCkpe2cqPXJbZSsxXTtwKj1yW2UrMl07bSo9cltlKzNdO2IqPXJbZSs0XTt5Kj1yW2UrNV07dyo9cltlKzZdO3gqPXJbZSs3XTtuPVJhKmYrMTI4Pj44O3M9UmEqYisxMjg+Pjg7bz1wO2M9dztsPUJhKihnLXgpKzEyOD4+ODtkPUJhKihnK3gpKzEyOD4+ODtoPW08PDQ7dT15PDw0O249bitzKzE+PjE7cz1uLXM7Uz1vKk1hK2MqRGErMTI4Pj44O289bypEYS1jKk1hKzEyOD4+ODtjPVM7bD1sK3UrMT4+MTt1PWwtdTtkPWQraCsxPj4xO2g9ZC1oO249bitjKzE+PjE7Yz1uLWM7cz1zK28rMT4+MTtvPXMtbztTPWwqT2ErZCpUYSsyMDQ4Pj4xMjtsPWwqVGEtZCpPYSsyMDQ4Pj4xMjtkPVM7Uz1oKklhK3UqRmErMjA0OD4+MTI7aD1oKkZhLXUqSWErMjA0OD4+MTI7dT1TO2FbZV09bitkO2FbZSs3XT1uLWQ7YVtlKzFdPXMrdTthW2UrNl09cy11O2FbZSsyXT1vK2g7YVtlKzVdPW8taDthW2UrM109YytsO2FbZSs0XT1jLWx9ZWxzZXtTPVJhKmYrNTEyPj4xMDthW2VdPVM7YVtlKzFdPVM7YVtlKzJdPVM7YVtlKzNdPVM7YVtlKzRdPVM7YVtlKzVdPVM7YVtlKzZdPVM7YVtlKzddPVN9fWZvcihsZXQgZT0wO2U8ODsrK2Upe2Y9YVtlXTtnPWFbZSs4XTtwPWFbZSsxNl07bT1hW2UrMjRdO2I9YVtlKzMyXTt5PWFbZSs0MF07dz1hW2UrNDhdO3g9YVtlKzU2XTtpZigwIT09KGd8cHxtfGJ8eXx3fHgpKXtuPVJhKmYrMjA0OD4+MTI7cz1SYSpiKzIwNDg+PjEyO289cDtjPXc7bD1CYSooZy14KSsyMDQ4Pj4xMjtkPUJhKihnK3gpKzIwNDg+PjEyO2g9bTt1PXk7bj00MTEyKyhuK3MrMT4+MSk7cz1uLXM7Uz1vKk1hK2MqRGErMjA0OD4+MTI7bz1vKkRhLWMqTWErMjA0OD4+MTI7Yz1TO2w9bCt1KzE+PjE7dT1sLXU7ZD1kK2grMT4+MTtoPWQtaDtuPW4rYysxPj4xO2M9bi1jO3M9cytvKzE+PjE7bz1zLW87Uz1sKk9hK2QqVGErMjA0OD4+MTI7bD1sKlRhLWQqT2ErMjA0OD4+MTI7ZD1TO1M9aCpJYSt1KkZhKzIwNDg+PjEyO2g9aCpGYS11KklhKzIwNDg+PjEyO3U9UztmPW4rZDt4PW4tZDtnPXMrdTt3PXMtdTtwPW8raDt5PW8taDttPWMrbDtiPWMtbDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O2c8MTY/Zz0wOmc+PTQwODA/Zz0yNTU6Zz4+PTQ7cDwxNj9wPTA6cD49NDA4MD9wPTI1NTpwPj49NDttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O2I8MTY/Yj0wOmI+PTQwODA/Yj0yNTU6Yj4+PTQ7eTwxNj95PTA6eT49NDA4MD95PTI1NTp5Pj49NDt3PDE2P3c9MDp3Pj00MDgwP3c9MjU1Onc+Pj00O3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7aVt0K2VdPWY7aVt0K2UrOF09ZztpW3QrZSsxNl09cDtpW3QrZSsyNF09bTtpW3QrZSszMl09YjtpW3QrZSs0MF09eTtpW3QrZSs0OF09dztpW3QrZSs1Nl09eH1lbHNle1M9UmEqZis4MTkyPj4xNDtTPVM8LTIwNDA/MDpTPj0yMDI0PzI1NTpTKzIwNTY+PjQ7aVt0K2VdPVM7aVt0K2UrOF09UztpW3QrZSsxNl09UztpW3QrZSsyNF09UztpW3QrZSszMl09UztpW3QrZSs0MF09UztpW3QrZSs0OF09UztpW3QrZSs1Nl09U319fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLHI9dC5ibG9ja3NQZXJDb2x1bW4saT1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHI9MDtyPGE7cisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsciksaSl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsYT10KXtjb25zdCByPWUubGVuZ3RoLTE7bGV0IGk9YTx0P2E6dDtpZih0Pj1yKXJldHVybiBudWxsO2NvbnN0IG49cmVhZFVpbnQxNihlLHQpO2lmKG4+PTY1NDcyJiZuPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpuLG9mZnNldDp0fTtsZXQgcz1yZWFkVWludDE2KGUsaSk7Zm9yKDshKHM+PTY1NDcyJiZzPD02NTUzNCk7KXtpZigrK2k+PXIpcmV0dXJuIG51bGw7cz1yZWFkVWludDE2KGUsaSl9cmV0dXJue2ludmFsaWQ6bi50b1N0cmluZygxNiksbWFya2VyOnMsb2Zmc2V0Oml9fWZ1bmN0aW9uIHByZXBhcmVDb21wb25lbnRzKGUpe2NvbnN0IHQ9TWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOC9lLm1heEgpLGE9TWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgvZS5tYXhWKTtmb3IoY29uc3QgciBvZiBlLmNvbXBvbmVudHMpe2NvbnN0IGk9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgpKnIuaC9lLm1heEgpLG49TWF0aC5jZWlsKE1hdGguY2VpbChlLnNjYW5MaW5lcy84KSpyLnYvZS5tYXhWKSxzPXQqci5oLG89NjQqKGEqci52KSoocysxKTtyLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShvKTtyLmJsb2Nrc1BlckxpbmU9aTtyLmJsb2Nrc1BlckNvbHVtbj1ufWUubWN1c1BlckxpbmU9dDtlLm1jdXNQZXJDb2x1bW49YX1mdW5jdGlvbiByZWFkRGF0YUJsb2NrKGUsdCl7Y29uc3QgYT1yZWFkVWludDE2KGUsdCk7bGV0IHI9KHQrPTIpK2EtMjtjb25zdCBpPWZpbmROZXh0RmlsZU1hcmtlcihlLHIsdCk7aWYoaT8uaW52YWxpZCl7d2FybigicmVhZERhdGFCbG9jayAtIGluY29ycmVjdCBsZW5ndGgsIGN1cnJlbnQgbWFya2VyIGlzOiAiK2kuaW52YWxpZCk7cj1pLm9mZnNldH1jb25zdCBuPWUuc3ViYXJyYXkodCxyKTtyZXR1cm57YXBwRGF0YTpuLG9sZE9mZnNldDp0LG5ld09mZnNldDp0K24ubGVuZ3RofX1mdW5jdGlvbiBza2lwRGF0YShlLHQpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQpLHI9KHQrPTIpK2EtMixpPWZpbmROZXh0RmlsZU1hcmtlcihlLHIsdCk7cmV0dXJuIGk/LmludmFsaWQ/aS5vZmZzZXQ6cn1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9c3RhdGljIGNhblVzZUltYWdlRGVjb2RlcihlLHQ9LTEpe2xldCBhPW51bGwscj0wLGk9bnVsbCxuPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7bj1yZWFkVWludDE2KGUscik7cis9MjtlOmZvcig7NjU0OTchPT1uOyl7c3dpdGNoKG4pe2Nhc2UgNjU1MDU6Y29uc3R7YXBwRGF0YTp0LG9sZE9mZnNldDpzLG5ld09mZnNldDpvfT1yZWFkRGF0YUJsb2NrKGUscik7cj1vO2lmKDY5PT09dFswXSYmMTIwPT09dFsxXSYmMTA1PT09dFsyXSYmMTAyPT09dFszXSYmMD09PXRbNF0mJjA9PT10WzVdKXtpZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIkR1cGxpY2F0ZSBFWElGLWJsb2NrcyBmb3VuZC4iKTthPXtleGlmU3RhcnQ6cys2LGV4aWZFbmQ6b319bj1yZWFkVWludDE2KGUscik7cis9Mjtjb250aW51ZTtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppPWVbcis3XTticmVhayBlO2Nhc2UgNjU1MzU6MjU1IT09ZVtyXSYmci0tfXI9c2tpcERhdGEoZSxyKTtuPXJlYWRVaW50MTYoZSxyKTtyKz0yfXJldHVybiA0PT09aXx8Mz09PWkmJjA9PT10P251bGw6YXx8e319cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBhLHIsaT0wLG49bnVsbCxzPW51bGwsbz0wO2NvbnN0IGM9W10sbD1bXSxoPVtdO2xldCB1PXJlYWRVaW50MTYoZSxpKTtpKz0yO2lmKDY1NDk2IT09dSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7dT1yZWFkVWludDE2KGUsaSk7aSs9MjtlOmZvcig7NjU0OTchPT11Oyl7bGV0IGQsZixnO3N3aXRjaCh1KXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTpwLG5ld09mZnNldDptfT1yZWFkRGF0YUJsb2NrKGUsaSk7aT1tOzY1NTA0PT09dSYmNzQ9PT1wWzBdJiY3MD09PXBbMV0mJjczPT09cFsyXSYmNzA9PT1wWzNdJiYwPT09cFs0XSYmKG49e3ZlcnNpb246e21ham9yOnBbNV0sbWlub3I6cFs2XX0sZGVuc2l0eVVuaXRzOnBbN10seERlbnNpdHk6cFs4XTw8OHxwWzldLHlEZW5zaXR5OnBbMTBdPDw4fHBbMTFdLHRodW1iV2lkdGg6cFsxMl0sdGh1bWJIZWlnaHQ6cFsxM10sdGh1bWJEYXRhOnAuc3ViYXJyYXkoMTQsMTQrMypwWzEyXSpwWzEzXSl9KTs2NTUxOD09PXUmJjY1PT09cFswXSYmMTAwPT09cFsxXSYmMTExPT09cFsyXSYmOTg9PT1wWzNdJiYxMDE9PT1wWzRdJiYocz17dmVyc2lvbjpwWzVdPDw4fHBbNl0sZmxhZ3MwOnBbN108PDh8cFs4XSxmbGFnczE6cFs5XTw8OHxwWzEwXSx0cmFuc2Zvcm1Db2RlOnBbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBiPXJlYWRVaW50MTYoZSxpKTtpKz0yO2NvbnN0IHk9YitpLTI7bGV0IHc7Zm9yKDtpPHk7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoZj0wO2Y8NjQ7ZisrKXt3PXZhW2ZdO2Fbd109cmVhZFVpbnQxNihlLGkpO2krPTJ9fWVsc2UgZm9yKGY9MDtmPDY0O2YrKyl7dz12YVtmXTthW3ddPWVbaSsrXX1jWzE1JnRdPWF9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtpKz0yO2E9e307YS5leHRlbmRlZD02NTQ3Mz09PXU7YS5wcm9ncmVzc2l2ZT02NTQ3ND09PXU7YS5wcmVjaXNpb249ZVtpKytdO2NvbnN0IHg9cmVhZFVpbnQxNihlLGkpO2krPTI7YS5zY2FuTGluZXM9dHx8eDthLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxpKTtpKz0yO2EuY29tcG9uZW50cz1bXTthLmNvbXBvbmVudElkcz17fTtjb25zdCBTPWVbaSsrXTtsZXQgaz0wLEM9MDtmb3IoZD0wO2Q8UztkKyspe2NvbnN0IHQ9ZVtpXSxyPWVbaSsxXT4+NCxuPTE1JmVbaSsxXTtrPHImJihrPXIpO0M8biYmKEM9bik7Y29uc3Qgcz1lW2krMl07Zz1hLmNvbXBvbmVudHMucHVzaCh7aDpyLHY6bixxdWFudGl6YXRpb25JZDpzLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTthLmNvbXBvbmVudElkc1t0XT1nLTE7aSs9M31hLm1heEg9azthLm1heFY9QztwcmVwYXJlQ29tcG9uZW50cyhhKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IHY9cmVhZFVpbnQxNihlLGkpO2krPTI7Zm9yKGQ9MjtkPHY7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgcj0wO2ZvcihmPTA7ZjwxNjtmKyssaSsrKXIrPWFbZl09ZVtpXTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2ZvcihmPTA7ZjxyO2YrKyxpKyspbltmXT1lW2ldO2QrPTE3K3I7KHQ+PjQ/bDpoKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShhLG4pfWJyZWFrO2Nhc2UgNjU1MDE6aSs9MjtyPXJlYWRVaW50MTYoZSxpKTtpKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3QgRj0xPT09KytvJiYhdDtpKz0yO2NvbnN0IFQ9ZVtpKytdLE89W107Zm9yKGQ9MDtkPFQ7ZCsrKXtjb25zdCB0PWVbaSsrXSxyPWEuY29tcG9uZW50SWRzW3RdLG49YS5jb21wb25lbnRzW3JdO24uaW5kZXg9dDtjb25zdCBzPWVbaSsrXTtuLmh1ZmZtYW5UYWJsZURDPWhbcz4+NF07bi5odWZmbWFuVGFibGVBQz1sWzE1JnNdO08ucHVzaChuKX1jb25zdCBEPWVbaSsrXSxNPWVbaSsrXSxSPWVbaSsrXTt0cnl7aSs9ZGVjb2RlU2NhbihlLGksYSxPLHIsRCxNLFI+PjQsMTUmUixGKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgRE5MTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBhdHRlbXB0aW5nIHRvIHJlLXBhcnNlIHRoZSBKUEVHIGltYWdlLmApO3JldHVybiB0aGlzLnBhcnNlKGUse2RubFNjYW5MaW5lczp0LnNjYW5MaW5lc30pfWlmKHQgaW5zdGFuY2VvZiBFT0lNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGlnbm9yaW5nIHRoZSByZXN0IG9mIHRoZSBpbWFnZSBkYXRhLmApO2JyZWFrIGV9dGhyb3cgdH1icmVhaztjYXNlIDY1NTAwOmkrPTQ7YnJlYWs7Y2FzZSA2NTUzNToyNTUhPT1lW2ldJiZpLS07YnJlYWs7ZGVmYXVsdDpjb25zdCBOPWZpbmROZXh0RmlsZU1hcmtlcihlLGktMixpLTMpO2lmKE4/LmludmFsaWQpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHVuZXhwZWN0ZWQgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICIrTi5pbnZhbGlkKTtpPU4ub2Zmc2V0O2JyZWFrfWlmKCFOfHxpPj1lLmxlbmd0aC0xKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGltYWdlIGRhdGEgd2l0aG91dCBmaW5kaW5nIGFuIEVPSSBtYXJrZXIgKDB4RkZEOSkuIik7YnJlYWsgZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmtub3duIG1hcmtlcjogIit1LnRvU3RyaW5nKDE2KSl9dT1yZWFkVWludDE2KGUsaSk7aSs9Mn1pZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSBubyBmcmFtZSBkYXRhIGZvdW5kLiIpO3RoaXMud2lkdGg9YS5zYW1wbGVzUGVyTGluZTt0aGlzLmhlaWdodD1hLnNjYW5MaW5lczt0aGlzLmpmaWY9bjt0aGlzLmFkb2JlPXM7dGhpcy5jb21wb25lbnRzPVtdO2Zvcihjb25zdCBlIG9mIGEuY29tcG9uZW50cyl7Y29uc3QgdD1jW2UucXVhbnRpemF0aW9uSWRdO3QmJihlLnF1YW50aXphdGlvblRhYmxlPXQpO3RoaXMuY29tcG9uZW50cy5wdXNoKHtpbmRleDplLmluZGV4LG91dHB1dDpidWlsZENvbXBvbmVudERhdGEoMCxlKSxzY2FsZVg6ZS5oL2EubWF4SCxzY2FsZVk6ZS52L2EubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH1fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsYT0hMSl7Y29uc3Qgcj10aGlzLndpZHRoL2UsaT10aGlzLmhlaWdodC90O2xldCBuLHMsbyxjLGwsaCx1LGQsZixnLHAsbT0wO2NvbnN0IGI9dGhpcy5jb21wb25lbnRzLmxlbmd0aCx5PWUqdCpiLHc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHkpLHg9bmV3IFVpbnQzMkFycmF5KGUpLFM9NDI5NDk2NzI4ODtsZXQgaztmb3IodT0wO3U8Yjt1Kyspe249dGhpcy5jb21wb25lbnRzW3VdO3M9bi5zY2FsZVgqcjtvPW4uc2NhbGVZKmk7bT11O3A9bi5vdXRwdXQ7Yz1uLmJsb2Nrc1BlckxpbmUrMTw8MztpZihzIT09ayl7Zm9yKGw9MDtsPGU7bCsrKXtkPTB8bCpzO3hbbF09KGQmUyk8PDN8NyZkfWs9c31mb3IoaD0wO2g8dDtoKyspe2Q9MHxoKm87Zz1jKihkJlMpfCg3JmQpPDwzO2ZvcihsPTA7bDxlO2wrKyl7d1ttXT1wW2creFtsXV07bSs9Yn19fWxldCBDPXRoaXMuX2RlY29kZVRyYW5zZm9ybTthfHw0IT09Ynx8Q3x8KEM9bmV3IEludDMyQXJyYXkoWy0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1XSkpO2lmKEMpZm9yKHU9MDt1PHk7KWZvcihkPTAsZj0wO2Q8YjtkKyssdSsrLGYrPTIpd1t1XT0od1t1XSpDW2ZdPj44KStDW2YrMV07cmV0dXJuIHd9Z2V0IF9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCgpe3JldHVybiB0aGlzLmFkb2JlPyEhdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlOjM9PT10aGlzLm51bUNvbXBvbmVudHM/MCE9PXRoaXMuX2NvbG9yVHJhbnNmb3JtJiYoODIhPT10aGlzLmNvbXBvbmVudHNbMF0uaW5kZXh8fDcxIT09dGhpcy5jb21wb25lbnRzWzFdLmluZGV4fHw2NiE9PXRoaXMuY29tcG9uZW50c1syXS5pbmRleCk6MT09PXRoaXMuX2NvbG9yVHJhbnNmb3JtfV9jb252ZXJ0WWNjVG9SZ2IoZSl7bGV0IHQsYSxyO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krPTMpe3Q9ZVtpXTthPWVbaSsxXTtyPWVbaSsyXTtlW2ldPXQtMTc5LjQ1NisxLjQwMipyO2VbaSsxXT10KzEzNS40NTktLjM0NCphLS43MTQqcjtlW2krMl09dC0yMjYuODE2KzEuNzcyKmF9cmV0dXJuIGV9X2NvbnZlcnRZY2NUb1JnYmEoZSx0KXtmb3IobGV0IGE9MCxyPTAsaT1lLmxlbmd0aDthPGk7YSs9MyxyKz00KXtjb25zdCBpPWVbYV0sbj1lW2ErMV0scz1lW2ErMl07dFtyXT1pLTE3OS40NTYrMS40MDIqczt0W3IrMV09aSsxMzUuNDU5LS4zNDQqbi0uNzE0KnM7dFtyKzJdPWktMjI2LjgxNisxLjc3MipuO3RbciszXT0yNTV9cmV0dXJuIHR9X2NvbnZlcnRZY2NrVG9SZ2IoZSl7dGhpcy5fY29udmVydFljY2tUb0NteWsoZSk7cmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2IoZSl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe3RoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGUpO3JldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShlKX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsYSxyO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krPTQpe3Q9ZVtpXTthPWVbaSsxXTtyPWVbaSsyXTtlW2ldPTQzNC40NTYtdC0xLjQwMipyO2VbaSsxXT0xMTkuNTQxLXQrLjM0NCphKy43MTQqcjtlW2krMl09NDgxLjgxNi10LTEuNzcyKmF9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7Y29uc3QgdD1lLmxlbmd0aC80O0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkJ1ZmZlcihlLDAsdCxlLDAsOCwwKTtyZXR1cm4gZS5zdWJhcnJheSgwLDMqdCl9X2NvbnZlcnRDbXlrVG9SZ2JhKGUpe0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkJ1ZmZlcihlLDAsZS5sZW5ndGgvNCxlLDAsOCwxKTtpZihDb2xvclNwYWNlVXRpbHMuY215ayBpbnN0YW5jZW9mIERldmljZUNteWtDUylmb3IobGV0IHQ9MyxhPWUubGVuZ3RoO3Q8YTt0Kz00KWVbdF09MjU1O3JldHVybiBlfWdldERhdGEoe3dpZHRoOmUsaGVpZ2h0OnQsZm9yY2VSR0JBOmE9ITEsZm9yY2VSR0I6cj0hMSxpc1NvdXJjZVBERjppPSExfSl7aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IEpwZWdFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSIpO2NvbnN0IG49dGhpcy5fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsaSk7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKGF8fHIpKXtjb25zdCBlPW4ubGVuZ3RoKihhPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7bGV0IHI9MDtpZihhKSFmdW5jdGlvbiBncmF5VG9SR0JBKGUsdCl7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXRbYV09NjU3OTMqZVthXXw0Mjc4MTkwMDgwO2Vsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXRbYV09MTY4NDMwMDgqZVthXXwyNTV9KG4sbmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSk7ZWxzZSBmb3IoY29uc3QgZSBvZiBuKXt0W3IrK109ZTt0W3IrK109ZTt0W3IrK109ZX1yZXR1cm4gdH1pZigzPT09dGhpcy5udW1Db21wb25lbnRzJiZ0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCl7aWYoYSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkobi5sZW5ndGgvMyo0KTtyZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiYShuLGUpfXJldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2Iobil9aWYoND09PXRoaXMubnVtQ29tcG9uZW50cyl7aWYodGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIGE/dGhpcy5fY29udmVydFljY2tUb1JnYmEobik6cj90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKG4pO2lmKHIpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fWNsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17c3RhdGljI0Q9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNEP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2pwZWciKTpQcm9taXNlLnJlc29sdmUoITEpKX1zdGF0aWMgc2V0T3B0aW9ucyh7aXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6ZT0hMX0pe3RoaXMuI0Q9ZX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9Z2V0IGpwZWdPcHRpb25zKCl7Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYoKHRoaXMuZm9yY2VSR0JBfHx0aGlzLmZvcmNlUkdCKSYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxpPW5ldyBJbnQzMkFycmF5KHIpO2xldCBuPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe2lbZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtpW2UrMV09dFtlXSpzfDA7MjU2PT09aVtlXSYmMD09PWlbZSsxXXx8KG49ITApfW4mJihlLmRlY29kZVRyYW5zZm9ybT1pKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIodCkmJihlLmNvbG9yVHJhbnNmb3JtPXQpfXJldHVybiBzaGFkb3codGhpcywianBlZ09wdGlvbnMiLGUpfSNOKGUpe2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGgtMTt0PGE7dCsrKWlmKDI1NT09PWVbdF0mJjIxNj09PWVbdCsxXSl7dD4wJiYoZT1lLnN1YmFycmF5KHQpKTticmVha31yZXR1cm4gZX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT10aGlzLiNOKGV8fHRoaXMuYnl0ZXMpO2NvbnN0IHQ9bmV3IEpwZWdJbWFnZSh0aGlzLmpwZWdPcHRpb25zKTt0LnBhcnNlKGUpO2NvbnN0IGE9dC5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1hLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9YXN5bmMgZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKXtpZighYXdhaXQgSnBlZ1N0cmVhbS5jYW5Vc2VJbWFnZURlY29kZXIpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmpwZWdPcHRpb25zO2lmKGUuZGVjb2RlVHJhbnNmb3JtKXJldHVybiBudWxsO2xldCB0O3RyeXtjb25zdCBhPXRoaXMuY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXImJmF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKXx8dGhpcy5ieXRlcztpZighYSlyZXR1cm4gbnVsbDtsZXQgcj10aGlzLiNOKGEpO2NvbnN0IGk9SnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihyLGUuY29sb3JUcmFuc2Zvcm0pO2lmKCFpKXJldHVybiBudWxsO2lmKGkuZXhpZlN0YXJ0KXtyPXIuc2xpY2UoKTtyLmZpbGwoMCxpLmV4aWZTdGFydCxpLmV4aWZFbmQpfXQ9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTpyLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19fWNvbnN0IE5hPWFzeW5jIGZ1bmN0aW9uIE9wZW5KUEVHKGU9e30pe3ZhciB0PWUsYT0iLi90aGlzLnByb2dyYW0iLHF1aXRfPShlLHQpPT57dGhyb3cgdH0scj1pbXBvcnQubWV0YS51cmw7dHJ5e25ldyBVUkwoIi4iLHIpLmhyZWZ9Y2F0Y2h7fTA7dmFyIGksbixzLG8sYyxsLGgsdSxkPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZj1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksZz0hMSxwPSExO2Z1bmN0aW9uIHVwZGF0ZU1lbW9yeVZpZXdzKCl7dmFyIGU9by5idWZmZXI7Yz1uZXcgSW50OEFycmF5KGUpO25ldyBJbnQxNkFycmF5KGUpO2w9bmV3IFVpbnQ4QXJyYXkoZSk7bmV3IFVpbnQxNkFycmF5KGUpO2g9bmV3IEludDMyQXJyYXkoZSk7dT1uZXcgVWludDMyQXJyYXkoZSk7bmV3IEZsb2F0MzJBcnJheShlKTtuZXcgRmxvYXQ2NEFycmF5KGUpO25ldyBCaWdJbnQ2NEFycmF5KGUpO25ldyBCaWdVaW50NjRBcnJheShlKX1jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKGUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWA7dGhpcy5zdGF0dXM9ZX19dmFyIG0sY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKHQpfSxiPVtdLGFkZE9uUG9zdFJ1bj1lPT5iLnB1c2goZSkseT1bXSxhZGRPblByZVJ1bj1lPT55LnB1c2goZSksdz0hMCx4PTAsUz17fSxoYW5kbGVFeGNlcHRpb249ZT0+e2lmKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzfHwidW53aW5kIj09ZSlyZXR1cm4gaTtxdWl0XygwLGUpfSxrZWVwUnVudGltZUFsaXZlPSgpPT53fHx4PjAsX3Byb2NfZXhpdD1lPT57aT1lO2lmKCFrZWVwUnVudGltZUFsaXZlKCkpe3Qub25FeGl0Py4oZSk7Zz0hMH1xdWl0XygwLG5ldyBFeGl0U3RhdHVzKGUpKX0sX2V4aXQ9KGUsdCk9PntpPWU7X3Byb2NfZXhpdChlKX0sY2FsbFVzZXJDYWxsYmFjaz1lPT57aWYoIWcpdHJ5e2UoKTsoKCk9PntpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXRyeXtfZXhpdChpKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9fSkoKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9fSxhbGlnbk1lbW9yeT0oZSx0KT0+TWF0aC5jZWlsKGUvdCkqdCxncm93TWVtb3J5PWU9Pnt2YXIgdD0oZS1vLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNnwwO3RyeXtvLmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fSxrPXt9LGdldEVudlN0cmluZ3M9KCk9PntpZighZ2V0RW52U3RyaW5ncy5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzphfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gayl2b2lkIDA9PT1rW3RdP2RlbGV0ZSBlW3RdOmVbdF09a1t0XTt2YXIgcj1bXTtmb3IodmFyIHQgaW4gZSlyLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1yfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LHN0cmluZ1RvVVRGOD0oZSx0LGEpPT4oKGUsdCxhLHIpPT57aWYoIShyPjApKXJldHVybiAwO2Zvcih2YXIgaT1hLG49YStyLTEscz0wO3M8ZS5sZW5ndGg7KytzKXt2YXIgbz1lLmNvZGVQb2ludEF0KHMpO2lmKG88PTEyNyl7aWYoYT49bilicmVhazt0W2ErK109b31lbHNlIGlmKG88PTIwNDcpe2lmKGErMT49bilicmVhazt0W2ErK109MTkyfG8+PjY7dFthKytdPTEyOHw2MyZvfWVsc2UgaWYobzw9NjU1MzUpe2lmKGErMj49bilicmVhazt0W2ErK109MjI0fG8+PjEyO3RbYSsrXT0xMjh8bz4+NiY2Mzt0W2ErK109MTI4fDYzJm99ZWxzZXtpZihhKzM+PW4pYnJlYWs7dFthKytdPTI0MHxvPj4xODt0W2ErK109MTI4fG8+PjEyJjYzO3RbYSsrXT0xMjh8bz4+NiY2Mzt0W2ErK109MTI4fDYzJm87cysrfX10W2FdPTA7cmV0dXJuIGEtaX0pKGUsbCx0LGEpLGxlbmd0aEJ5dGVzVVRGOD1lPT57Zm9yKHZhciB0PTAsYT0wO2E8ZS5sZW5ndGg7KythKXt2YXIgcj1lLmNoYXJDb2RlQXQoYSk7aWYocjw9MTI3KXQrKztlbHNlIGlmKHI8PTIwNDcpdCs9MjtlbHNlIGlmKHI+PTU1Mjk2JiZyPD01NzM0Myl7dCs9NDsrK2F9ZWxzZSB0Kz0zfXJldHVybiB0fSxDPVtudWxsLFtdLFtdXSx2PSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyOnZvaWQgMCxVVEY4QXJyYXlUb1N0cmluZz0oZSx0PTAsYSxyKT0+e3ZhciBpPSgoZSx0LGEscik9Pnt2YXIgaT10K2E7aWYocilyZXR1cm4gaTtmb3IoO2VbdF0mJiEodD49aSk7KSsrdDtyZXR1cm4gdH0pKGUsdCxhLHIpO2lmKGktdD4xNiYmZS5idWZmZXImJnYpcmV0dXJuIHYuZGVjb2RlKGUuc3ViYXJyYXkodCxpKSk7Zm9yKHZhciBuPSIiO3Q8aTspe3ZhciBzPWVbdCsrXTtpZigxMjgmcyl7dmFyIG89NjMmZVt0KytdO2lmKDE5MiE9KDIyNCZzKSl7dmFyIGM9NjMmZVt0KytdO2lmKChzPTIyND09KDI0MCZzKT8oMTUmcyk8PDEyfG88PDZ8YzooNyZzKTw8MTh8bzw8MTJ8Yzw8Nnw2MyZlW3QrK10pPDY1NTM2KW4rPVN0cmluZy5mcm9tQ2hhckNvZGUocyk7ZWxzZXt2YXIgbD1zLTY1NTM2O24rPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8bD4+MTAsNTYzMjB8MTAyMyZsKX19ZWxzZSBuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZzKTw8NnxvKX1lbHNlIG4rPVN0cmluZy5mcm9tQ2hhckNvZGUocyl9cmV0dXJuIG59LHByaW50Q2hhcj0oZSx0KT0+e3ZhciBhPUNbZV07aWYoMD09PXR8fDEwPT09dCl7KDE9PT1lP2Q6ZikoVVRGOEFycmF5VG9TdHJpbmcoYSkpO2EubGVuZ3RoPTB9ZWxzZSBhLnB1c2godCl9LFVURjhUb1N0cmluZz0oZSx0LGEpPT5lP1VURjhBcnJheVRvU3RyaW5nKGwsZSx0LGEpOiIiO3Qubm9FeGl0UnVudGltZSYmKHc9dC5ub0V4aXRSdW50aW1lKTt0LnByaW50JiYoZD10LnByaW50KTt0LnByaW50RXJyJiYoZj10LnByaW50RXJyKTt0Lndhc21CaW5hcnkmJnQud2FzbUJpbmFyeTt0LmFyZ3VtZW50cyYmdC5hcmd1bWVudHM7dC50aGlzUHJvZ3JhbSYmKGE9dC50aGlzUHJvZ3JhbSk7aWYodC5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wcmVJbml0JiYodC5wcmVJbml0PVt0LnByZUluaXRdKTtmb3IoO3QucHJlSW5pdC5sZW5ndGg+MDspdC5wcmVJbml0LnNoaWZ0KCkoKX10LndyaXRlQXJyYXlUb01lbW9yeT0oZSx0KT0+e2Muc2V0KGUsdCl9O3ZhciBGLFQ9e2s6KCk9PmZ1bmN0aW9uIGFib3J0KGUpe3Qub25BYm9ydD8uKGUpO2YoZT0iQWJvcnRlZCgiK2UrIikiKTtnPSEwO2UrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgYT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO3M/LihhKTt0aHJvdyBhfSgiIiksajooKT0+e3c9ITE7eD0wfSxsOihlLHQpPT57aWYoU1tlXSl7Y2xlYXJUaW1lb3V0KFNbZV0uaWQpO2RlbGV0ZSBTW2VdfWlmKCF0KXJldHVybiAwO3ZhciBhPXNldFRpbWVvdXQoKCk9PntkZWxldGUgU1tlXTtjYWxsVXNlckNhbGxiYWNrKCgpPT5tKGUscGVyZm9ybWFuY2Uubm93KCkpKX0sdCk7U1tlXT17aWQ6YSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxmOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsYSl7ZT4+PTI7Y29uc3Qgcj10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSksaT1oLnN1YmFycmF5KGUsZSthKTtyLnNldChpKX0sZTpmdW5jdGlvbiBfY29weV9waXhlbHNfMyhlLGEscixpKXtlPj49MjthPj49MjtyPj49Mjtjb25zdCBuPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmkpLHM9aC5zdWJhcnJheShlLGUraSksbz1oLnN1YmFycmF5KGEsYStpKSxjPWguc3ViYXJyYXkocixyK2kpO2ZvcihsZXQgZT0wO2U8aTtlKyspe25bMyplXT1zW2VdO25bMyplKzFdPW9bZV07blszKmUrMl09Y1tlXX19LGQ6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzQoZSxhLHIsaSxuKXtlPj49MjthPj49MjtyPj49MjtpPj49Mjtjb25zdCBzPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0Km4pLG89aC5zdWJhcnJheShlLGUrbiksYz1oLnN1YmFycmF5KGEsYStuKSxsPWguc3ViYXJyYXkocixyK24pLHU9aC5zdWJhcnJheShpLGkrbik7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7c1s0KmVdPW9bZV07c1s0KmUrMV09Y1tlXTtzWzQqZSsyXT1sW2VdO3NbNCplKzNdPXVbZV19fSxtOmU9Pnt2YXIgdD1sLmxlbmd0aCxhPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+YSlyZXR1cm4hMTtmb3IodmFyIHI9MTtyPD00O3IqPTIpe3ZhciBpPXQqKDErLjIvcik7aT1NYXRoLm1pbihpLGUrMTAwNjYzMjk2KTt2YXIgbj1NYXRoLm1pbihhLGFsaWduTWVtb3J5KE1hdGgubWF4KGUsaSksNjU1MzYpKTtpZihncm93TWVtb3J5KG4pKXJldHVybiEwfXJldHVybiExfSxvOihlLHQpPT57dmFyIGE9MCxyPTA7Zm9yKHZhciBpIG9mIGdldEVudlN0cmluZ3MoKSl7dmFyIG49dCthO3VbZStyPj4yXT1uO2ErPXN0cmluZ1RvVVRGOChpLG4sMS8wKSsxO3IrPTR9cmV0dXJuIDB9LHA6KGUsdCk9Pnt2YXIgYT1nZXRFbnZTdHJpbmdzKCk7dVtlPj4yXT1hLmxlbmd0aDt2YXIgcj0wO2Zvcih2YXIgaSBvZiBhKXIrPWxlbmd0aEJ5dGVzVVRGOChpKSsxO3VbdD4+Ml09cjtyZXR1cm4gMH0sbjpmdW5jdGlvbiBfZmRfc2VlayhlLHQsYSxyKXt0PShpPXQpPC05MDA3MTk5MjU0NzQwOTkyfHxpPjkwMDcxOTkyNTQ3NDA5OTI/TmFOOk51bWJlcihpKTt2YXIgaTtyZXR1cm4gNzB9LGI6KGUsdCxhLHIpPT57Zm9yKHZhciBpPTAsbj0wO248YTtuKyspe3ZhciBzPXVbdD4+Ml0sbz11W3QrND4+Ml07dCs9ODtmb3IodmFyIGM9MDtjPG87YysrKXByaW50Q2hhcihlLGxbcytjXSk7aSs9b311W3I+PjJdPWk7cmV0dXJuIDB9LHE6ZnVuY3Rpb24gX2dyYXlfdG9fcmdiYShlLGEpe2U+Pj0yO2NvbnN0IHI9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqYSksaT1oLnN1YmFycmF5KGUsZSthKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtyWzQqZV09cls0KmUrMV09cls0KmUrMl09aVtlXTtyWzQqZSszXT0yNTV9fSxoOmZ1bmN0aW9uIF9ncmF5YV90b19yZ2JhKGUsYSxyKXtlPj49MjthPj49Mjtjb25zdCBpPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49aC5zdWJhcnJheShlLGUrcikscz1oLnN1YmFycmF5KGEsYStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtpWzQqZV09aVs0KmUrMV09aVs0KmUrMl09bltlXTtpWzQqZSszXT1zW2VdfX0sYzpmdW5jdGlvbiBfanNQcmludFdhcm5pbmcoZSl7Y29uc3QgYT1VVEY4VG9TdHJpbmcoZSk7KHQud2Fybnx8Y29uc29sZS53YXJuKShgT3BlbkpQRUc6ICR7YX1gKX0saTpfcHJvY19leGl0LGc6ZnVuY3Rpb24gX3JnYl90b19yZ2JhKGUsYSxyLGkpe2U+Pj0yO2E+Pj0yO3I+Pj0yO2NvbnN0IG49dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1oLnN1YmFycmF5KGUsZStpKSxvPWguc3ViYXJyYXkoYSxhK2kpLGM9aC5zdWJhcnJheShyLHIraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7bls0KmVdPXNbZV07bls0KmUrMV09b1tlXTtuWzQqZSsyXT1jW2VdO25bNCplKzNdPTI1NX19LGE6ZnVuY3Rpb24gX3N0b3JlRXJyb3JNZXNzYWdlKGUpe2NvbnN0IGE9VVRGOFRvU3RyaW5nKGUpO3QuZXJyb3JNZXNzYWdlcz90LmVycm9yTWVzc2FnZXMrPSJcbiIrYTp0LmVycm9yTWVzc2FnZXM9YX19O0Y9YXdhaXQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLGEpe0Y9ZS5leHBvcnRzO289Ri5yO3VwZGF0ZU1lbW9yeVZpZXdzKCk7IWZ1bmN0aW9uIGFzc2lnbldhc21FeHBvcnRzKGUpe3QuX21hbGxvYz1lLnQ7dC5fZnJlZT1lLnU7dC5fanAyX2RlY29kZT1lLnY7bT1lLnd9KEYpO3JldHVybiBGfXZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6VH19KCk7cmV0dXJuIG5ldyBQcm9taXNlKChhLHIpPT57dC5pbnN0YW50aWF0ZVdhc20oZSwoZSx0KT0+e2EocmVjZWl2ZUluc3RhbmNlKGUpKX0pfSl9KCk7IWZ1bmN0aW9uIHJ1bigpeyFmdW5jdGlvbiBwcmVSdW4oKXtpZih0LnByZVJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlUnVuJiYodC5wcmVSdW49W3QucHJlUnVuXSk7Zm9yKDt0LnByZVJ1bi5sZW5ndGg7KWFkZE9uUHJlUnVuKHQucHJlUnVuLnNoaWZ0KCkpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKHkpfSgpO2Z1bmN0aW9uIGRvUnVuKCl7dC5jYWxsZWRSdW49ITA7aWYoIWcpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe3A9ITA7Ri5zKCl9KCk7bj8uKHQpO3Qub25SdW50aW1lSW5pdGlhbGl6ZWQ/LigpOyFmdW5jdGlvbiBwb3N0UnVuKCl7aWYodC5wb3N0UnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wb3N0UnVuJiYodC5wb3N0UnVuPVt0LnBvc3RSdW5dKTtmb3IoO3QucG9zdFJ1bi5sZW5ndGg7KWFkZE9uUG9zdFJ1bih0LnBvc3RSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3MoYil9KCl9fWlmKHQuc2V0U3RhdHVzKXt0LnNldFN0YXR1cygiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoKCk9PntzZXRUaW1lb3V0KCgpPT50LnNldFN0YXR1cygiIiksMSk7ZG9SdW4oKX0sMSl9ZWxzZSBkb1J1bigpfSgpO3JldHVybiBwP3Q6bmV3IFByb21pc2UoKGUsdCk9PntuPWU7cz10fSl9O2NsYXNzIEpweEVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnB4RXJyb3IiKX19Y2xhc3MgSnB4SW1hZ2V7c3RhdGljI1A9bnVsbDtzdGF0aWMjRT1udWxsO3N0YXRpYyNMPW51bGw7c3RhdGljI3Y9ITA7c3RhdGljI189ITA7c3RhdGljI0Y9bnVsbDtzdGF0aWMgc2V0T3B0aW9ucyh7aGFuZGxlcjplLHVzZVdhc206dCx1c2VXb3JrZXJGZXRjaDphLHdhc21Vcmw6cn0pe3RoaXMuI3Y9dDt0aGlzLiNfPWE7dGhpcy4jRj1yO2F8fCh0aGlzLiNFPWUpfXN0YXRpYyBhc3luYyNVKGUpe2NvbnN0IHQ9YCR7dGhpcy4jRn1vcGVuanBlZ19ub3dhc21fZmFsbGJhY2suanNgO2xldCBhPW51bGw7dHJ5e2E9KGF3YWl0IGltcG9ydCgKLyp3ZWJwYWNrSWdub3JlOiB0cnVlKi8KLypAdml0ZS1pZ25vcmUqLwp0KSkuZGVmYXVsdCgpfWNhdGNoKGUpe3dhcm4oYEpweEltYWdlI2dldEpzTW9kdWxlOiAke2V9YCl9ZShhKX1zdGF0aWMgYXN5bmMjaihlLHQsYSl7Y29uc3Qgcj0ib3BlbmpwZWcud2FzbSI7dHJ5e3RoaXMuI1B8fCh0aGlzLiNfP3RoaXMuI1A9YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke3RoaXMuI0Z9JHtyfWApOnRoaXMuI1A9YXdhaXQgdGhpcy4jRS5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse3R5cGU6Indhc21GYWN0b3J5IixmaWxlbmFtZTpyfSkpO3JldHVybiBhKChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0aGlzLiNQLHQpKS5pbnN0YW5jZSl9Y2F0Y2godCl7d2FybihgSnB4SW1hZ2UjaW5zdGFudGlhdGVXYXNtOiAke3R9YCk7dGhpcy4jVShlKTtyZXR1cm4gbnVsbH1maW5hbGx5e3RoaXMuI0U9bnVsbH19c3RhdGljIGFzeW5jIGRlY29kZShlLHtudW1Db21wb25lbnRzOnQ9NCxpc0luZGV4ZWRDb2xvcm1hcDphPSExLHNtYXNrSW5EYXRhOnI9ITEscmVkdWNlUG93ZXI6aT0wfT17fSl7aWYoIXRoaXMuI0wpe2NvbnN0e3Byb21pc2U6ZSxyZXNvbHZlOnR9PVByb21pc2Uud2l0aFJlc29sdmVycygpLGE9W2VdO3RoaXMuI3Y/YS5wdXNoKE5hKHt3YXJuLGluc3RhbnRpYXRlV2FzbTp0aGlzLiNqLmJpbmQodGhpcyx0KX0pKTp0aGlzLiNVKHQpO3RoaXMuI0w9UHJvbWlzZS5yYWNlKGEpfWNvbnN0IG49YXdhaXQgdGhpcy4jTDtpZighbil0aHJvdyBuZXcgSnB4RXJyb3IoIk9wZW5KUEVHIGZhaWxlZCB0byBpbml0aWFsaXplIik7bGV0IHM7dHJ5e2NvbnN0IG89ZS5sZW5ndGg7cz1uLl9tYWxsb2Mobyk7bi53cml0ZUFycmF5VG9NZW1vcnkoZSxzKTtpZihuLl9qcDJfZGVjb2RlKHMsbyx0PjA/dDowLCEhYSwhIXIsaSkpe2NvbnN0e2Vycm9yTWVzc2FnZXM6ZX09bjtpZihlKXtkZWxldGUgbi5lcnJvck1lc3NhZ2VzO3Rocm93IG5ldyBKcHhFcnJvcihlKX10aHJvdyBuZXcgSnB4RXJyb3IoIlVua25vd24gZXJyb3IiKX1jb25zdHtpbWFnZURhdGE6Y309bjtuLmltYWdlRGF0YT1udWxsO3JldHVybiBjfWZpbmFsbHl7cyYmbi5fZnJlZShzKX19c3RhdGljIGNsZWFudXAoKXt0aGlzLiNMPW51bGx9c3RhdGljIHBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtyZXR1cm57d2lkdGg6dC1yLGhlaWdodDphLWksYml0c1BlckNvbXBvbmVudDo4LGNvbXBvbmVudHNDb3VudDplLmdldFVpbnQxNigpfX19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxhLHIsaSl7bGV0IG49ZTtmb3IobGV0IGU9MCxhPXQubGVuZ3RoLTE7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO249blthXXx8PVtdfW5bdC5hdCgtMSldPXtjaGVja0ZuOmEsaXRlcmF0ZUZuOnIscHJvY2Vzc0ZuOml9fWNvbnN0IFBhPVtdO2FkZFN0YXRlKFBhLFt5ZSx4ZSxMdCx3ZV0sbnVsbCxmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXllO2Nhc2UgMTpyZXR1cm4gYVt0XT09PXhlO2Nhc2UgMjpyZXR1cm4gYVt0XT09PUx0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXdlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSxmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixuPWktMyxzPWktMixvPWktMSxjPU1hdGgubWluKE1hdGguZmxvb3IoKHQtbikvNCksMjAwKTtpZihjPDEwKXJldHVybiB0LSh0LW4pJTQ7bGV0IGw9MDtjb25zdCBoPVtdO2xldCB1PTAsZD0xLGY9MTtmb3IobGV0IGU9MDtlPGM7ZSsrKXtjb25zdCB0PXJbcysoZTw8MildLGE9cltvKyhlPDwyKV1bMF07aWYoZCthLndpZHRoPjFlMyl7bD1NYXRoLm1heChsLGQpO2YrPXUrMjtkPTA7dT0wfWgucHVzaCh7dHJhbnNmb3JtOnQseDpkLHk6Zix3OmEud2lkdGgsaDphLmhlaWdodH0pO2QrPWEud2lkdGgrMjt1PU1hdGgubWF4KHUsYS5oZWlnaHQpfWNvbnN0IGc9TWF0aC5tYXgobCxkKSsxLHA9Zit1KzEsbT1uZXcgVWludDhBcnJheShnKnAqNCksYj1nPDwyO2ZvcihsZXQgZT0wO2U8YztlKyspe2NvbnN0IHQ9cltvKyhlPDwyKV1bMF0uZGF0YSxhPWhbZV0udzw8MjtsZXQgaT0wLG49aFtlXS54K2hbZV0ueSpnPDwyO20uc2V0KHQuc3ViYXJyYXkoMCxhKSxuLWIpO2ZvcihsZXQgcj0wLHM9aFtlXS5oO3I8cztyKyspe20uc2V0KHQuc3ViYXJyYXkoaSxpK2EpLG4pO2krPWE7bis9Yn1tLnNldCh0LnN1YmFycmF5KGktYSxpKSxuKTtmb3IoO24+PTA7KXt0W24tNF09dFtuXTt0W24tM109dFtuKzFdO3Rbbi0yXT10W24rMl07dFtuLTFdPXRbbiszXTt0W24rYV09dFtuK2EtNF07dFtuK2ErMV09dFtuK2EtM107dFtuK2ErMl09dFtuK2EtMl07dFtuK2ErM109dFtuK2EtMV07bi09Yn19Y29uc3QgeT17d2lkdGg6ZyxoZWlnaHQ6cH07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGcscCk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShtLmJ1ZmZlciksZyxwKSwwLDApO3kuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7eS5kYXRhPW51bGx9ZWxzZXt5LmtpbmQ9Tzt5LmRhdGE9bX1hLnNwbGljZShuLDQqYyxfdCk7ci5zcGxpY2Uobiw0KmMsW3ksaF0pO3JldHVybiBuKzF9KTthZGRTdGF0ZShQYSxbeWUseGUsTnQsd2VdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBhW3RdPT09eWU7Y2FzZSAxOnJldHVybiBhW3RdPT09eGU7Y2FzZSAyOnJldHVybiBhW3RdPT09TnQ7Y2FzZSAzOnJldHVybiBhW3RdPT09d2V9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSxmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIsbj1pLTMscz1pLTIsbz1pLTE7bGV0IGM9TWF0aC5mbG9vcigodC1uKS80KTtpZihjPDEwKXJldHVybiB0LSh0LW4pJTQ7bGV0IGwsaCx1PSExO2NvbnN0IGQ9cltvXVswXSxmPXJbc11bMF0sZz1yW3NdWzFdLHA9cltzXVsyXSxtPXJbc11bM107aWYoZz09PXApe3U9ITA7bD1zKzQ7bGV0IGU9bys0O2ZvcihsZXQgdD0xO3Q8Yzt0KyssbCs9NCxlKz00KXtoPXJbbF07aWYocltlXVswXSE9PWR8fGhbMF0hPT1mfHxoWzFdIT09Z3x8aFsyXSE9PXB8fGhbM10hPT1tKXt0PDEwP3U9ITE6Yz10O2JyZWFrfX19aWYodSl7Yz1NYXRoLm1pbihjLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KDIqYyk7bD1zO2ZvcihsZXQgdD0wO3Q8Yzt0KyssbCs9NCl7aD1yW2xdO2VbdDw8MV09aFs0XTtlWzErKHQ8PDEpXT1oWzVdfWEuc3BsaWNlKG4sNCpjLGp0KTtyLnNwbGljZShuLDQqYyxbZCxmLGcscCxtLGVdKX1lbHNle2M9TWF0aC5taW4oYywxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxjO3QrKyl7aD1yW3MrKHQ8PDIpXTtjb25zdCBhPXJbbysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTpofSl9YS5zcGxpY2Uobiw0KmMsUHQpO3Iuc3BsaWNlKG4sNCpjLFtlXSl9cmV0dXJuIG4rMX0pO2FkZFN0YXRlKFBhLFt5ZSx4ZSxFdCx3ZV0sZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSxmdW5jdGlvbiBpdGVyYXRlSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09eWU7Y2FzZSAxOmlmKGFbdF0hPT14ZSlyZXR1cm4hMTtjb25zdCBpPWUuaUN1cnItMixuPXJbaV1bMF0scz1yW2ldWzNdO3JldHVybiByW3RdWzBdPT09biYmMD09PXJbdF1bMV0mJjA9PT1yW3RdWzJdJiZyW3RdWzNdPT09cztjYXNlIDI6aWYoYVt0XSE9PUV0KXJldHVybiExO2NvbnN0IG89cltlLmlDdXJyLTFdWzBdO3JldHVybiByW3RdWzBdPT09bztjYXNlIDM6cmV0dXJuIGFbdF09PT13ZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7aX1gKX0sZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixuPWktMyxzPWktMixvPXJbaS0xXVswXSxjPXJbc11bMF0sbD1yW3NdWzNdLGg9TWF0aC5taW4oTWF0aC5mbG9vcigodC1uKS80KSwxZTMpO2lmKGg8MylyZXR1cm4gdC0odC1uKSU0O2NvbnN0IHU9bmV3IEZsb2F0MzJBcnJheSgyKmgpO2xldCBkPXM7Zm9yKGxldCBlPTA7ZTxoO2UrKyxkKz00KXtjb25zdCB0PXJbZF07dVtlPDwxXT10WzRdO3VbMSsoZTw8MSldPXRbNV19Y29uc3QgZj1bbyxjLGwsdV07YS5zcGxpY2Uobiw0KmgsVXQpO3Iuc3BsaWNlKG4sNCpoLGYpO3JldHVybiBuKzF9KTthZGRTdGF0ZShQYSxbVWUsemUsSmUsWmUsamVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKGkpe2Nhc2UgMDpyZXR1cm4gYVt0XT09PVVlO2Nhc2UgMTpyZXR1cm4gYVt0XT09PXplO2Nhc2UgMjpyZXR1cm4gYVt0XT09PUplO2Nhc2UgMzppZihhW3RdIT09WmUpcmV0dXJuITE7Y29uc3QgaT1lLmlDdXJyLTMsbj1yW2ldWzBdLHM9cltpXVsxXTtyZXR1cm4gclt0XVswXT09PW4mJnJbdF1bMV09PT1zO2Nhc2UgNDpyZXR1cm4gYVt0XT09PWplfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSxmdW5jdGlvbihlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLG49aS00LHM9aS0zLG89aS0yLGM9aS0xLGw9aSxoPXJbc11bMF0sdT1yW3NdWzFdO2xldCBkPU1hdGgubWluKE1hdGguZmxvb3IoKHQtbikvNSksMWUzKTtpZihkPDMpcmV0dXJuIHQtKHQtbiklNTtsZXQgZj1uO2lmKG4+PTQmJmFbbi00XT09PWFbc10mJmFbbi0zXT09PWFbb10mJmFbbi0yXT09PWFbY10mJmFbbi0xXT09PWFbbF0mJnJbbi00XVswXT09PWgmJnJbbi00XVsxXT09PXUpe2QrKztmLT01fWxldCBnPWYrNDtmb3IobGV0IGU9MTtlPGQ7ZSsrKXthLnNwbGljZShnLDMpO3Iuc3BsaWNlKGcsMyk7Zys9Mn1yZXR1cm4gZysxfSk7YWRkU3RhdGUoUGEsW3llLHhlLHF0LHdlXSxlPT57Y29uc3QgdD1lLmFyZ3NBcnJheSxhPXRbZS5pQ3Vyci0xXVswXTtpZihhIT09VGUmJmEhPT1PZSYmYSE9PVJlJiZhIT09QmUmJmEhPT1OZSYmYSE9PVBlKXJldHVybiEwO2NvbnN0IHI9dFtlLmlDdXJyLTJdO3JldHVybiAxPT09clswXSYmMD09PXJbMV0mJjA9PT1yWzJdJiYxPT09clszXX0sKCk9PiExLChlLHQpPT57Y29uc3R7Zm5BcnJheTphLGFyZ3NBcnJheTpyfT1lLGk9ZS5pQ3VycixuPWktMyxzPWktMixvPXJbaS0xXSxjPXJbc10sWyxbbF0saF09bztpZihoKXtVdGlsLnNjYWxlTWluTWF4KGMsaCk7Zm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7KXN3aXRjaChsW2UrK10pe2Nhc2UgJHQ6Y2FzZSBHdDpVdGlsLmFwcGx5VHJhbnNmb3JtKGwsYyxlKTtlKz0yO2JyZWFrO2Nhc2UgVnQ6VXRpbC5hcHBseVRyYW5zZm9ybVRvQmV6aWVyKGwsYyxlKTtlKz02fX1hLnNwbGljZShuLDQscXQpO3Iuc3BsaWNlKG4sNCxvKTtyZXR1cm4gbisxfSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpPcGVyYXRvckxpc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9O3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsYT1lLmxlbmd0aCxyPXRoaXMuc3RhdGUsaT10aGlzLm1hdGNoO2lmKCFyJiYhaSYmdCsxPT09YSYmIVBhW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9YTtyZXR1cm59Y29uc3Qgbj10aGlzLmNvbnRleHQ7Zm9yKDt0PGE7KXtpZihpKXtpZigoMCxpLml0ZXJhdGVGbikobix0KSl7dCsrO2NvbnRpbnVlfXQ9KDAsaS5wcm9jZXNzRm4pKG4sdCsxKTthPWUubGVuZ3RoO2k9bnVsbDtyPW51bGw7aWYodD49YSlicmVha31yPShyfHxQYSlbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe24uaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShuKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O3N0YXRpYyBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hMTtjb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTt0aGlzLm9wdGltaXplcj0hdHx8ZSZkP25ldyBOdWxsT3B0aW1pemVyKHRoaXMpOm5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9c3RhdGljIHNldE9wdGlvbnMoe2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmV9KXt0aGlzLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT13ZXx8ZT09PWplKSkmJnRoaXMuZmx1c2goKX1hZGRJbWFnZU9wcyhlLHQsYSxyPSExKXtpZihyKXt0aGlzLmFkZE9wKHllKTt0aGlzLmFkZE9wKGJlLFtbWyJTTWFzayIsITFdXV0pfXZvaWQgMCE9PWEmJnRoaXMuYWRkT3AoQ3QsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHZ0LFtdKTtyJiZ0aGlzLmFkZE9wKHdlKX1hZGREZXBlbmRlbmN5KGUpe2lmKCF0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSkpe3RoaXMuZGVwZW5kZW5jaWVzLmFkZChlKTt0aGlzLmFkZE9wKGxlLFtlXSl9fWFkZERlcGVuZGVuY2llcyhlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkRGVwZW5kZW5jeSh0KX1hZGRPcExpc3QoZSl7aWYoZSBpbnN0YW5jZW9mIE9wZXJhdG9yTGlzdCl7Zm9yKGNvbnN0IHQgb2YgZS5kZXBlbmRlbmNpZXMpdGhpcy5kZXBlbmRlbmNpZXMuYWRkKHQpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl0aGlzLmFkZE9wKGUuZm5BcnJheVt0XSxlLmFyZ3NBcnJheVt0XSl9ZWxzZSB3YXJuKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6cn09dGhpcztmb3IobGV0IGk9MDtpPHI7aSsrKXN3aXRjaCh0W2ldKXtjYXNlIEx0OmNhc2UgX3Q6Y2FzZSBOdDp7Y29uc3R7Yml0bWFwOnQsZGF0YTpyfT1hW2ldWzBdOyh0fHxyPy5idWZmZXIpJiZlLnB1c2godHx8ci5idWZmZXIpO2JyZWFrfWNhc2UgcXQ6e2NvbnN0WyxbdF0scl09YVtpXTt0JiZlLnB1c2godC5idWZmZXIsci5idWZmZXIpO2JyZWFrfWNhc2UgVHQ6Y29uc3RbdCxyXT1hW2ldO3QmJmUucHVzaCh0LmJ1ZmZlcik7ciYmZS5wdXNoKHIuYnVmZmVyKTticmVhaztjYXNlIEplOmUucHVzaChhW2ldWzBdLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goZT0hMSx0PW51bGwpe3RoaXMub3B0aW1pemVyLmZsdXNoKCk7Y29uc3QgYT10aGlzLmxlbmd0aDt0aGlzLl90b3RhbExlbmd0aCs9YTt0aGlzLl9zdHJlYW1TaW5rLmVucXVldWUoe2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsYXN0Q2h1bms6ZSxzZXBhcmF0ZUFubm90czp0LGxlbmd0aDphfSwxLHRoaXMuX3RyYW5zZmVycyk7dGhpcy5kZXBlbmRlbmNpZXMuY2xlYXIoKTt0aGlzLmZuQXJyYXkubGVuZ3RoPTA7dGhpcy5hcmdzQXJyYXkubGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLm9wdGltaXplci5yZXNldCgpfX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspYT1hPDw4fGVbcl07cmV0dXJuIGE+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsYSl7bGV0IHI9MDtmb3IobGV0IGk9YTtpPj0wO2ktLSl7cis9ZVtpXSt0W2ldO2VbaV09MjU1JnI7cj4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBhPTE7Zm9yKGxldCByPXQ7cj49MCYmYT4wO3ItLSl7YSs9ZVtyXTtlW3JdPTI1NSZhO2E+Pj04fX1jb25zdCBFYT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JmEpO3Q9dDw8N3wxMjcmYX13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSk7dGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IGE7Y29uc3Qgcj10aGlzLnRtcEJ1ZjtsZXQgaT0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7YT0hKDEyOCZlKTtyW2krK109MTI3JmV9d2hpbGUoIWEpO2xldCBuPXQscz0wLG89MDtmb3IoO24+PTA7KXtmb3IoO288OCYmci5sZW5ndGg+MDspe3N8PXJbLS1pXTw8bztvKz03fWVbbl09MjU1JnM7bi0tO3M+Pj04O28tPTh9fXJlYWRIZXhTaWduZWQoZSx0KXt0aGlzLnJlYWRIZXhOdW1iZXIoZSx0KTtjb25zdCBhPTEmZVt0XT8yNTU6MDtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8PXQ7aSsrKXtyPSgxJnIpPDw4fGVbaV07ZVtpXT1yPj4xXmF9fXJlYWRTdHJpbmcoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpLHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgYT0wO2E8ZTthKyspdFthXT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSguLi50KX19Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxhKXtjb25zdCByPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLGk9ci5yZWFkQnl0ZSgpO3QudmVydGljYWw9ISEoMSZpKTtsZXQgbj1udWxsO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoRWEpLG89bmV3IFVpbnQ4QXJyYXkoRWEpLGM9bmV3IFVpbnQ4QXJyYXkoRWEpLGw9bmV3IFVpbnQ4QXJyYXkoRWEpLGg9bmV3IFVpbnQ4QXJyYXkoRWEpO2xldCB1LGQ7Zm9yKDsoZD1yLnJlYWRCeXRlKCkpPj0wOyl7Y29uc3QgZT1kPj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmZCl7Y2FzZSAwOnIucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpuPXIucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IGE9ISEoMTYmZCksaT0xNSZkO2lmKGkrMT5FYSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBmPTEsZz1yLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOnIucmVhZEhleChzLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7dC5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQocyxpKSxoZXhUb0ludChvLGkpKTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgobyxpKTtyLnJlYWRIZXhOdW1iZXIocyxpKTthZGRIZXgocyxvLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7dC5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQocyxpKSxoZXhUb0ludChvLGkpKX1icmVhaztjYXNlIDE6ci5yZWFkSGV4KHMsaSk7ci5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8scyxpKTtyLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgobyxpKTtyLnJlYWRIZXhOdW1iZXIocyxpKTthZGRIZXgocyxvLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7ci5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOnIucmVhZEhleChjLGkpO3U9ci5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQoYyxpKSx1KTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgoYyxpKTtpZighYSl7ci5yZWFkSGV4TnVtYmVyKGgsaSk7YWRkSGV4KGMsaCxpKX11PXIucmVhZFNpZ25lZCgpKyh1KzEpO3QubWFwT25lKGhleFRvSW50KGMsaSksdSl9YnJlYWs7Y2FzZSAzOnIucmVhZEhleChzLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7dT1yLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KHMsaSksaGV4VG9JbnQobyxpKSx1KTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgobyxpKTtpZihhKXMuc2V0KG8pO2Vsc2V7ci5yZWFkSGV4TnVtYmVyKHMsaSk7YWRkSGV4KHMsbyxpKX1yLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxzLGkpO3U9ci5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChzLGkpLGhleFRvSW50KG8saSksdSl9YnJlYWs7Y2FzZSA0OnIucmVhZEhleChjLGYpO3IucmVhZEhleChsLGkpO3QubWFwT25lKGhleFRvSW50KGMsZiksaGV4VG9TdHIobCxpKSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KGMsZik7aWYoIWEpe3IucmVhZEhleE51bWJlcihoLGYpO2FkZEhleChjLGgsZil9aW5jSGV4KGwsaSk7ci5yZWFkSGV4U2lnbmVkKGgsaSk7YWRkSGV4KGwsaCxpKTt0Lm1hcE9uZShoZXhUb0ludChjLGYpLGhleFRvU3RyKGwsaSkpfWJyZWFrO2Nhc2UgNTpyLnJlYWRIZXgocyxmKTtyLnJlYWRIZXhOdW1iZXIobyxmKTthZGRIZXgobyxzLGYpO3IucmVhZEhleChsLGkpO3QubWFwQmZSYW5nZShoZXhUb0ludChzLGYpLGhleFRvSW50KG8sZiksaGV4VG9TdHIobCxpKSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KG8sZik7aWYoYSlzLnNldChvKTtlbHNle3IucmVhZEhleE51bWJlcihzLGYpO2FkZEhleChzLG8sZil9ci5yZWFkSGV4TnVtYmVyKG8sZik7YWRkSGV4KG8scyxmKTtyLnJlYWRIZXgobCxpKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQocyxmKSxoZXhUb0ludChvLGYpLGhleFRvU3RyKGwsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIG4/YShuKTp0fX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgbj10aGlzLmlucHV0O25bMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7bltpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKW5baV09MTE3O3RoaXMuZW9mPSEwfWxldCBzPTA7Zm9yKGk9MDtpPDU7KytpKXM9ODUqcysobltpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZzO3M+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsYT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgcj10aGlzLmJ1ZmZlckxlbmd0aCxpPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYoaTwwKWk9ZTtlbHNle2FbcisrXT1pPDw0fGU7aT0tMX19aWYoaT49MCYmdGhpcy5lb2Ype2FbcisrXT1pPDw0O2k9LTF9dGhpcy5maXJzdERpZ2l0PWk7dGhpcy5idWZmZXJMZW5ndGg9cn19Y29uc3QgTGE9LTEsX2E9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sVWE9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxqYT1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sWGE9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0scWE9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sSGE9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCByLGksbixzLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbixvLGM7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iocz0wO3Rbc108YTsrK3MpZVtzXT10W3NdO2VbcysrXT1hO2Vbc109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtyPTA7aT0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe249dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChuKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbcisxXSxpKTtlW3IrMV08YSYmKHIrPTIpO2JyZWFrO2Nhc2UgMTpuPW89MDtpZihpKXtkb3tuKz1jPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGM+PTY0KTtkb3tvKz1jPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGM+PTY0KX1lbHNle2Rve24rPWM9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoYz49NjQpO2Rve28rPWM9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoYz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStuLGkpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFeaSk7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtyXSszLGkpO2lePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytyO2Zvcig7ZVtyXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbcl08YTspcis9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbcl0rMixpKTtpXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW3JdKzEsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtyXSxpKTtpXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW3JdLTMsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtyPjA/LS1yOisrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW3JdLTIsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtyPjA/LS1yOisrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW3JdLTEsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtyPjA/LS1yOisrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSBMYTp0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGEsMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO2k9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGE7KXtuPTA7aWYoaSlkb3tuKz1jPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGM+PTY0KTtlbHNlIGRve24rPWM9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoYz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStuLGkpO2lePTF9fWxldCBsPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe249dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7biE9PUxhJiYxIT09bjspe3RoaXMuX2VhdEJpdHMoMSk7bj10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1uOyl7dGhpcy5fZWF0Qml0cygxKTtuPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09bil7dGhpcy5fZWF0Qml0cygxMik7bD0hMH1lbHNlIG49PT1MYSYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZsJiZ0aGlzLmJ5dGVBbGlnbil7bj10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW4pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihzPTA7czw0Oysrcyl7bj10aGlzLl9sb29rQml0cygxMik7MSE9PW4mJmluZm8oImJhZCBydGMgY29kZTogIituKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtuPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihuPT09TGEpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKG4+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZuKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtuPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPm4pe288PD1uOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtbik7dGhpcy5vdXRwdXRCaXRzLT1uO249MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO24tPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYobj4wKXtvPDw9bjtuPTB9fX13aGlsZShuKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IHI9dGhpcy5jb2RpbmdQb3M7aWYoZT5hW3JdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmcl50JiYrK3I7YVtyXT1lfXRoaXMuY29kaW5nUG9zPXJ9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGE9dGhpcy5jb2RpbmdMaW5lO2xldCByPXRoaXMuY29kaW5nUG9zO2lmKGU+YVtyXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJnJedCYmKytyO2Fbcl09ZX1lbHNlIGlmKGU8YVtyXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDtyPjAmJmU8YVtyLTFdOyktLXI7YVtyXT1lfXRoaXMuY29kaW5nUG9zPXJ9X2ZpbmRUYWJsZUNvZGUoZSx0LGEscil7Y29uc3QgaT1yfHwwO2ZvcihsZXQgcj1lO3I8PXQ7KytyKXtsZXQgZT10aGlzLl9sb29rQml0cyhyKTtpZihlPT09TGEpcmV0dXJuWyEwLDEsITFdO3I8dCYmKGU8PD10LXIpO2lmKCFpfHxlPj1pKXtjb25zdCB0PWFbZS1pXTtpZih0WzBdPT09cil7dGhpcy5fZWF0Qml0cyhyKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9X2FbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxfYSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIExhfV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09TGEpcmV0dXJuIDE7ZT10Pj41P2phW3Q+PjNdOlVhW3RdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxqYSk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIsVWEpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PUxhKXJldHVybiAxO3Q9ZT4+Nz8hKGU+PjkpJiZlPj43P3FhWyhlPj4xKS02NF06SGFbZT4+N106WGFbZV07aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LEhhKTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLHFhLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxYYSk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP0xhOnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7YSBpbnN0YW5jZW9mIERpY3R8fChhPURpY3QuZW1wdHkpO2NvbnN0IHI9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKHIse0s6YS5nZXQoIksiKSxFbmRPZkxpbmU6YS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246YS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmEuZ2V0KCJDb2x1bW5zIiksUm93czphLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6YS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTphLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgV2E9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSx6YT1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSwkYT1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEdhPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxWYT1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGE9ZS5nZXRCeXRlKCkscj1lLmdldEJ5dGUoKTtpZigtMT09PWF8fC0xPT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKCgoYTw8OCkrciklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDMyJnIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBhPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBhP2EubGVuZ3RoPD1lP2E6YS5zdWJhcnJheSgwLGUpOnRoaXMuZ2V0Qnl0ZXMoZSl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3RoaXMuc3RyZWFtLnJlc2V0KCk7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcygpO3RyeXtjb25zdHtyZWFkYWJsZTp0LHdyaXRhYmxlOmF9PW5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIikscj1hLmdldFdyaXRlcigpO2F3YWl0IHIucmVhZHk7ci53cml0ZShlKS50aGVuKGFzeW5jKCk9Pnthd2FpdCByLnJlYWR5O2F3YWl0IHIuY2xvc2UoKX0pLmNhdGNoKCgpPT57fSk7Y29uc3QgaT1bXTtsZXQgbj0wO2ZvciBhd2FpdChjb25zdCBlIG9mIHQpe2kucHVzaChlKTtuKz1lLmJ5dGVMZW5ndGh9Y29uc3Qgcz1uZXcgVWludDhBcnJheShuKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIGkpe3Muc2V0KGUsbyk7bys9ZS5ieXRlTGVuZ3RofXJldHVybiBzfWNhdGNoe3RoaXMuc3RyZWFtPW5ldyBTdHJlYW0oZSwyLGUubGVuZ3RoLHRoaXMuc3RyZWFtLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH19Z2V0IGlzQXN5bmMoKXtyZXR1cm4hMH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW07bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7aXw9YTw8cjtyKz04fWE9aSYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9aT4+ZTt0aGlzLmNvZGVTaXplPXItPWU7cmV0dXJuIGF9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9ZVswXSxyPWVbMV07bGV0IGksbj10aGlzLmNvZGVTaXplLHM9dGhpcy5jb2RlQnVmO2Zvcig7bjxyJiYtMSE9PShpPXQuZ2V0Qnl0ZSgpKTspe3N8PWk8PG47bis9OH1jb25zdCBvPWFbcyYoMTw8ciktMV0sYz1vPj4xNixsPTY1NTM1Jm87aWYoYzwxfHxuPGMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPXM+PmM7dGhpcy5jb2RlU2l6ZT1uLWM7cmV0dXJuIGx9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYSxyPTA7Zm9yKGE9MDthPHQ7KythKWVbYV0+ciYmKHI9ZVthXSk7Y29uc3QgaT0xPDxyLG49bmV3IEludDMyQXJyYXkoaSk7Zm9yKGxldCBzPTEsbz0wLGM9MjtzPD1yOysrcyxvPDw9MSxjPDw9MSlmb3IobGV0IHI9MDtyPHQ7KytyKWlmKGVbcl09PT1zKXtsZXQgZT0wLHQ9bztmb3IoYT0wO2E8czsrK2Epe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGE9ZTthPGk7YSs9YyluW2FdPXM8PDE2fHI7KytvfXJldHVybltuLHJdfSNYKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdCxhO2NvbnN0IHI9dGhpcy5zdHJlYW07dHJ5e3Q9dGhpcy5nZXRCaXRzKDMpfWNhdGNoKGUpe3RoaXMuI1goZS5tZXNzYWdlKTtyZXR1cm59MSZ0JiYodGhpcy5lb2Y9ITApO3Q+Pj0xO2lmKDA9PT10KXtsZXQgdDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGE9dDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59YXw9dDw8ODtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGk9dDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59aXw9dDw8ODtpZihpIT09KDY1NTM1Jn5hKSYmKDAhPT1hfHwwIT09aSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgbj10aGlzLmJ1ZmZlckxlbmd0aCxzPW4rYTtlPXRoaXMuZW5zdXJlQnVmZmVyKHMpO3RoaXMuYnVmZmVyTGVuZ3RoPXM7aWYoMD09PWEpLTE9PT1yLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PXIuZ2V0Qnl0ZXMoYSk7ZS5zZXQodCxuKTt0Lmxlbmd0aDxhJiYodGhpcy5lb2Y9ITApfXJldHVybn1sZXQgaSxuO2lmKDE9PT10KXtpPUdhO249VmF9ZWxzZXtpZigyIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gYmxvY2sgdHlwZSBpbiBmbGF0ZSBzdHJlYW0iKTt7Y29uc3QgZT10aGlzLmdldEJpdHMoNSkrMjU3LHQ9dGhpcy5nZXRCaXRzKDUpKzEscj10aGlzLmdldEJpdHMoNCkrNCxzPW5ldyBVaW50OEFycmF5KFdhLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPHI7KytvKXNbV2Fbb11dPXRoaXMuZ2V0Qml0cygzKTtjb25zdCBjPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUocyk7YT0wO289MDtjb25zdCBsPWUrdCxoPW5ldyBVaW50OEFycmF5KGwpO2xldCB1LGQsZjtmb3IoO288bDspe2NvbnN0IGU9dGhpcy5nZXRDb2RlKGMpO2lmKDE2PT09ZSl7dT0yO2Q9MztmPWF9ZWxzZSBpZigxNz09PWUpe3U9MztkPTM7Zj1hPTB9ZWxzZXtpZigxOCE9PWUpe2hbbysrXT1hPWU7Y29udGludWV9dT03O2Q9MTE7Zj1hPTB9bGV0IHQ9dGhpcy5nZXRCaXRzKHUpK2Q7Zm9yKDt0LS0gPjA7KWhbbysrXT1mfWk9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShoLnN1YmFycmF5KDAsZSkpO249dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShoLnN1YmFycmF5KGUsbCkpfX1lPXRoaXMuYnVmZmVyO2xldCBzPWU/ZS5sZW5ndGg6MCxvPXRoaXMuYnVmZmVyTGVuZ3RoO2Zvcig7Oyl7bGV0IHQ9dGhpcy5nZXRDb2RlKGkpO2lmKHQ8MjU2KXtpZihvKzE+PXMpe2U9dGhpcy5lbnN1cmVCdWZmZXIobysxKTtzPWUubGVuZ3RofWVbbysrXT10O2NvbnRpbnVlfWlmKDI1Nj09PXQpe3RoaXMuYnVmZmVyTGVuZ3RoPW87cmV0dXJufXQtPTI1Nzt0PXphW3RdO2xldCByPXQ+PjE2O3I+MCYmKHI9dGhpcy5nZXRCaXRzKHIpKTthPSg2NTUzNSZ0KStyO3Q9dGhpcy5nZXRDb2RlKG4pO3Q9JGFbdF07cj10Pj4xNjtyPjAmJihyPXRoaXMuZ2V0Qml0cyhyKSk7Y29uc3QgYz0oNjU1MzUmdCkrcjtpZihvK2E+PXMpe2U9dGhpcy5lbnN1cmVCdWZmZXIobythKTtzPWUubGVuZ3RofWZvcihsZXQgdD0wO3Q8YTsrK3QsKytvKWVbb109ZVtvLWNdfX19Y29uc3QgS2E9W3txZToyMjAxNyxubXBzOjEsbmxwczoxLHN3aXRjaEZsYWc6MX0se3FlOjEzMzEzLG5tcHM6MixubHBzOjYsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjMsbmxwczo5LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczo0LG5scHM6MTIsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjUsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozOCxubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NyxubHBzOjYsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczo4LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczo5LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxMCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MTEsbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MTIsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MTMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjksbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjE1LG5scHM6MTQsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczoxNixubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjIwNzM3LG5tcHM6MTcsbmxwczoxNSxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjE4LG5scHM6MTYsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxOSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjEzMzEzLG5tcHM6MjAsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjIxLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6MTAyNDEsbm1wczoyMixubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoyMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjg3MDUsbm1wczoyNCxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoyNSxubHBzOjIyLHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczoyNixubHBzOjIzLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyNyxubHBzOjI0LHN3aXRjaEZsYWc6MH0se3FlOjUxMjEsbm1wczoyOCxubHBzOjI1LHN3aXRjaEZsYWc6MH0se3FlOjQ2MDksbm1wczoyOSxubHBzOjI2LHN3aXRjaEZsYWc6MH0se3FlOjQzNTMsbm1wczozMCxubHBzOjI3LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczozMSxubHBzOjI4LHN3aXRjaEZsYWc6MH0se3FlOjI0OTcsbm1wczozMixubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjIyMDksbm1wczozMyxubHBzOjMwLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczozNCxubHBzOjMxLHN3aXRjaEZsYWc6MH0se3FlOjEwODksbm1wczozNSxubHBzOjMyLHN3aXRjaEZsYWc6MH0se3FlOjY3MyxubXBzOjM2LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzcsbmxwczozNCxzd2l0Y2hGbGFnOjB9LHtxZTozMjEsbm1wczozOCxubHBzOjM1LHN3aXRjaEZsYWc6MH0se3FlOjI3MyxubXBzOjM5LG5scHM6MzYsc3dpdGNoRmxhZzowfSx7cWU6MTMzLG5tcHM6NDAsbmxwczozNyxzd2l0Y2hGbGFnOjB9LHtxZTo3MyxubXBzOjQxLG5scHM6Mzgsc3dpdGNoRmxhZzowfSx7cWU6Mzcsbm1wczo0MixubHBzOjM5LHN3aXRjaEZsYWc6MH0se3FlOjIxLG5tcHM6NDMsbmxwczo0MCxzd2l0Y2hGbGFnOjB9LHtxZTo5LG5tcHM6NDQsbmxwczo0MSxzd2l0Y2hGbGFnOjB9LHtxZTo1LG5tcHM6NDUsbmxwczo0Mixzd2l0Y2hGbGFnOjB9LHtxZToxLG5tcHM6NDUsbmxwczo0Myxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjQ2LG5scHM6NDYsc3dpdGNoRmxhZzowfV07Y2xhc3MgQXJpdGhtZXRpY0RlY29kZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGF0YT1lO3RoaXMuYnA9dDt0aGlzLmRhdGFFbmQ9YTt0aGlzLmNoaWdoPWVbdF07dGhpcy5jbG93PTA7dGhpcy5ieXRlSW4oKTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDcmNjU1MzV8dGhpcy5jbG93Pj45JjEyNzt0aGlzLmNsb3c9dGhpcy5jbG93PDw3JjY1NTM1O3RoaXMuY3QtPTc7dGhpcy5hPTMyNzY4fWJ5dGVJbigpe2NvbnN0IGU9dGhpcy5kYXRhO2xldCB0PXRoaXMuYnA7aWYoMjU1PT09ZVt0XSlpZihlW3QrMV0+MTQzKXt0aGlzLmNsb3crPTY1MjgwO3RoaXMuY3Q9OH1lbHNle3QrKzt0aGlzLmNsb3crPWVbdF08PDk7dGhpcy5jdD03O3RoaXMuYnA9dH1lbHNle3QrKzt0aGlzLmNsb3crPXQ8dGhpcy5kYXRhRW5kP2VbdF08PDg6NjUyODA7dGhpcy5jdD04O3RoaXMuYnA9dH1pZih0aGlzLmNsb3c+NjU1MzUpe3RoaXMuY2hpZ2grPXRoaXMuY2xvdz4+MTY7dGhpcy5jbG93Jj02NTUzNX19cmVhZEJpdChlLHQpe2xldCBhPWVbdF0+PjEscj0xJmVbdF07Y29uc3QgaT1LYVthXSxuPWkucWU7bGV0IHMsbz10aGlzLmEtbjtpZih0aGlzLmNoaWdoPG4paWYobzxuKXtvPW47cz1yO2E9aS5ubXBzfWVsc2V7bz1uO3M9MV5yOzE9PT1pLnN3aXRjaEZsYWcmJihyPXMpO2E9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09bjtpZigzMjc2OCZvKXt0aGlzLmE9bztyZXR1cm4gcn1pZihvPG4pe3M9MV5yOzE9PT1pLnN3aXRjaEZsYWcmJihyPXMpO2E9aS5ubHBzfWVsc2V7cz1yO2E9aS5ubXBzfX1kb3swPT09dGhpcy5jdCYmdGhpcy5ieXRlSW4oKTtvPDw9MTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDEmNjU1MzV8dGhpcy5jbG93Pj4xNSYxO3RoaXMuY2xvdz10aGlzLmNsb3c8PDEmNjU1MzU7dGhpcy5jdC0tfXdoaWxlKCEoMzI3NjgmbykpO3RoaXMuYT1vO2VbdF09YTw8MXxyO3JldHVybiBzfX1jbGFzcyBKYmlnMkVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsImRlY29kZXIiLG5ldyBBcml0aG1ldGljRGVjb2Rlcih0aGlzLmRhdGEsdGhpcy5zdGFydCx0aGlzLmVuZCkpfWdldCBjb250ZXh0Q2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNvbnRleHRDYWNoZSIsbmV3IENvbnRleHRDYWNoZSl9fWZ1bmN0aW9uIGRlY29kZUludGVnZXIoZSx0LGEpe2NvbnN0IHI9ZS5nZXRDb250ZXh0cyh0KTtsZXQgaT0xO2Z1bmN0aW9uIHJlYWRCaXRzKGUpe2xldCB0PTA7Zm9yKGxldCBuPTA7bjxlO24rKyl7Y29uc3QgZT1hLnJlYWRCaXQocixpKTtpPWk8MjU2P2k8PDF8ZTo1MTEmKGk8PDF8ZSl8MjU2O3Q9dDw8MXxlfXJldHVybiB0Pj4+MH1jb25zdCBuPXJlYWRCaXRzKDEpLHM9cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMzIpKzQ0MzY6cmVhZEJpdHMoMTIpKzM0MDpyZWFkQml0cyg4KSs4NDpyZWFkQml0cyg2KSsyMDpyZWFkQml0cyg0KSs0OnJlYWRCaXRzKDIpO2xldCBvOzA9PT1uP289czpzPjAmJihvPS1zKTtyZXR1cm4gbz49LTIxNDc0ODM2NDgmJm88PWRhP286bnVsbH1mdW5jdGlvbiBkZWNvZGVJQUlEKGUsdCxhKXtjb25zdCByPWUuZ2V0Q29udGV4dHMoIklBSUQiKTtsZXQgaT0xO2ZvcihsZXQgZT0wO2U8YTtlKyspe2k9aTw8MXx0LnJlYWRCaXQocixpKX1yZXR1cm4gYTwzMT9pJigxPDxhKS0xOjIxNDc0ODM2NDcmaX1jb25zdCBKYT1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLFlhPVtbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6Mix5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTMseTotMX0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dXSxaYT1be2NvZGluZzpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDotMSx5OjF9LHt4OjAseToxfSx7eDoxLHk6MX1dfSx7Y29kaW5nOlt7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDowLHk6MX0se3g6MSx5OjF9XX1dLFFhPVszOTcxNywxOTQxLDIyOSw0MDVdLGVyPVszMiw4XTtmdW5jdGlvbiBkZWNvZGVCaXRtYXAoZSx0LGEscixpLG4scyxvKXtpZihlKXtyZXR1cm4gZGVjb2RlTU1SQml0bWFwKG5ldyBSZWFkZXIoby5kYXRhLG8uc3RhcnQsby5lbmQpLHQsYSwhMSl9aWYoMD09PXImJiFuJiYhaSYmND09PXMubGVuZ3RoJiYzPT09c1swXS54JiYtMT09PXNbMF0ueSYmLTM9PT1zWzFdLngmJi0xPT09c1sxXS55JiYyPT09c1syXS54JiYtMj09PXNbMl0ueSYmLTI9PT1zWzNdLngmJi0yPT09c1szXS55KXJldHVybiBmdW5jdGlvbiBkZWNvZGVCaXRtYXBUZW1wbGF0ZTAoZSx0LGEpe2NvbnN0IHI9YS5kZWNvZGVyLGk9YS5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIiksbj1bXTtsZXQgcyxvLGMsbCxoLHUsZDtmb3Iobz0wO288dDtvKyspe2g9bltvXT1uZXcgVWludDhBcnJheShlKTt1PW88MT9oOm5bby0xXTtkPW88Mj9oOm5bby0yXTtzPWRbMF08PDEzfGRbMV08PDEyfGRbMl08PDExfHVbMF08PDd8dVsxXTw8Nnx1WzJdPDw1fHVbM108PDQ7Zm9yKGM9MDtjPGU7YysrKXtoW2NdPWw9ci5yZWFkQml0KGkscyk7cz0oMzE3MzUmcyk8PDF8KGMrMzxlP2RbYyszXTw8MTE6MCl8KGMrNDxlP3VbYys0XTw8NDowKXxsfX1yZXR1cm4gbn0odCxhLG8pO2NvbnN0IGM9ISFuLGw9WWFbcl0uY29uY2F0KHMpO2wuc29ydCgoZSx0KT0+ZS55LXQueXx8ZS54LXQueCk7Y29uc3QgaD1sLmxlbmd0aCx1PW5ldyBJbnQ4QXJyYXkoaCksZD1uZXcgSW50OEFycmF5KGgpLGY9W107bGV0IGcscCxtPTAsYj0wLHk9MCx3PTA7Zm9yKHA9MDtwPGg7cCsrKXt1W3BdPWxbcF0ueDtkW3BdPWxbcF0ueTtiPU1hdGgubWluKGIsbFtwXS54KTt5PU1hdGgubWF4KHksbFtwXS54KTt3PU1hdGgubWluKHcsbFtwXS55KTtwPGgtMSYmbFtwXS55PT09bFtwKzFdLnkmJmxbcF0ueD09PWxbcCsxXS54LTE/bXw9MTw8aC0xLXA6Zi5wdXNoKHApfWNvbnN0IHg9Zi5sZW5ndGgsUz1uZXcgSW50OEFycmF5KHgpLGs9bmV3IEludDhBcnJheSh4KSxDPW5ldyBVaW50MTZBcnJheSh4KTtmb3IoZz0wO2c8eDtnKyspe3A9ZltnXTtTW2ddPWxbcF0ueDtrW2ddPWxbcF0ueTtDW2ddPTE8PGgtMS1wfWNvbnN0IHY9LWIsRj0tdyxUPXQteSxPPVFhW3JdO2xldCBEPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IE09W10sUj1vLmRlY29kZXIsTj1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgRSxMLF8sVSxqLFg9MCxxPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7aWYoaSl7WF49Ui5yZWFkQml0KE4sTyk7aWYoWCl7TS5wdXNoKEQpO2NvbnRpbnVlfX1EPW5ldyBVaW50OEFycmF5KEQpO00ucHVzaChEKTtmb3IoRT0wO0U8dDtFKyspe2lmKGMmJm5bZV1bRV0pe0RbRV09MDtjb250aW51ZX1pZihFPj12JiZFPFQmJmU+PUYpe3E9cTw8MSZtO2ZvcihwPTA7cDx4O3ArKyl7TD1lK2tbcF07Xz1FK1NbcF07VT1NW0xdW19dO2lmKFUpe1U9Q1twXTtxfD1VfX19ZWxzZXtxPTA7aj1oLTE7Zm9yKHA9MDtwPGg7cCsrLGotLSl7Xz1FK3VbcF07aWYoXz49MCYmXzx0KXtMPWUrZFtwXTtpZihMPj0wKXtVPU1bTF1bX107VSYmKHF8PVU8PGopfX19fWNvbnN0IGE9Ui5yZWFkQml0KE4scSk7RFtFXT1hfX1yZXR1cm4gTX1mdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KGUsdCxhLHIsaSxuLHMsbyxjKXtsZXQgbD1aYVthXS5jb2Rpbmc7MD09PWEmJihsPWwuY29uY2F0KFtvWzBdXSkpO2NvbnN0IGg9bC5sZW5ndGgsdT1uZXcgSW50MzJBcnJheShoKSxkPW5ldyBJbnQzMkFycmF5KGgpO2xldCBmO2ZvcihmPTA7ZjxoO2YrKyl7dVtmXT1sW2ZdLng7ZFtmXT1sW2ZdLnl9bGV0IGc9WmFbYV0ucmVmZXJlbmNlOzA9PT1hJiYoZz1nLmNvbmNhdChbb1sxXV0pKTtjb25zdCBwPWcubGVuZ3RoLG09bmV3IEludDMyQXJyYXkocCksYj1uZXcgSW50MzJBcnJheShwKTtmb3IoZj0wO2Y8cDtmKyspe21bZl09Z1tmXS54O2JbZl09Z1tmXS55fWNvbnN0IHk9clswXS5sZW5ndGgsdz1yLmxlbmd0aCx4PWVyW2FdLFM9W10saz1jLmRlY29kZXIsQz1jLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR1IiKTtsZXQgdj0wO2ZvcihsZXQgYT0wO2E8dDthKyspe2lmKHMpe3ZePWsucmVhZEJpdChDLHgpO2lmKHYpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInByZWRpY3Rpb24gaXMgbm90IHN1cHBvcnRlZCIpfWNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZSk7Uy5wdXNoKHQpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBvLGMsbD0wO2ZvcihmPTA7ZjxoO2YrKyl7bz1hK2RbZl07Yz1zK3VbZl07bzwwfHxjPDB8fGM+PWU/bDw8PTE6bD1sPDwxfFNbb11bY119Zm9yKGY9MDtmPHA7ZisrKXtvPWErYltmXS1uO2M9cyttW2ZdLWk7bzwwfHxvPj13fHxjPDB8fGM+PXk/bDw8PTE6bD1sPDwxfHJbb11bY119Y29uc3QgZz1rLnJlYWRCaXQoQyxsKTt0W3NdPWd9fXJldHVybiBTfWZ1bmN0aW9uIGRlY29kZVRleHRSZWdpb24oZSx0LGEscixpLG4scyxvLGMsbCxoLHUsZCxmLGcscCxtLGIseSl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IHc9W107bGV0IHgsUztmb3IoeD0wO3g8cjt4Kyspe1M9bmV3IFVpbnQ4QXJyYXkoYSk7aSYmUy5maWxsKGkpO3cucHVzaChTKX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDt4PTA7Zm9yKDt4PG47KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgaT0wO3M+MSYmKGk9ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IG49cyp2K2ksRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksVD10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgTz1vW0ZdLEQ9T1swXS5sZW5ndGgsTT1PLmxlbmd0aDtpZihUKXtjb25zdCBlPWRlY29kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayk7RCs9ZTtNKz10O089ZGVjb2RlUmVmaW5lbWVudChELE0sZyxPLChlPj4xKStkZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSwodD4+MSkrZGVjb2RlSW50ZWdlcihDLCJJQVJEWSIsayksITEscCxtKX1sZXQgUj0wO2w/MSZ1P1I9TS0xOnIrPU0tMTp1PjE/cis9RC0xOlI9RC0xO2NvbnN0IE49bi0oMSZ1PzA6TS0xKSxFPXItKDImdT9ELTE6MCk7bGV0IEwsXyxVO2lmKGwpZm9yKEw9MDtMPE07TCsrKXtTPXdbRStMXTtpZighUyljb250aW51ZTtVPU9bTF07Y29uc3QgZT1NYXRoLm1pbihhLU4sRCk7c3dpdGNoKGQpe2Nhc2UgMDpmb3IoXz0wO188ZTtfKyspU1tOK19dfD1VW19dO2JyZWFrO2Nhc2UgMjpmb3IoXz0wO188ZTtfKyspU1tOK19dXj1VW19dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX1lbHNlIGZvcihfPTA7XzxNO18rKyl7Uz13W04rX107aWYoUyl7VT1PW19dO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPEQ7TCsrKVNbRStMXXw9VVtMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPEQ7TCsrKVNbRStMXV49VVtMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19fXgrKztjb25zdCBqPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09ailicmVhaztyKz1SK2oraH19cmV0dXJuIHd9ZnVuY3Rpb24gcmVhZFNlZ21lbnRIZWFkZXIoZSx0KXtjb25zdCBhPXt9O2EubnVtYmVyPXJlYWRVaW50MzIoZSx0KTtjb25zdCByPWVbdCs0XSxpPTYzJnI7aWYoIUphW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPUphW2ldO2EuZGVmZXJyZWROb25SZXRhaW49ISEoMTI4JnIpO2NvbnN0IG49ISEoNjQmcikscz1lW3QrNV07bGV0IG89cz4+NSY3O2NvbnN0IGM9WzMxJnNdO2xldCBsPXQrNjtpZig3PT09cyl7bz01MzY4NzA5MTEmcmVhZFVpbnQzMihlLGwtMSk7bCs9MztsZXQgdD1vKzc+PjM7Y1swXT1lW2wrK107Zm9yKDstLXQ+MDspYy5wdXNoKGVbbCsrXSl9ZWxzZSBpZig1PT09c3x8Nj09PXMpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgcmVmZXJyZWQtdG8gZmxhZ3MiKTthLnJldGFpbkJpdHM9YztsZXQgaD00O2EubnVtYmVyPD0yNTY/aD0xOmEubnVtYmVyPD02NTUzNiYmKGg9Mik7Y29uc3QgdT1bXTtsZXQgZCxmO2ZvcihkPTA7ZDxvO2QrKyl7bGV0IHQ7dD0xPT09aD9lW2xdOjI9PT1oP3JlYWRVaW50MTYoZSxsKTpyZWFkVWludDMyKGUsbCk7dS5wdXNoKHQpO2wrPWh9YS5yZWZlcnJlZFRvPXU7aWYobil7YS5wYWdlQXNzb2NpYXRpb249cmVhZFVpbnQzMihlLGwpO2wrPTR9ZWxzZSBhLnBhZ2VBc3NvY2lhdGlvbj1lW2wrK107YS5sZW5ndGg9cmVhZFVpbnQzMihlLGwpO2wrPTQ7aWYoNDI5NDk2NzI5NT09PWEubGVuZ3RoKXtpZigzOCE9PWkpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgdW5rbm93biBzZWdtZW50IGxlbmd0aCIpO3tjb25zdCB0PXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSxsKSxyPSEhKDEmZVtsK3RyXSksaT02LG49bmV3IFVpbnQ4QXJyYXkoaSk7aWYoIXIpe25bMF09MjU1O25bMV09MTcyfW5bMl09dC5oZWlnaHQ+Pj4yNCYyNTU7blszXT10LmhlaWdodD4+MTYmMjU1O25bNF09dC5oZWlnaHQ+PjgmMjU1O25bNV09MjU1JnQuaGVpZ2h0O2ZvcihkPWwsZj1lLmxlbmd0aDtkPGY7ZCsrKXtsZXQgdD0wO2Zvcig7dDxpJiZuW3RdPT09ZVtkK3RdOyl0Kys7aWYodD09PWkpe2EubGVuZ3RoPWQraTticmVha319aWYoNDI5NDk2NzI5NT09PWEubGVuZ3RoKXRocm93IG5ldyBKYmlnMkVycm9yKCJzZWdtZW50IGVuZCB3YXMgbm90IGZvdW5kIil9fWEuaGVhZGVyRW5kPWw7cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFNlZ21lbnRzKGUsdCxhLHIpe2NvbnN0IGk9W107bGV0IG49YTtmb3IoO248cjspe2NvbnN0IGE9cmVhZFNlZ21lbnRIZWFkZXIodCxuKTtuPWEuaGVhZGVyRW5kO2NvbnN0IHI9e2hlYWRlcjphLGRhdGE6dH07aWYoIWUucmFuZG9tQWNjZXNzKXtyLnN0YXJ0PW47bis9YS5sZW5ndGg7ci5lbmQ9bn1pLnB1c2gocik7aWYoNTE9PT1hLnR5cGUpYnJlYWt9aWYoZS5yYW5kb21BY2Nlc3MpZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtpW2VdLnN0YXJ0PW47bis9aVtlXS5oZWFkZXIubGVuZ3RoO2lbZV0uZW5kPW59cmV0dXJuIGl9ZnVuY3Rpb24gcmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHQpe3JldHVybnt3aWR0aDpyZWFkVWludDMyKGUsdCksaGVpZ2h0OnJlYWRVaW50MzIoZSx0KzQpLHg6cmVhZFVpbnQzMihlLHQrOCkseTpyZWFkVWludDMyKGUsdCsxMiksY29tYmluYXRpb25PcGVyYXRvcjo3JmVbdCsxNl19fWNvbnN0IHRyPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBuLHMsbyxjLGw9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PXJlYWRVaW50MTYocixsKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7bCs9MjtpZighZS5odWZmbWFuKXtjPTA9PT1lLnRlbXBsYXRlPzQ6MTtzPVtdO2ZvcihvPTA7bzxjO28rKyl7cy5wdXNoKHt4OnJlYWRJbnQ4KHIsbCkseTpyZWFkSW50OChyLGwrMSl9KTtsKz0yfWUuYXQ9c31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7cz1bXTtmb3Iobz0wO288MjtvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1lLnJlZmluZW1lbnRBdD1zfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9cmVhZFVpbnQzMihyLGwpO2wrPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9cmVhZFVpbnQzMihyLGwpO2wrPTQ7bj1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixsLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgaD17fTtoLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGwpO2wrPXRyO2NvbnN0IHU9cmVhZFVpbnQxNihyLGwpO2wrPTI7aC5odWZmbWFuPSEhKDEmdSk7aC5yZWZpbmVtZW50PSEhKDImdSk7aC5sb2dTdHJpcFNpemU9dT4+MiYzO2guc3RyaXBTaXplPTE8PGgubG9nU3RyaXBTaXplO2gucmVmZXJlbmNlQ29ybmVyPXU+PjQmMztoLnRyYW5zcG9zZWQ9ISEoNjQmdSk7aC5jb21iaW5hdGlvbk9wZXJhdG9yPXU+PjcmMztoLmRlZmF1bHRQaXhlbFZhbHVlPXU+PjkmMTtoLmRzT2Zmc2V0PXU8PDE3Pj4yNztoLnJlZmluZW1lbnRUZW1wbGF0ZT11Pj4xNSYxO2lmKGguaHVmZm1hbil7Y29uc3QgZT1yZWFkVWludDE2KHIsbCk7bCs9MjtoLmh1ZmZtYW5GUz0zJmU7aC5odWZmbWFuRFM9ZT4+MiYzO2guaHVmZm1hbkRUPWU+PjQmMztoLmh1ZmZtYW5SZWZpbmVtZW50RFc9ZT4+NiYzO2guaHVmZm1hblJlZmluZW1lbnRESD1lPj44JjM7aC5odWZmbWFuUmVmaW5lbWVudERYPWU+PjEwJjM7aC5odWZmbWFuUmVmaW5lbWVudERZPWU+PjEyJjM7aC5odWZmbWFuUmVmaW5lbWVudFNpemVTZWxlY3Rvcj0hISgxNjM4NCZlKX1pZihoLnJlZmluZW1lbnQmJiFoLnJlZmluZW1lbnRUZW1wbGF0ZSl7cz1bXTtmb3Iobz0wO288MjtvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1oLnJlZmluZW1lbnRBdD1zfWgubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXM9cmVhZFVpbnQzMihyLGwpO2wrPTQ7bj1baCxhLnJlZmVycmVkVG8scixsLGldO2JyZWFrO2Nhc2UgMTY6Y29uc3QgZD17fSxmPXJbbCsrXTtkLm1tcj0hISgxJmYpO2QudGVtcGxhdGU9Zj4+MSYzO2QucGF0dGVybldpZHRoPXJbbCsrXTtkLnBhdHRlcm5IZWlnaHQ9cltsKytdO2QubWF4UGF0dGVybkluZGV4PXJlYWRVaW50MzIocixsKTtsKz00O249W2QsYS5udW1iZXIscixsLGldO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpjb25zdCBnPXt9O2cuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsbCk7bCs9dHI7Y29uc3QgcD1yW2wrK107Zy5tbXI9ISEoMSZwKTtnLnRlbXBsYXRlPXA+PjEmMztnLmVuYWJsZVNraXA9ISEoOCZwKTtnLmNvbWJpbmF0aW9uT3BlcmF0b3I9cD4+NCY3O2cuZGVmYXVsdFBpeGVsVmFsdWU9cD4+NyYxO2cuZ3JpZFdpZHRoPXJlYWRVaW50MzIocixsKTtsKz00O2cuZ3JpZEhlaWdodD1yZWFkVWludDMyKHIsbCk7bCs9NDtnLmdyaWRPZmZzZXRYPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihyLGwpO2wrPTQ7Zy5ncmlkT2Zmc2V0WT00Mjk0OTY3Mjk1JnJlYWRVaW50MzIocixsKTtsKz00O2cuZ3JpZFZlY3Rvclg9cmVhZFVpbnQxNihyLGwpO2wrPTI7Zy5ncmlkVmVjdG9yWT1yZWFkVWludDE2KHIsbCk7bCs9MjtuPVtnLGEucmVmZXJyZWRUbyxyLGwsaV07YnJlYWs7Y2FzZSAzODpjYXNlIDM5OmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixsKTtsKz10cjtjb25zdCBiPXJbbCsrXTttLm1tcj0hISgxJmIpO20udGVtcGxhdGU9Yj4+MSYzO20ucHJlZGljdGlvbj0hISg4JmIpO2lmKCFtLm1tcil7Yz0wPT09bS50ZW1wbGF0ZT80OjE7cz1bXTtmb3Iobz0wO288YztvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1tLmF0PXN9bj1bbSxyLGwsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCB5PXt3aWR0aDpyZWFkVWludDMyKHIsbCksaGVpZ2h0OnJlYWRVaW50MzIocixsKzQpLHJlc29sdXRpb25YOnJlYWRVaW50MzIocixsKzgpLHJlc29sdXRpb25ZOnJlYWRVaW50MzIocixsKzEyKX07NDI5NDk2NzI5NT09PXkuaGVpZ2h0JiZkZWxldGUgeS5oZWlnaHQ7Y29uc3Qgdz1yW2wrMTZdO3JlYWRVaW50MTYocixsKzE3KTt5Lmxvc3NsZXNzPSEhKDEmdyk7eS5yZWZpbmVtZW50PSEhKDImdyk7eS5kZWZhdWx0UGl4ZWxWYWx1ZT13Pj4yJjE7eS5jb21iaW5hdGlvbk9wZXJhdG9yPXc+PjMmMzt5LnJlcXVpcmVzQnVmZmVyPSEhKDMyJncpO3kuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JncpO249W3ldO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpuPVthLm51bWJlcixyLGwsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCBoPSJvbiIrYS50eXBlTmFtZTtoIGluIHQmJnRbaF0uYXBwbHkodCxuKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLGk9ZS5oZWlnaHQsbj1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqbisoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxpO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1ufWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8aTtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9bn1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IGk9ZS5pbmZvLG49bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsaS53aWR0aCxpLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsbik7dGhpcy5kcmF3Qml0bWFwKGkscyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGksbil7bGV0IHMsbztpZihlLmh1ZmZtYW4pe3M9ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLGksbixzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTppPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIG49Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6aSx0YWJsZUJpdG1hcFNpemU6bix0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtvPW5ldyBSZWFkZXIocixpLG4pfWxldCBjPXRoaXMuc3ltYm9scztjfHwodGhpcy5zeW1ib2xzPWM9e30pO2NvbnN0IGw9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1jW2VdO3QmJmwucHVzaCguLi50KX1jb25zdCBoPW5ldyBEZWNvZGluZ0NvbnRleHQocixpLG4pO2NbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBkPVtdO2xldCBmPTAsZz1sb2cyKGEubGVuZ3RoK3IpO2NvbnN0IHA9aC5kZWNvZGVyLG09aC5jb250ZXh0Q2FjaGU7bGV0IGIseTtpZihlKXtiPWdldFN0YW5kYXJkVGFibGUoMSk7eT1bXTtnPU1hdGgubWF4KGcsMSl9Zm9yKDtkLmxlbmd0aDxyOyl7Zis9ZT9uLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKHUpOmRlY29kZUludGVnZXIobSwiSUFESCIscCk7bGV0IHI9MCxpPTA7Y29uc3QgYj1lP3kubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBiPWU/bi50YWJsZURlbHRhV2lkdGguZGVjb2RlKHUpOmRlY29kZUludGVnZXIobSwiSUFEVyIscCk7aWYobnVsbD09PWIpYnJlYWs7cis9YjtpKz1yO2xldCB3O2lmKHQpe2NvbnN0IGk9ZGVjb2RlSW50ZWdlcihtLCJJQUFJIixwKTtpZihpPjEpdz1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGYsMCxpLDEsYS5jb25jYXQoZCksZywwLDAsMSwwLG4sYyxsLGgsMCx1KTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChtLHAsZyksdD1kZWNvZGVJbnRlZ2VyKG0sIklBUkRYIixwKSxpPWRlY29kZUludGVnZXIobSwiSUFSRFkiLHApO3c9ZGVjb2RlUmVmaW5lbWVudChyLGYsYyxlPGEubGVuZ3RoP2FbZV06ZFtlLWEubGVuZ3RoXSx0LGksITEsbCxoKX1kLnB1c2godyl9ZWxzZSBpZihlKXkucHVzaChyKTtlbHNle3c9ZGVjb2RlQml0bWFwKCExLHIsZixzLCExLG51bGwsbyxoKTtkLnB1c2godyl9fWlmKGUmJiF0KXtjb25zdCBlPW4udGFibGVCaXRtYXBTaXplLmRlY29kZSh1KTt1LmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcCh1LGksZik7ZWxzZXtjb25zdCBhPXUuZW5kLHI9dS5wb3NpdGlvbitlO3UuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAodSxpLGYsITEpO3UuZW5kPWE7dS5wb3NpdGlvbj1yfWNvbnN0IGE9eS5sZW5ndGg7aWYoYj09PWEtMSlkLnB1c2godCk7ZWxzZXtsZXQgZSxyLGksbixzLG89MDtmb3IoZT1iO2U8YTtlKyspe249eVtlXTtpPW8rbjtzPVtdO2ZvcihyPTA7cjxmO3IrKylzLnB1c2godFtyXS5zdWJhcnJheShvLGkpKTtkLnB1c2gocyk7bz1pfX19fWNvbnN0IHc9W10seD1bXTtsZXQgUyxrLEM9ITE7Y29uc3Qgdj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8djspe2xldCB0PWU/Yi5kZWNvZGUodSk6ZGVjb2RlSW50ZWdlcihtLCJJQUVYIixwKTtmb3IoO3QtLTspeC5wdXNoKEMpO0M9IUN9Zm9yKFM9MCxrPWEubGVuZ3RoO1M8aztTKyspeFtTXSYmdy5wdXNoKGFbU10pO2ZvcihsZXQgZT0wO2U8cjtTKyssZSsrKXhbU10mJncucHVzaChkW2VdKTtyZXR1cm4gd30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxsLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMscyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsaCxvKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBuPWUuaW5mbztsZXQgcyxvO2NvbnN0IGM9dGhpcy5zeW1ib2xzLGw9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1jW2VdO3QmJmwucHVzaCguLi50KX1jb25zdCBoPWxvZzIobC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7bz1uZXcgUmVhZGVyKGEscixpKTtzPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsaSl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9aS5yZWFkQml0cyg0KTtuLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShuLCExKTtuLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUoaSk7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1pLnJlYWRCaXRzKDIpKzM7YT1uW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1pLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1pLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7bi5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7bi5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fWkuYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKG4sITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxsLmxlbmd0aCxvKX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGQ9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LG4ud2lkdGgsbi5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGwsaCxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IscyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCx1LGUubG9nU3RyaXBTaXplLG8pO3RoaXMuZHJhd0JpdG1hcChuLGQpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsaSl7bGV0IG49dGhpcy5wYXR0ZXJucztufHwodGhpcy5wYXR0ZXJucz1uPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpO25bdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixpLG4pe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09aSYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLGksITEsbnVsbCxzLG4pLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10saT10KmUsbj1pK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShpLG4pKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBuPXRoaXMucGF0dGVybnNbdFswXV0scz1lLmluZm8sbz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxjPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1LGQsZixnKXtpZihzKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09byl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7b30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgcD1bXTtsZXQgbSxiLHk7Zm9yKG09MDttPGk7bSsrKXt5PW5ldyBVaW50OEFycmF5KHIpO24mJnkuZmlsbChuKTtwLnB1c2goeSl9Y29uc3Qgdz10Lmxlbmd0aCx4PXRbMF0sUz14WzBdLmxlbmd0aCxrPXgubGVuZ3RoLEM9bG9nMih3KSx2PVtdO2lmKCFlKXt2LnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZ2LnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgRj1bXTtsZXQgVCxPLEQsTSxSLE4sRSxMLF8sVSxqO2UmJihUPW5ldyBSZWFkZXIoZy5kYXRhLGcuc3RhcnQsZy5lbmQpKTtmb3IobT1DLTE7bT49MDttLS0pe089ZT9kZWNvZGVNTVJCaXRtYXAoVCxjLGwsITApOmRlY29kZUJpdG1hcCghMSxjLGwsYSwhMSxudWxsLHYsZyk7RlttXT1PfWZvcihEPTA7RDxsO0QrKylmb3IoTT0wO008YztNKyspe1I9MDtOPTA7Zm9yKGI9Qy0xO2I+PTA7Yi0tKXtSXj1GW2JdW0RdW01dO058PVI8PGJ9RT10W05dO0w9aCtEKmYrTSpkPj44O189dStEKmQtTSpmPj44O2lmKEw+PTAmJkwrUzw9ciYmXz49MCYmXytrPD1pKWZvcihtPTA7bTxrO20rKyl7aj1wW18rbV07VT1FW21dO2ZvcihiPTA7YjxTO2IrKylqW0wrYl18PVVbYl19ZWxzZXtsZXQgZSx0O2ZvcihtPTA7bTxrO20rKyl7dD1fK207aWYoISh0PDB8fHQ+PWkpKXtqPXBbdF07VT1FW21dO2ZvcihiPTA7YjxTO2IrKyl7ZT1MK2I7ZT49MCYmZTxyJiYoaltlXXw9VVtiXSl9fX19fXJldHVybiBwfShlLm1tcixuLGUudGVtcGxhdGUscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3Rvclksbyk7dGhpcy5kcmF3Qml0bWFwKHMsYyl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCsxKSxuPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrNSkscz1uZXcgUmVhZGVyKGUsdCs5LGEpLG89MSsocj4+MSY3KSxjPTErKHI+PjQmNyksbD1bXTtsZXQgaCx1LGQ9aTtkb3toPXMucmVhZEJpdHMobyk7dT1zLnJlYWRCaXRzKGMpO2wucHVzaChuZXcgSHVmZm1hbkxpbmUoW2QsaCx1LDBdKSk7ZCs9MTw8dX13aGlsZShkPG4pO2g9cy5yZWFkQml0cyhvKTtsLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsaCwzMiwwLCJsb3dlciJdKSk7aD1zLnJlYWRCaXRzKG8pO2wucHVzaChuZXcgSHVmZm1hbkxpbmUoW24saCwzMiwwXSkpO2lmKDEmcil7aD1zLnJlYWRCaXRzKG8pO2wucHVzaChuZXcgSHVmZm1hbkxpbmUoW2gsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShsLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBpLG4scyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO2k9YztuPTA7Zm9yKDtuPHQ7KXtzPWVbbl07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9aTtpKyt9bisrfW8rK319fWNvbnN0IGFyPXt9O2Z1bmN0aW9uIGdldFN0YW5kYXJkVGFibGUoZSl7bGV0IHQsYT1hcltlXTtpZihhKXJldHVybiBhO3N3aXRjaChlKXtjYXNlIDE6dD1bWzAsMSw0LDBdLFsxNiwyLDgsMl0sWzI3MiwzLDE2LDZdLFs2NTgwOCwzLDMyLDddXTticmVhaztjYXNlIDI6dD1bWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbNzUsNiwzMiw2Ml0sWzYsNjNdXTticmVhaztjYXNlIDM6dD1bWy0yNTYsOCw4LDI1NF0sWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbLTI1Nyw4LDMyLDI1NSwibG93ZXIiXSxbNzUsNywzMiwxMjZdLFs2LDYyXV07YnJlYWs7Y2FzZSA0OnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWzc2LDUsMzIsMzFdXTticmVhaztjYXNlIDU6dD1bWy0yNTUsNyw4LDEyNl0sWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbLTI1Niw3LDMyLDEyNywibG93ZXIiXSxbNzYsNiwzMiw2Ml1dO2JyZWFrO2Nhc2UgNjp0PVtbLTIwNDgsNSwxMCwyOF0sWy0xMDI0LDQsOSw4XSxbLTUxMiw0LDgsOV0sWy0yNTYsNCw3LDEwXSxbLTEyOCw1LDYsMjldLFstNjQsNSw1LDMwXSxbLTMyLDQsNSwxMV0sWzAsMiw3LDBdLFsxMjgsMyw3LDJdLFsyNTYsMyw4LDNdLFs1MTIsNCw5LDEyXSxbMTAyNCw0LDEwLDEzXSxbLTIwNDksNiwzMiw2MiwibG93ZXIiXSxbMjA0OCw2LDMyLDYzXV07YnJlYWs7Y2FzZSA3OnQ9W1stMTAyNCw0LDksOF0sWy01MTIsMyw4LDBdLFstMjU2LDQsNyw5XSxbLTEyOCw1LDYsMjZdLFstNjQsNSw1LDI3XSxbLTMyLDQsNSwxMF0sWzAsNCw1LDExXSxbMzIsNSw1LDI4XSxbNjQsNSw2LDI5XSxbMTI4LDQsNywxMl0sWzI1NiwzLDgsMV0sWzUxMiwzLDksMl0sWzEwMjQsMywxMCwzXSxbLTEwMjUsNSwzMiwzMCwibG93ZXIiXSxbMjA0OCw1LDMyLDMxXV07YnJlYWs7Y2FzZSA4OnQ9W1stMTUsOCwzLDI1Ml0sWy03LDksMSw1MDhdLFstNSw4LDEsMjUzXSxbLTMsOSwwLDUwOV0sWy0yLDcsMCwxMjRdLFstMSw0LDAsMTBdLFswLDIsMSwwXSxbMiw1LDAsMjZdLFszLDYsMCw1OF0sWzQsMyw0LDRdLFsyMCw2LDEsNTldLFsyMiw0LDQsMTFdLFszOCw0LDUsMTJdLFs3MCw1LDYsMjddLFsxMzQsNSw3LDI4XSxbMjYyLDYsNyw2MF0sWzM5MCw3LDgsMTI1XSxbNjQ2LDYsMTAsNjFdLFstMTYsOSwzMiw1MTAsImxvd2VyIl0sWzE2NzAsOSwzMiw1MTFdLFsyLDFdXTticmVhaztjYXNlIDk6dD1bWy0zMSw4LDQsMjUyXSxbLTE1LDksMiw1MDhdLFstMTEsOCwyLDI1M10sWy03LDksMSw1MDldLFstNSw3LDEsMTI0XSxbLTMsNCwxLDEwXSxbLTEsMywxLDJdLFsxLDMsMSwzXSxbMyw1LDEsMjZdLFs1LDYsMSw1OF0sWzcsMyw1LDRdLFszOSw2LDIsNTldLFs0Myw0LDUsMTFdLFs3NSw0LDYsMTJdLFsxMzksNSw3LDI3XSxbMjY3LDUsOCwyOF0sWzUyMyw2LDgsNjBdLFs3NzksNyw5LDEyNV0sWzEyOTEsNiwxMSw2MV0sWy0zMiw5LDMyLDUxMCwibG93ZXIiXSxbMzMzOSw5LDMyLDUxMV0sWzIsMF1dO2JyZWFrO2Nhc2UgMTA6dD1bWy0yMSw3LDQsMTIyXSxbLTUsOCwwLDI1Ml0sWy00LDcsMCwxMjNdLFstMyw1LDAsMjRdLFstMiwyLDIsMF0sWzIsNSwwLDI1XSxbMyw2LDAsNTRdLFs0LDcsMCwxMjRdLFs1LDgsMCwyNTNdLFs2LDIsNiwxXSxbNzAsNSw1LDI2XSxbMTAyLDYsNSw1NV0sWzEzNCw2LDYsNTZdLFsxOTgsNiw3LDU3XSxbMzI2LDYsOCw1OF0sWzU4Miw2LDksNTldLFsxMDk0LDYsMTAsNjBdLFsyMTE4LDcsMTEsMTI1XSxbLTIyLDgsMzIsMjU0LCJsb3dlciJdLFs0MTY2LDgsMzIsMjU1XSxbMiwyXV07YnJlYWs7Y2FzZSAxMTp0PVtbMSwxLDAsMF0sWzIsMiwxLDJdLFs0LDQsMCwxMl0sWzUsNCwxLDEzXSxbNyw1LDEsMjhdLFs5LDUsMiwyOV0sWzEzLDYsMiw2MF0sWzE3LDcsMiwxMjJdLFsyMSw3LDMsMTIzXSxbMjksNyw0LDEyNF0sWzQ1LDcsNSwxMjVdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxMjp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMSw2XSxbNSw1LDAsMjhdLFs2LDUsMSwyOV0sWzgsNiwxLDYwXSxbMTAsNywwLDEyMl0sWzExLDcsMSwxMjNdLFsxMyw3LDIsMTI0XSxbMTcsNywzLDEyNV0sWzI1LDcsNCwxMjZdLFs0MSw4LDUsMjU0XSxbNzMsOCwzMiwyNTVdXTticmVhaztjYXNlIDEzOnQ9W1sxLDEsMCwwXSxbMiwzLDAsNF0sWzMsNCwwLDEyXSxbNCw1LDAsMjhdLFs1LDQsMSwxM10sWzcsMywzLDVdLFsxNSw2LDEsNThdLFsxNyw2LDIsNTldLFsyMSw2LDMsNjBdLFsyOSw2LDQsNjFdLFs0NSw2LDUsNjJdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxNDp0PVtbLTIsMywwLDRdLFstMSwzLDAsNV0sWzAsMSwwLDBdLFsxLDMsMCw2XSxbMiwzLDAsN11dO2JyZWFrO2Nhc2UgMTU6dD1bWy0yNCw3LDQsMTI0XSxbLTgsNiwyLDYwXSxbLTQsNSwxLDI4XSxbLTIsNCwwLDEyXSxbLTEsMywwLDRdLFswLDEsMCwwXSxbMSwzLDAsNV0sWzIsNCwwLDEzXSxbMyw1LDEsMjldLFs1LDYsMiw2MV0sWzksNyw0LDEyNV0sWy0yNSw3LDMyLDEyNiwibG93ZXIiXSxbMjUsNywzMiwxMjddXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzdGFuZGFyZCB0YWJsZSBCLiR7ZX0gZG9lcyBub3QgZXhpc3RgKX1mb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspdFtlXT1uZXcgSHVmZm1hbkxpbmUodFtlXSk7YT1uZXcgSHVmZm1hblRhYmxlKHQsITApO2FyW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBpPTAsbj10Lmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPWFbdFtpXV07aWYobil7aWYoZT09PXIpcmV0dXJuIG47cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IGk9bmV3IENDSVRURmF4RGVjb2RlcihlLHtLOi0xLENvbHVtbnM6dCxSb3dzOmEsQmxhY2tJczE6ITAsRW5kT2ZCbG9jazpyfSksbj1bXTtsZXQgcyxvPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7bi5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7cz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09cyl7cz0wO289ITB9YT03fWVbcl09cz4+YSYxO2EtLX19aWYociYmIW8pe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gbn1jbGFzcyBKYmlnMkltYWdle3BhcnNlQ2h1bmtzKGUpe3JldHVybiBmdW5jdGlvbiBwYXJzZUpiaWcyQ2h1bmtzKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZVNlZ21lbnRWaXNpdG9yO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2FdO3Byb2Nlc3NTZWdtZW50cyhyZWFkU2VnbWVudHMoe30sci5kYXRhLHIuc3RhcnQsci5lbmQpLHQpfXJldHVybiB0LmJ1ZmZlcn0oZSl9cGFyc2UoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IEpiaWcySW1hZ2UucGFyc2UiKX19Y2xhc3MgSmJpZzJTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9ZGVjb2RlSW1hZ2UoZSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fD10aGlzLmJ5dGVzO2NvbnN0IHQ9bmV3IEpiaWcySW1hZ2UsYT1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgdD1lLmdldEJ5dGVzKCk7YS5wdXNoKHtkYXRhOnQsc3RhcnQ6MCxlbmQ6dC5sZW5ndGh9KX19YS5wdXNoKHtkYXRhOmUsc3RhcnQ6MCxlbmQ6ZS5sZW5ndGh9KTtjb25zdCByPXQucGFyc2VDaHVua3MoYSksaT1yLmxlbmd0aDtmb3IobGV0IGU9MDtlPGk7ZSsrKXJbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBKcHhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soZSl7dW5yZWFjaGFibGUoIkpweFN0cmVhbS5yZWFkQmxvY2siKX1nZXQgaXNBc3luY0RlY29kZXIoKXtyZXR1cm4hMH1hc3luYyBkZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1hd2FpdCBKcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsaT17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtpLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtpLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1pfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3QgaT10aGlzLmx6d1N0YXRlO2lmKCFpKXJldHVybjtjb25zdCBuPWkuZWFybHlDaGFuZ2U7bGV0IHM9aS5uZXh0Q29kZTtjb25zdCBvPWkuZGljdGlvbmFyeVZhbHVlcyxjPWkuZGljdGlvbmFyeUxlbmd0aHMsbD1pLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9aS5jb2RlTGVuZ3RoLHU9aS5wcmV2Q29kZTtjb25zdCBkPWkuY3VycmVudFNlcXVlbmNlO2xldCBmPWkuY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxpPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKGkpe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytuJnMrbi0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK24pLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19aS5uZXh0Q29kZT1zO2kuY29kZUxlbmd0aD1oO2kucHJldkNvZGU9dTtpLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3Qgcj10aGlzLnByZWRpY3Rvcj1hLmdldCgiUHJlZGljdG9yIil8fDE7aWYocjw9MSlyZXR1cm4gZTtpZigyIT09ciYmKHI8MTB8fHI+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke3J9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PXI/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBpPXRoaXMuY29sb3JzPWEuZ2V0KCJDb2xvcnMiKXx8MSxuPXRoaXMuYml0cz1hLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LHM9dGhpcy5jb2x1bW5zPWEuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1pKm4rNz4+Mzt0aGlzLnJvd0J5dGVzPXMqaSpuKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGE9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxyPXRoaXMuYml0cyxpPXRoaXMuY29sb3JzLG49dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IW4ubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgcyxvPTAsYz0wLGw9MCxoPTAsdT10O2lmKDE9PT1yJiYxPT09aSlmb3Iocz0wO3M8ZTsrK3Mpe2xldCBlPW5bc11ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2FbdSsrXT1lfWVsc2UgaWYoOD09PXIpe2ZvcihzPTA7czxpOysrcylhW3UrK109bltzXTtmb3IoO3M8ZTsrK3Mpe2FbdV09YVt1LWldK25bc107dSsrfX1lbHNlIGlmKDE2PT09cil7Y29uc3QgdD0yKmk7Zm9yKHM9MDtzPHQ7KytzKWFbdSsrXT1uW3NdO2Zvcig7czxlO3MrPTIpe2NvbnN0IGU9KCgyNTUmbltzXSk8PDgpKygyNTUmbltzKzFdKSsoKDI1NSZhW3UtdF0pPDw4KSsoMjU1JmFbdS10KzFdKTthW3UrK109ZT4+OCYyNTU7YVt1KytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaSsxKSx1PSgxPDxyKS0xO2xldCBkPTAsZj10O2NvbnN0IGc9dGhpcy5jb2x1bW5zO2ZvcihzPTA7czxnOysrcylmb3IobGV0IHQ9MDt0PGk7Kyt0KXtpZihsPHIpe289bzw8OHwyNTUmbltkKytdO2wrPTh9ZVt0XT1lW3RdKyhvPj5sLXIpJnU7bC09cjtjPWM8PHJ8ZVt0XTtoKz1yO2lmKGg+PTgpe2FbZisrXT1jPj5oLTgmMjU1O2gtPTh9fWg+MCYmKGFbZisrXT0oYzw8OC1oKSsobyYoMTw8OC1oKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxhPXRoaXMuc3RyZWFtLmdldEJ5dGUoKSxyPXRoaXMuc3RyZWFtLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFyLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxuPXRoaXMuZW5zdXJlQnVmZmVyKGkrZSk7bGV0IHM9bi5zdWJhcnJheShpLWUsaSk7MD09PXMubGVuZ3RoJiYocz1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sYyxsLGg9aTtzd2l0Y2goYSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbyluW2grK109cltvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKW5baCsrXT1yW29dO2Zvcig7bzxlOysrbyl7bltoXT1uW2gtdF0rcltvXSYyNTU7aCsrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pbltoKytdPXNbb10rcltvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbyluW2grK109KHNbb10+PjEpK3Jbb107Zm9yKDtvPGU7KytvKXtuW2hdPShzW29dK25baC10XT4+MSkrcltvXSYyNTU7aCsrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2M9c1tvXTtsPXJbb107bltoKytdPWMrbH1mb3IoO288ZTsrK28pe2M9c1tvXTtjb25zdCBlPXNbby10XSxhPW5baC10XSxpPWErYy1lO2xldCB1PWktYTt1PDAmJih1PS11KTtsZXQgZD1pLWM7ZDwwJiYoZD0tZCk7bGV0IGY9aS1lO2Y8MCYmKGY9LWYpO2w9cltvXTtuW2grK109dTw9ZCYmdTw9Zj9hK2w6ZDw9Zj9jK2w6ZStsfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9ZVswXTtpZihyPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7dFthKytdPWVbMV07aWYocj4wKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKHIpO3Quc2V0KGUsYSk7YSs9cn19ZWxzZXtyPTI1Ny1yO3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3QuZmlsbChlWzFdLGEsYStyKTthKz1yfXRoaXMuYnVmZmVyTGVuZ3RoPWF9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmE9ITEscmVjb3ZlcnlNb2RlOnI9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9YTt0aGlzLnJlY292ZXJ5TW9kZT1yO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1zYTspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1zYSl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gYTtjYXNlIjw8Ijpjb25zdCByPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1zYTspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXNhKWJyZWFrO3Iuc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PXNhKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gcjt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0ocixlKTpyO3RoaXMuc2hpZnQoKTtyZXR1cm4gcjtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGE9ZS5wb3M7bGV0IHIsaSxuPTA7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PW4pbj02OT09PXI/MTowO2Vsc2UgaWYoMT09PW4pbj03Mz09PXI/MjowO2Vsc2UgaWYoMzI9PT1yfHwxMD09PXJ8fDEzPT09cil7aT1lLnBvcztjb25zdCBhPWUucGVla0J5dGVzKDE1KSxzPWEubGVuZ3RoO2lmKDA9PT1zKWJyZWFrO2ZvcihsZXQgZT0wO2U8cztlKyspe3I9YVtlXTtpZigoMCE9PXJ8fDA9PT1hW2UrMV0pJiYoMTAhPT1yJiYxMyE9PXImJihyPDMyfHxyPjEyNykpKXtuPTA7YnJlYWt9fWlmKDIhPT1uKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShlLnBlZWtCeXRlcyg3NSkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBjPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PXNhKXtuPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgYT10W2UuY21kXTtpZighYSl7bj0wO2JyZWFrfWlmKGEudmFyaWFibGVBcmdzP2M8PWEubnVtQXJnczpjPT09YS5udW1BcmdzKWJyZWFrO2M9MDtjb250aW51ZX1jKyt9aWYoMj09PW4pYnJlYWt9ZWxzZSBuPTA7aWYoLTE9PT1yKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYoaSl7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1pKSl9fWxldCBzPTQ7ZS5za2lwKC1zKTtyPWUucGVla0J5dGUoKTtlLnNraXAocyk7aXNXaGl0ZVNwYWNlKHIpfHxzLS07cmV0dXJuIGUucG9zLXMtYX1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGEscixpPSExO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWEpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6aT0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDpyPWUuZ2V0VWludDE2KCk7cj4yP2Uuc2tpcChyLTIpOmUuc2tpcCgtMil9aWYoaSlicmVha31jb25zdCBuPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1hKXtjb25zdCB0PWUucG9zO2E9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGEpOyl7ZS5za2lwKCk7YT1lLnBlZWtCeXRlKCl9aWYoNjI9PT1hKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCByPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSkmJjYyIT09YTspO2NvbnN0IHI9ZS5wb3MtdDtpZigtMT09PWEpe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxhPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PWEpYT02OT09PXQ/MTowO2Vsc2UgaWYoMT09PWEpYT03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PWEpYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPXQuc3RyZWFtLHI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PXNhOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXNhKWJyZWFrO3JbdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihpPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZihyLkZ8fHIuRmlsdGVyKTtsZXQgcztpZihuIGluc3RhbmNlb2YgTmFtZSlzPW4ubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9dGhpcy54cmVmLmZldGNoSWZSZWYoblswXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihzPWUubmFtZSl9Y29uc3Qgbz1hLnBvcztsZXQgYyxsO3N3aXRjaChzKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmM9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGEpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmM9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yz10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztkZWZhdWx0OmM9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChhKX1pZihjPDFlMyYmaT4wKXtjb25zdCBlPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztsPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxhPWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPGEtMTspdC5wdXNoKGVbcisrXTw8OHxlW3IrK10pO3I8YSYmdC5wdXNoKGVbcl0pO3JldHVybiBhKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGEuZ2V0Qnl0ZXMoaStjKSk7YS5wb3M9ZTtjb25zdCByPXRoaXMuaW1hZ2VDYWNoZVtsXTtpZih2b2lkIDAhPT1yKXt0aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7ci5yZXNldCgpO3JldHVybiByfX1jb25zdCBoPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gciloLnNldChlLHJbZV0pO2xldCB1PWEubWFrZVN1YlN0cmVhbShvLGMsaCk7ZSYmKHU9ZS5jcmVhdGVTdHJlYW0odSxjKSk7dT10aGlzLmZpbHRlcih1LGgsYyk7dS5kaWN0PWg7aWYodm9pZCAwIT09bCl7dS5jYWNoZUtleT0iaW5saW5lX2ltZ18iKyArK3RoaXMuX2ltYWdlSWQ7dGhpcy5pbWFnZUNhY2hlW2xdPXV9dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiB1fSNxKGUpe2NvbnN0e3N0cmVhbTp0fT10aGlzLmxleGVyO3QucG9zPWU7Y29uc3QgYT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDBdKSxyPWEubGVuZ3RoLGk9W25ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTddKV0sbj05LXI7Zm9yKDt0LnBvczx0LmVuZDspe2NvbnN0IHM9dC5wZWVrQnl0ZXMoMjA0OCksbz1zLmxlbmd0aC05O2lmKG88PTApYnJlYWs7bGV0IGM9MDtmb3IoO2M8bzspe2xldCBvPTA7Zm9yKDtvPHImJnNbYytvXT09PWFbb107KW8rKztpZihvPj1yKXtsZXQgcj0hMTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJnNbYytvK2ldPT09ZVtpXTspaSsrO2lmKGk+PW4pe3I9ITA7YnJlYWt9aWYoaT49dCl7aWYoaXNXaGl0ZVNwYWNlKHNbYytvK2ldKSl7aW5mbyhgRm91bmQgIiR7Ynl0ZXNUb1N0cmluZyhbLi4uYSwuLi5lXSl9IiB3aGVuIHNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuYCk7cj0hMH1icmVha319aWYocil7dC5wb3MrPWM7cmV0dXJuIHQucG9zLWV9fWMrK310LnBvcys9b31yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgYT10aGlzLmxleGVyO2xldCByPWEuc3RyZWFtO2Euc2tpcFRvTmV4dExpbmUoKTtjb25zdCBpPXIucG9zLTE7bGV0IG49ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXtpbmZvKGBCYWQgbGVuZ3RoICIke24mJm4udG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtuPTB9ci5wb3M9aStuO2EubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJmlzQ21kKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7bj10aGlzLiNxKGkpO2lmKG48MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3I9ci5tYWtlU3ViU3RyZWFtKGksbixlKTt0JiYocj10LmNyZWF0ZVN0cmVhbShyLG4pKTtyPXRoaXMuZmlsdGVyKHIsZSxuKTtyLmRpY3Q9ZTtyZXR1cm4gcn1maWx0ZXIoZSx0LGEpe2xldCByPXQuZ2V0KCJGIiwiRmlsdGVyIiksaT10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKHIgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KGkpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsci5uYW1lLGEsaSl9bGV0IG49YTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCB0PXIsYT1pO2ZvcihsZXQgcz0wLG89dC5sZW5ndGg7czxvOysrcyl7cj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W3NdKTtpZighKHIgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtyfSJgKTtpPW51bGw7QXJyYXkuaXNBcnJheShhKSYmcyBpbiBhJiYoaT10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW3NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxyLm5hbWUsbixpKTtuPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEscil7aWYoMD09PWEpe3dhcm4oYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIHI/bmV3IFByZWRpY3RvclN0cmVhbShuZXcgRmxhdGVTdHJlYW0oZSxhKSxhLHIpOm5ldyBGbGF0ZVN0cmVhbShlLGEpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihyKXtyLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9ci5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBMWldTdHJlYW0oZSxhLHQpLGEscil9cmV0dXJuIG5ldyBMWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBKcGVnU3RyZWFtKGUsYSxyKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOnJldHVybiBuZXcgSnB4U3RyZWFtKGUsYSxyKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsYSxyKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsYSxyKX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IHJyPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEsYT0wLHI9MTtpZig0NT09PWUpe3I9LTE7ZT10aGlzLm5leHRDaGFyKCk7NDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpfWVsc2UgNDM9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpO2lmKDEwPT09ZXx8MTM9PT1lKWRve2U9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKDEwPT09ZXx8MTM9PT1lKTtpZig0Nj09PWUpe2E9MTA7ZT10aGlzLm5leHRDaGFyKCl9aWYoZTw0OHx8ZT41Nyl7Y29uc3QgdD1gSW52YWxpZCBudW1iZXI6ICR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0gKGNoYXJDb2RlICR7ZX0pYDtpZihpc1doaXRlU3BhY2UoZSl8fDQwPT09ZXx8NjA9PT1lfHwtMT09PWUpe2luZm8oYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgRm9ybWF0RXJyb3IodCl9bGV0IGk9ZS00OCxuPTAscz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodCluPTEwKm4rcjtlbHNlezAhPT1hJiYoYSo9MTApO2k9MTAqaStyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKXdhcm4oIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtzPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKGkvPWEpO3QmJihpKj0xMCoqKHMqbikpO3JldHVybiByKml9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgcj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxyKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGEucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6cj10aGlzLm5leHRDaGFyKCk7c3dpdGNoKHIpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDphLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6YS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmEucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmEucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjphLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZyO3I9dGhpcy5uZXh0Q2hhcigpO2k9ITA7aWYocj49NDgmJnI8PTU1KXtlPShlPDwzKSsoMTUmcik7cj10aGlzLm5leHRDaGFyKCk7aWYocj49NDgmJnI8PTU1KXtpPSExO2U9KGU8PDMpKygxNSZyKX19YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpfWJyZWFrO2RlZmF1bHQ6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpfWlmKHQpYnJlYWs7aXx8KHI9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gYS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhcnJbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYocnJbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgcj10b0hleERpZ2l0KGUpO2lmKC0xIT09cil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKHJyW2VdKWJyZWFrO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyPDw0fGkpKX1lbHNlIGEucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7YS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGEuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHx3YXJuKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOndhcm4oImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdD10aGlzLmN1cnJlbnRDaGFyLGE9LTEscj0tMTt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7Zm9yKDs7KXtpZih0PDApe3dhcm4oIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PXJyW3RdKXtyPXRvSGV4RGlnaXQodCk7aWYoLTE9PT1yKXRoaXMuX2hleFN0cmluZ1dhcm4odCk7ZWxzZSBpZigtMT09PWEpYT1yO2Vsc2V7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxyKSk7YT0tMX10PXRoaXMubmV4dENoYXIoKX1lbHNlIHQ9dGhpcy5uZXh0Q2hhcigpfS0xIT09YSYmZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NCkpO3JldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gc2E7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09cnJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJbIik7Y2FzZSA5Mzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIj4+Iil9cmV0dXJuIENtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIn0iKTtjYXNlIDQxOnRoaXMubmV4dENoYXIoKTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IGE9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KGEpfX1jb25zdCByPXRoaXMua25vd25Db21tYW5kcztsZXQgaT12b2lkIDAhPT1yPy5bYV07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhcnJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihpJiZ2b2lkIDA9PT1yW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHthLmxlbmd0aH1gKTthPWU7aT12b2lkIDAhPT1yPy5bYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIENtZC5nZXQoYSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxhPSExKXtjb25zdCByPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIocikmJihhP3I+PTA6cj4wKSlyZXR1cm4gcjt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLGk9dC5nZXRPYmooKSxuPXQuZ2V0T2JqKCk7bGV0IHMsbztpZighKE51bWJlci5pc0ludGVnZXIoYSkmJk51bWJlci5pc0ludGVnZXIocikmJmlzQ21kKGksIm9iaiIpJiZuIGluc3RhbmNlb2YgRGljdCYmIm51bWJlciI9PXR5cGVvZihzPW4uZ2V0KCJMaW5lYXJpemVkIikpJiZzPjApKXJldHVybiBudWxsO2lmKChvPWdldEludChuLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6byxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShuKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQobiwiTyIpLGVuZEZpcnN0OmdldEludChuLCJFIiksbnVtUGFnZXM6Z2V0SW50KG4sIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KG4sIlQiKSxwYWdlRmlyc3Q6bi5oYXMoIlAiKT9nZXRJbnQobiwiUCIsITApOjB9fX1jb25zdCBpcj1bIkFkb2JlLUdCMS1VQ1MyIiwiQWRvYmUtQ05TMS1VQ1MyIiwiQWRvYmUtSmFwYW4xLVVDUzIiLCJBZG9iZS1Lb3JlYTEtVUNTMiIsIjc4LUVVQy1IIiwiNzgtRVVDLVYiLCI3OC1IIiwiNzgtUktTSi1IIiwiNzgtUktTSi1WIiwiNzgtViIsIjc4bXMtUktTSi1IIiwiNzhtcy1SS1NKLVYiLCI4M3B2LVJLU0otSCIsIjkwbXMtUktTSi1IIiwiOTBtcy1SS1NKLVYiLCI5MG1zcC1SS1NKLUgiLCI5MG1zcC1SS1NKLVYiLCI5MHB2LVJLU0otSCIsIjkwcHYtUktTSi1WIiwiQWRkLUgiLCJBZGQtUktTSi1IIiwiQWRkLVJLU0otViIsIkFkZC1WIiwiQWRvYmUtQ05TMS0wIiwiQWRvYmUtQ05TMS0xIiwiQWRvYmUtQ05TMS0yIiwiQWRvYmUtQ05TMS0zIiwiQWRvYmUtQ05TMS00IiwiQWRvYmUtQ05TMS01IiwiQWRvYmUtQ05TMS02IiwiQWRvYmUtR0IxLTAiLCJBZG9iZS1HQjEtMSIsIkFkb2JlLUdCMS0yIiwiQWRvYmUtR0IxLTMiLCJBZG9iZS1HQjEtNCIsIkFkb2JlLUdCMS01IiwiQWRvYmUtSmFwYW4xLTAiLCJBZG9iZS1KYXBhbjEtMSIsIkFkb2JlLUphcGFuMS0yIiwiQWRvYmUtSmFwYW4xLTMiLCJBZG9iZS1KYXBhbjEtNCIsIkFkb2JlLUphcGFuMS01IiwiQWRvYmUtSmFwYW4xLTYiLCJBZG9iZS1Lb3JlYTEtMCIsIkFkb2JlLUtvcmVhMS0xIiwiQWRvYmUtS29yZWExLTIiLCJCNS1IIiwiQjUtViIsIkI1cGMtSCIsIkI1cGMtViIsIkNOUy1FVUMtSCIsIkNOUy1FVUMtViIsIkNOUzEtSCIsIkNOUzEtViIsIkNOUzItSCIsIkNOUzItViIsIkVUSEstQjUtSCIsIkVUSEstQjUtViIsIkVUZW4tQjUtSCIsIkVUZW4tQjUtViIsIkVUZW5tcy1CNS1IIiwiRVRlbm1zLUI1LVYiLCJFVUMtSCIsIkVVQy1WIiwiRXh0LUgiLCJFeHQtUktTSi1IIiwiRXh0LVJLU0otViIsIkV4dC1WIiwiR0ItRVVDLUgiLCJHQi1FVUMtViIsIkdCLUgiLCJHQi1WIiwiR0JLLUVVQy1IIiwiR0JLLUVVQy1WIiwiR0JLMkstSCIsIkdCSzJLLVYiLCJHQktwLUVVQy1IIiwiR0JLcC1FVUMtViIsIkdCVC1FVUMtSCIsIkdCVC1FVUMtViIsIkdCVC1IIiwiR0JULVYiLCJHQlRwYy1FVUMtSCIsIkdCVHBjLUVVQy1WIiwiR0JwYy1FVUMtSCIsIkdCcGMtRVVDLVYiLCJIIiwiSEtkbGEtQjUtSCIsIkhLZGxhLUI1LVYiLCJIS2RsYi1CNS1IIiwiSEtkbGItQjUtViIsIkhLZ2Njcy1CNS1IIiwiSEtnY2NzLUI1LVYiLCJIS20zMTQtQjUtSCIsIkhLbTMxNC1CNS1WIiwiSEttNDcxLUI1LUgiLCJIS200NzEtQjUtViIsIkhLc2NzLUI1LUgiLCJIS3Njcy1CNS1WIiwiSGFua2FrdSIsIkhpcmFnYW5hIiwiS1NDLUVVQy1IIiwiS1NDLUVVQy1WIiwiS1NDLUgiLCJLU0MtSm9oYWItSCIsIktTQy1Kb2hhYi1WIiwiS1NDLVYiLCJLU0Ntcy1VSEMtSCIsIktTQ21zLVVIQy1IVy1IIiwiS1NDbXMtVUhDLUhXLVYiLCJLU0Ntcy1VSEMtViIsIktTQ3BjLUVVQy1IIiwiS1NDcGMtRVVDLVYiLCJLYXRha2FuYSIsIk5XUC1IIiwiTldQLVYiLCJSS1NKLUgiLCJSS1NKLVYiLCJSb21hbiIsIlVuaUNOUy1VQ1MyLUgiLCJVbmlDTlMtVUNTMi1WIiwiVW5pQ05TLVVURjE2LUgiLCJVbmlDTlMtVVRGMTYtViIsIlVuaUNOUy1VVEYzMi1IIiwiVW5pQ05TLVVURjMyLVYiLCJVbmlDTlMtVVRGOC1IIiwiVW5pQ05TLVVURjgtViIsIlVuaUdCLVVDUzItSCIsIlVuaUdCLVVDUzItViIsIlVuaUdCLVVURjE2LUgiLCJVbmlHQi1VVEYxNi1WIiwiVW5pR0ItVVRGMzItSCIsIlVuaUdCLVVURjMyLVYiLCJVbmlHQi1VVEY4LUgiLCJVbmlHQi1VVEY4LVYiLCJVbmlKSVMtVUNTMi1IIiwiVW5pSklTLVVDUzItSFctSCIsIlVuaUpJUy1VQ1MyLUhXLVYiLCJVbmlKSVMtVUNTMi1WIiwiVW5pSklTLVVURjE2LUgiLCJVbmlKSVMtVVRGMTYtViIsIlVuaUpJUy1VVEYzMi1IIiwiVW5pSklTLVVURjMyLVYiLCJVbmlKSVMtVVRGOC1IIiwiVW5pSklTLVVURjgtViIsIlVuaUpJUzIwMDQtVVRGMTYtSCIsIlVuaUpJUzIwMDQtVVRGMTYtViIsIlVuaUpJUzIwMDQtVVRGMzItSCIsIlVuaUpJUzIwMDQtVVRGMzItViIsIlVuaUpJUzIwMDQtVVRGOC1IIiwiVW5pSklTMjAwNC1VVEY4LVYiLCJVbmlKSVNQcm8tVUNTMi1IVy1WIiwiVW5pSklTUHJvLVVDUzItViIsIlVuaUpJU1Byby1VVEY4LVYiLCJVbmlKSVNYMDIxMy1VVEYzMi1IIiwiVW5pSklTWDAyMTMtVVRGMzItViIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1IIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLVYiLCJVbmlLUy1VQ1MyLUgiLCJVbmlLUy1VQ1MyLVYiLCJVbmlLUy1VVEYxNi1IIiwiVW5pS1MtVVRGMTYtViIsIlVuaUtTLVVURjMyLUgiLCJVbmlLUy1VVEYzMi1WIiwiVW5pS1MtVVRGOC1IIiwiVW5pS1MtVVRGOC1WIiwiViIsIldQLVN5bWJvbCJdLG5yPTIqKjI0LTE7Y2xhc3MgQ01hcHtjb25zdHJ1Y3RvcihlPSExKXt0aGlzLmNvZGVzcGFjZVJhbmdlcz1bW10sW10sW10sW11dO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzPTA7dGhpcy5fbWFwPVtdO3RoaXMubmFtZT0iIjt0aGlzLnZlcnRpY2FsPSExO3RoaXMudXNlQ01hcD1udWxsO3RoaXMuYnVpbHRJbkNNYXA9ZX1hZGRDb2Rlc3BhY2VSYW5nZShlLHQsYSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXNbZS0xXS5wdXNoKHQsYSk7dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXMrK31tYXBDaWRSYW5nZShlLHQsYSl7aWYodC1lPm5yKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPm5yKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoLTE7Zm9yKDtlPD10Oyl7dGhpcy5fbWFwW2UrK109YTtjb25zdCB0PWEuY2hhckNvZGVBdChyKSsxO3Q+MjU1P2E9YS5zdWJzdHJpbmcoMCxyLTEpK1N0cmluZy5mcm9tQ2hhckNvZGUoYS5jaGFyQ29kZUF0KHItMSkrMSkrIlwwIjphPWEuc3Vic3RyaW5nKDAscikrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpe2lmKHQtZT5ucil0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2VUb0FycmF5IC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGg7bGV0IGk9MDtmb3IoO2U8PXQmJmk8cjspe3RoaXMuX21hcFtlXT1hW2krK107KytlfX1tYXBPbmUoZSx0KXt0aGlzLl9tYXBbZV09dH1sb29rdXAoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jb250YWlucyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Y29uc3QgdD10aGlzLl9tYXAsYT10Lmxlbmd0aDtpZihhPD02NTUzNilmb3IobGV0IHI9MDtyPGE7cisrKXZvaWQgMCE9PXRbcl0mJmUocix0W3JdKTtlbHNlIGZvcihjb25zdCBhIGluIHQpZShhLHRbYV0pfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGEgaW4gdClpZih0W2FdPT09ZSlyZXR1cm4gMHxhO3JldHVybi0xfWdldE1hcCgpe3JldHVybiB0aGlzLl9tYXB9cmVhZENoYXJDb2RlKGUsdCxhKXtsZXQgcj0wO2NvbnN0IGk9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7bisrKXtyPShyPDw4fGUuY2hhckNvZGVBdCh0K24pKT4+PjA7Y29uc3Qgcz1pW25dO2ZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0Oyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107aWYocj49dCYmcjw9aSl7YS5jaGFyY29kZT1yO2EubGVuZ3RoPW4rMTtyZXR1cm59fX1hLmNoYXJjb2RlPTA7YS5sZW5ndGg9MX1nZXRDaGFyQ29kZUxlbmd0aChlKXtjb25zdCB0PXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj10W2FdO2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpOyl7Y29uc3QgaT1yW3QrK10sbj1yW3QrK107aWYoZT49aSYmZTw9bilyZXR1cm4gYSsxfX1yZXR1cm4gMX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7aWYoIklkZW50aXR5LUgiIT09dGhpcy5uYW1lJiYiSWRlbnRpdHktViIhPT10aGlzLm5hbWUpcmV0dXJuITE7aWYoNjU1MzYhPT10aGlzLl9tYXAubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8NjU1MzY7ZSsrKWlmKHRoaXMuX21hcFtlXSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIElkZW50aXR5Q01hcCBleHRlbmRzIENNYXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpO3RoaXMudmVydGljYWw9ZTt0aGlzLmFkZENvZGVzcGFjZVJhbmdlKHQsMCw2NTUzNSl9bWFwQ2lkUmFuZ2UoZSx0LGEpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkUmFuZ2UiKX1tYXBCZlJhbmdlKGUsdCxhKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2UiKX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlVG9BcnJheSIpfW1hcE9uZShlLHQpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkT25lIil9bG9va3VwKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOnZvaWQgMH1jb250YWlucyhlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzV9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZSh0LHQpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6LTF9Z2V0TWFwKCl7Y29uc3QgZT1uZXcgQXJyYXkoNjU1MzYpO2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllW3RdPXQ7cmV0dXJuIGV9Z2V0IGxlbmd0aCgpe3JldHVybiA2NTUzNn1nZXQgaXNJZGVudGl0eUNNYXAoKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBhY2Nlc3MgLmlzSWRlbnRpdHlDTWFwIil9fWZ1bmN0aW9uIHN0clRvSW50KGUpe2xldCB0PTA7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspdD10PDw4fGUuY2hhckNvZGVBdChhKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gZXhwZWN0U3RyaW5nKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIGludC4iKX1mdW5jdGlvbiBwYXJzZUJmQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09c2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kYmZjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1hO2UubWFwT25lKHIsaSl9fWZ1bmN0aW9uIHBhcnNlQmZSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09c2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kYmZyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2lmKE51bWJlci5pc0ludGVnZXIoYSl8fCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3QgdD1OdW1iZXIuaXNJbnRlZ2VyKGEpP1N0cmluZy5mcm9tQ2hhckNvZGUoYSk6YTtlLm1hcEJmUmFuZ2UocixpLHQpfWVsc2V7aWYoIWlzQ21kKGEsIlsiKSlicmVhazt7YT10LmdldE9iaigpO2NvbnN0IG49W107Zm9yKDshaXNDbWQoYSwiXSIpJiZhIT09c2E7KXtuLnB1c2goYSk7YT10LmdldE9iaigpfWUubWFwQmZSYW5nZVRvQXJyYXkocixpLG4pfX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlQ2lkQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09c2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kY2lkY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGEpO2NvbnN0IGk9YTtlLm1hcE9uZShyLGkpfX1mdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1zYSlicmVhaztpZihpc0NtZChhLCJlbmRjaWRyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBuPWE7ZS5tYXBDaWRSYW5nZShyLGksbil9fWZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PXNhKWJyZWFrO2lmKGlzQ21kKGEsImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgYSlicmVhaztjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3QgaT1zdHJUb0ludChhKTtlLmFkZENvZGVzcGFjZVJhbmdlKGEubGVuZ3RoLHIsaSl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2YgTmFtZSYmKGUubmFtZT1hLm5hbWUpfWFzeW5jIGZ1bmN0aW9uIHBhcnNlQ01hcChlLHQsYSxyKXtsZXQgaSxuO2U6Zm9yKDs7KXRyeXtjb25zdCBhPXQuZ2V0T2JqKCk7aWYoYT09PXNhKWJyZWFrO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXsiV01vZGUiPT09YS5uYW1lP3BhcnNlV01vZGUoZSx0KToiQ01hcE5hbWUiPT09YS5uYW1lJiZwYXJzZUNNYXBOYW1lKGUsdCk7aT1hfWVsc2UgaWYoYSBpbnN0YW5jZW9mIENtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOmkgaW5zdGFuY2VvZiBOYW1lJiYobj1pLm5hbWUpO2JyZWFrO2Nhc2UiYmVnaW5jb2Rlc3BhY2VyYW5nZSI6cGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZmNoYXIiOnBhcnNlQmZDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZGNoYXIiOnBhcnNlQ2lkQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZnJhbmdlIjpwYXJzZUJmUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnBhcnNlQ2lkUmFuZ2UoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiSW52YWxpZCBjTWFwIGRhdGE6ICIrZSk7Y29udGludWV9IXImJm4mJihyPW4pO3JldHVybiByP2V4dGVuZENNYXAoZSxhLHIpOmV9YXN5bmMgZnVuY3Rpb24gZXh0ZW5kQ01hcChlLHQsYSl7ZS51c2VDTWFwPWF3YWl0IGNyZWF0ZUJ1aWx0SW5DTWFwKGEsdCk7aWYoMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspZS5jb2Rlc3BhY2VSYW5nZXNbYV09dFthXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9ZS51c2VDTWFwLmZvckVhY2goZnVuY3Rpb24odCxhKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGEpfSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWlyLmluY2x1ZGVzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTphLGlzQ29tcHJlc3NlZDpyfT1hd2FpdCB0KGUpLGk9bmV3IENNYXAoITApO2lmKHIpcmV0dXJuKG5ldyBCaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKGEsaSxlPT5leHRlbmRDTWFwKGksdCxlKSk7Y29uc3Qgbj1uZXcgTGV4ZXIobmV3IFN0cmVhbShhKSk7cmV0dXJuIHBhcnNlQ01hcChpLG4sdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOmF9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCByPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxhKTtyZXR1cm4gci5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChyLm5hbWUsdCk6cn10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1jb25zdCBzcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsIiIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsIiIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsIiIsIiIsIiIsImlzdXBlcmlvciIsIiIsIiIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsIiIsIiIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCIiLCJEb3RhY2NlbnRzbWFsbCIsIiIsIiIsIk1hY3JvbnNtYWxsIiwiIiwiIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiIiwiIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdLG9yPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiY2VudG9sZHN0eWxlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsIiIsInRocmVlcXVhcnRlcnNlbWRhc2giLCIiLCJxdWVzdGlvbnNtYWxsIiwiIiwiIiwiIiwiIiwiRXRoc21hbGwiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiIiwiIiwiIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5pbmZlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsImFzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIkFhY3V0ZXNtYWxsIiwiQWdyYXZlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBdGlsZGVzbWFsbCIsIkFyaW5nc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWdyYXZlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPdGlsZGVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWdyYXZlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCIiLCJlaWdodHN1cGVyaW9yIiwiZm91cmluZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJTY2Fyb25zbWFsbCIsIiIsImNlbnRpbmZlcmlvciIsInR3b2luZmVyaW9yIiwiIiwiRGllcmVzaXNzbWFsbCIsIiIsIkNhcm9uc21hbGwiLCJvc3VwZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCIiLCJjb21tYWluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJZYWN1dGVzbWFsbCIsIiIsImRvbGxhcmluZmVyaW9yIiwiIiwiIiwiVGhvcm5zbWFsbCIsIiIsIm5pbmVpbmZlcmlvciIsInplcm9pbmZlcmlvciIsIlpjYXJvbnNtYWxsIiwiQUVzbWFsbCIsIk9zbGFzaHNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVpbmZlcmlvciIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiT0VzbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5zdXBlcmlvciIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsIiIsIllkaWVyZXNpc3NtYWxsIiwiIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvc3VwZXJpb3IiLCIiLCJlc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCIiLCJpc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJkc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCIiLCJsc3VwZXJpb3IiLCJPZ29uZWtzbWFsbCIsIkJyZXZlc21hbGwiLCJNYWNyb25zbWFsbCIsImJzdXBlcmlvciIsIm5zdXBlcmlvciIsIm1zdXBlcmlvciIsImNvbW1hc3VwZXJpb3IiLCJwZXJpb2RzdXBlcmlvciIsIkRvdGFjY2VudHNtYWxsIiwiUmluZ3NtYWxsIiwiIiwiIiwiIiwiIl0sY3I9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXSxscj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCIiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCIiLCJxdWVzdGlvbmRvd24iLCIiLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsIiIsInJpbmciLCJjZWRpbGxhIiwiIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJBRSIsIiIsIm9yZGZlbWluaW5lIiwiIiwiIiwiIiwiIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCIiLCIiLCIiLCIiLCIiLCJhZSIsIiIsIiIsIiIsImRvdGxlc3NpIiwiIiwiIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwiIiwiIiwiIiwiIl0saHI9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiYnVsbGV0IiwiRXVybyIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwiZmxvcmluIiwicXVvdGVkYmxiYXNlIiwiZWxsaXBzaXMiLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJjaXJjdW1mbGV4IiwicGVydGhvdXNhbmQiLCJTY2Fyb24iLCJndWlsc2luZ2xsZWZ0IiwiT0UiLCJidWxsZXQiLCJaY2Fyb24iLCJidWxsZXQiLCJidWxsZXQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsImJ1bGxldCIsImVuZGFzaCIsImVtZGFzaCIsInRpbGRlIiwidHJhZGVtYXJrIiwic2Nhcm9uIiwiZ3VpbHNpbmdscmlnaHQiLCJvZSIsImJ1bGxldCIsInpjYXJvbiIsIllkaWVyZXNpcyIsInNwYWNlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImN1cnJlbmN5IiwieWVuIiwiYnJva2VuYmFyIiwic2VjdGlvbiIsImRpZXJlc2lzIiwiY29weXJpZ2h0Iiwib3JkZmVtaW5pbmUiLCJndWlsbGVtb3RsZWZ0IiwibG9naWNhbG5vdCIsImh5cGhlbiIsInJlZ2lzdGVyZWQiLCJtYWNyb24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJhY3V0ZSIsIm11IiwicGFyYWdyYXBoIiwicGVyaW9kY2VudGVyZWQiLCJjZWRpbGxhIiwib25lc3VwZXJpb3IiLCJvcmRtYXNjdWxpbmUiLCJndWlsbGVtb3RyaWdodCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93biIsIkFncmF2ZSIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJBRSIsIkNjZWRpbGxhIiwiRWdyYXZlIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJJZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIkV0aCIsIk50aWxkZSIsIk9ncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT3RpbGRlIiwiT2RpZXJlc2lzIiwibXVsdGlwbHkiLCJPc2xhc2giLCJVZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIllhY3V0ZSIsIlRob3JuIiwiZ2VybWFuZGJscyIsImFncmF2ZSIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYXRpbGRlIiwiYWRpZXJlc2lzIiwiYXJpbmciLCJhZSIsImNjZWRpbGxhIiwiZWdyYXZlIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImV0aCIsIm50aWxkZSIsIm9ncmF2ZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib3RpbGRlIiwib2RpZXJlc2lzIiwiZGl2aWRlIiwib3NsYXNoIiwidWdyYXZlIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ5YWN1dGUiLCJ0aG9ybiIsInlkaWVyZXNpcyJdLHVyPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJ1bml2ZXJzYWwiLCJudW1iZXJzaWduIiwiZXhpc3RlbnRpYWwiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwic3VjaHRoYXQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2ttYXRoIiwicGx1cyIsImNvbW1hIiwibWludXMiLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImNvbmdydWVudCIsIkFscGhhIiwiQmV0YSIsIkNoaSIsIkRlbHRhIiwiRXBzaWxvbiIsIlBoaSIsIkdhbW1hIiwiRXRhIiwiSW90YSIsInRoZXRhMSIsIkthcHBhIiwiTGFtYmRhIiwiTXUiLCJOdSIsIk9taWNyb24iLCJQaSIsIlRoZXRhIiwiUmhvIiwiU2lnbWEiLCJUYXUiLCJVcHNpbG9uIiwic2lnbWExIiwiT21lZ2EiLCJYaSIsIlBzaSIsIlpldGEiLCJicmFja2V0bGVmdCIsInRoZXJlZm9yZSIsImJyYWNrZXRyaWdodCIsInBlcnBlbmRpY3VsYXIiLCJ1bmRlcnNjb3JlIiwicmFkaWNhbGV4IiwiYWxwaGEiLCJiZXRhIiwiY2hpIiwiZGVsdGEiLCJlcHNpbG9uIiwicGhpIiwiZ2FtbWEiLCJldGEiLCJpb3RhIiwicGhpMSIsImthcHBhIiwibGFtYmRhIiwibXUiLCJudSIsIm9taWNyb24iLCJwaSIsInRoZXRhIiwicmhvIiwic2lnbWEiLCJ0YXUiLCJ1cHNpbG9uIiwib21lZ2ExIiwib21lZ2EiLCJ4aSIsInBzaSIsInpldGEiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0Iiwic2ltaWxhciIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkV1cm8iLCJVcHNpbG9uMSIsIm1pbnV0ZSIsImxlc3NlcXVhbCIsImZyYWN0aW9uIiwiaW5maW5pdHkiLCJmbG9yaW4iLCJjbHViIiwiZGlhbW9uZCIsImhlYXJ0Iiwic3BhZGUiLCJhcnJvd2JvdGgiLCJhcnJvd2xlZnQiLCJhcnJvd3VwIiwiYXJyb3dyaWdodCIsImFycm93ZG93biIsImRlZ3JlZSIsInBsdXNtaW51cyIsInNlY29uZCIsImdyZWF0ZXJlcXVhbCIsIm11bHRpcGx5IiwicHJvcG9ydGlvbmFsIiwicGFydGlhbGRpZmYiLCJidWxsZXQiLCJkaXZpZGUiLCJub3RlcXVhbCIsImVxdWl2YWxlbmNlIiwiYXBwcm94ZXF1YWwiLCJlbGxpcHNpcyIsImFycm93dmVydGV4IiwiYXJyb3dob3JpemV4IiwiY2FycmlhZ2VyZXR1cm4iLCJhbGVwaCIsIklmcmFrdHVyIiwiUmZyYWt0dXIiLCJ3ZWllcnN0cmFzcyIsImNpcmNsZW11bHRpcGx5IiwiY2lyY2xlcGx1cyIsImVtcHR5c2V0IiwiaW50ZXJzZWN0aW9uIiwidW5pb24iLCJwcm9wZXJzdXBlcnNldCIsInJlZmxleHN1cGVyc2V0Iiwibm90c3Vic2V0IiwicHJvcGVyc3Vic2V0IiwicmVmbGV4c3Vic2V0IiwiZWxlbWVudCIsIm5vdGVsZW1lbnQiLCJhbmdsZSIsImdyYWRpZW50IiwicmVnaXN0ZXJzZXJpZiIsImNvcHlyaWdodHNlcmlmIiwidHJhZGVtYXJrc2VyaWYiLCJwcm9kdWN0IiwicmFkaWNhbCIsImRvdG1hdGgiLCJsb2dpY2Fsbm90IiwibG9naWNhbGFuZCIsImxvZ2ljYWxvciIsImFycm93ZGJsYm90aCIsImFycm93ZGJsbGVmdCIsImFycm93ZGJsdXAiLCJhcnJvd2RibHJpZ2h0IiwiYXJyb3dkYmxkb3duIiwibG96ZW5nZSIsImFuZ2xlbGVmdCIsInJlZ2lzdGVyc2FucyIsImNvcHlyaWdodHNhbnMiLCJ0cmFkZW1hcmtzYW5zIiwic3VtbWF0aW9uIiwicGFyZW5sZWZ0dHAiLCJwYXJlbmxlZnRleCIsInBhcmVubGVmdGJ0IiwiYnJhY2tldGxlZnR0cCIsImJyYWNrZXRsZWZ0ZXgiLCJicmFja2V0bGVmdGJ0IiwiYnJhY2VsZWZ0dHAiLCJicmFjZWxlZnRtaWQiLCJicmFjZWxlZnRidCIsImJyYWNlZXgiLCIiLCJhbmdsZXJpZ2h0IiwiaW50ZWdyYWwiLCJpbnRlZ3JhbHRwIiwiaW50ZWdyYWxleCIsImludGVncmFsYnQiLCJwYXJlbnJpZ2h0dHAiLCJwYXJlbnJpZ2h0ZXgiLCJwYXJlbnJpZ2h0YnQiLCJicmFja2V0cmlnaHR0cCIsImJyYWNrZXRyaWdodGV4IiwiYnJhY2tldHJpZ2h0YnQiLCJicmFjZXJpZ2h0dHAiLCJicmFjZXJpZ2h0bWlkIiwiYnJhY2VyaWdodGJ0IiwiIl0sZHI9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImExIiwiYTIiLCJhMjAyIiwiYTMiLCJhNCIsImE1IiwiYTExOSIsImExMTgiLCJhMTE3IiwiYTExIiwiYTEyIiwiYTEzIiwiYTE0IiwiYTE1IiwiYTE2IiwiYTEwNSIsImExNyIsImExOCIsImExOSIsImEyMCIsImEyMSIsImEyMiIsImEyMyIsImEyNCIsImEyNSIsImEyNiIsImEyNyIsImEyOCIsImE2IiwiYTciLCJhOCIsImE5IiwiYTEwIiwiYTI5IiwiYTMwIiwiYTMxIiwiYTMyIiwiYTMzIiwiYTM0IiwiYTM1IiwiYTM2IiwiYTM3IiwiYTM4IiwiYTM5IiwiYTQwIiwiYTQxIiwiYTQyIiwiYTQzIiwiYTQ0IiwiYTQ1IiwiYTQ2IiwiYTQ3IiwiYTQ4IiwiYTQ5IiwiYTUwIiwiYTUxIiwiYTUyIiwiYTUzIiwiYTU0IiwiYTU1IiwiYTU2IiwiYTU3IiwiYTU4IiwiYTU5IiwiYTYwIiwiYTYxIiwiYTYyIiwiYTYzIiwiYTY0IiwiYTY1IiwiYTY2IiwiYTY3IiwiYTY4IiwiYTY5IiwiYTcwIiwiYTcxIiwiYTcyIiwiYTczIiwiYTc0IiwiYTIwMyIsImE3NSIsImEyMDQiLCJhNzYiLCJhNzciLCJhNzgiLCJhNzkiLCJhODEiLCJhODIiLCJhODMiLCJhODQiLCJhOTciLCJhOTgiLCJhOTkiLCJhMTAwIiwiIiwiYTg5IiwiYTkwIiwiYTkzIiwiYTk0IiwiYTkxIiwiYTkyIiwiYTIwNSIsImE4NSIsImEyMDYiLCJhODYiLCJhODciLCJhODgiLCJhOTUiLCJhOTYiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJhMTAxIiwiYTEwMiIsImExMDMiLCJhMTA0IiwiYTEwNiIsImExMDciLCJhMTA4IiwiYTExMiIsImExMTEiLCJhMTEwIiwiYTEwOSIsImExMjAiLCJhMTIxIiwiYTEyMiIsImExMjMiLCJhMTI0IiwiYTEyNSIsImExMjYiLCJhMTI3IiwiYTEyOCIsImExMjkiLCJhMTMwIiwiYTEzMSIsImExMzIiLCJhMTMzIiwiYTEzNCIsImExMzUiLCJhMTM2IiwiYTEzNyIsImExMzgiLCJhMTM5IiwiYTE0MCIsImExNDEiLCJhMTQyIiwiYTE0MyIsImExNDQiLCJhMTQ1IiwiYTE0NiIsImExNDciLCJhMTQ4IiwiYTE0OSIsImExNTAiLCJhMTUxIiwiYTE1MiIsImExNTMiLCJhMTU0IiwiYTE1NSIsImExNTYiLCJhMTU3IiwiYTE1OCIsImExNTkiLCJhMTYwIiwiYTE2MSIsImExNjMiLCJhMTY0IiwiYTE5NiIsImExNjUiLCJhMTkyIiwiYTE2NiIsImExNjciLCJhMTY4IiwiYTE2OSIsImExNzAiLCJhMTcxIiwiYTE3MiIsImExNzMiLCJhMTYyIiwiYTE3NCIsImExNzUiLCJhMTc2IiwiYTE3NyIsImExNzgiLCJhMTc5IiwiYTE5MyIsImExODAiLCJhMTk5IiwiYTE4MSIsImEyMDAiLCJhMTgyIiwiIiwiYTIwMSIsImExODMiLCJhMTg0IiwiYTE5NyIsImExODUiLCJhMTk0IiwiYTE5OCIsImExODYiLCJhMTk1IiwiYTE4NyIsImExODgiLCJhMTg5IiwiYTE5MCIsImExOTEiLCIiXTtmdW5jdGlvbiBnZXRFbmNvZGluZyhlKXtzd2l0Y2goZSl7Y2FzZSJXaW5BbnNpRW5jb2RpbmciOnJldHVybiBocjtjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBscjtjYXNlIk1hY1JvbWFuRW5jb2RpbmciOnJldHVybiBjcjtjYXNlIlN5bWJvbFNldEVuY29kaW5nIjpyZXR1cm4gdXI7Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGRyO2Nhc2UiRXhwZXJ0RW5jb2RpbmciOnJldHVybiBzcjtjYXNlIk1hY0V4cGVydEVuY29kaW5nIjpyZXR1cm4gb3I7ZGVmYXVsdDpyZXR1cm4gbnVsbH19Y29uc3QgZnI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQT02NTtlLkFFPTE5ODtlLkFFYWN1dGU9NTA4O2UuQUVtYWNyb249NDgyO2UuQUVzbWFsbD02MzQ2MjtlLkFhY3V0ZT0xOTM7ZS5BYWN1dGVzbWFsbD02MzQ1NztlLkFicmV2ZT0yNTg7ZS5BYnJldmVhY3V0ZT03ODU0O2UuQWJyZXZlY3lyaWxsaWM9MTIzMjtlLkFicmV2ZWRvdGJlbG93PTc4NjI7ZS5BYnJldmVncmF2ZT03ODU2O2UuQWJyZXZlaG9va2Fib3ZlPTc4NTg7ZS5BYnJldmV0aWxkZT03ODYwO2UuQWNhcm9uPTQ2MTtlLkFjaXJjbGU9OTM5ODtlLkFjaXJjdW1mbGV4PTE5NDtlLkFjaXJjdW1mbGV4YWN1dGU9Nzg0NDtlLkFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MjtlLkFjaXJjdW1mbGV4Z3JhdmU9Nzg0NjtlLkFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDg7ZS5BY2lyY3VtZmxleHNtYWxsPTYzNDU4O2UuQWNpcmN1bWZsZXh0aWxkZT03ODUwO2UuQWN1dGU9NjMxNzc7ZS5BY3V0ZXNtYWxsPTYzNDEyO2UuQWN5cmlsbGljPTEwNDA7ZS5BZGJsZ3JhdmU9NTEyO2UuQWRpZXJlc2lzPTE5NjtlLkFkaWVyZXNpc2N5cmlsbGljPTEyMzQ7ZS5BZGllcmVzaXNtYWNyb249NDc4O2UuQWRpZXJlc2lzc21hbGw9NjM0NjA7ZS5BZG90YmVsb3c9Nzg0MDtlLkFkb3RtYWNyb249NDgwO2UuQWdyYXZlPTE5MjtlLkFncmF2ZXNtYWxsPTYzNDU2O2UuQWhvb2thYm92ZT03ODQyO2UuQWllY3lyaWxsaWM9MTIzNjtlLkFpbnZlcnRlZGJyZXZlPTUxNDtlLkFscGhhPTkxMztlLkFscGhhdG9ub3M9OTAyO2UuQW1hY3Jvbj0yNTY7ZS5BbW9ub3NwYWNlPTY1MzEzO2UuQW9nb25laz0yNjA7ZS5BcmluZz0xOTc7ZS5BcmluZ2FjdXRlPTUwNjtlLkFyaW5nYmVsb3c9NzY4MDtlLkFyaW5nc21hbGw9NjM0NjE7ZS5Bc21hbGw9NjMzMjk7ZS5BdGlsZGU9MTk1O2UuQXRpbGRlc21hbGw9NjM0NTk7ZS5BeWJhcm1lbmlhbj0xMzI5O2UuQj02NjtlLkJjaXJjbGU9OTM5OTtlLkJkb3RhY2NlbnQ9NzY4MjtlLkJkb3RiZWxvdz03Njg0O2UuQmVjeXJpbGxpYz0xMDQxO2UuQmVuYXJtZW5pYW49MTMzMDtlLkJldGE9OTE0O2UuQmhvb2s9Mzg1O2UuQmxpbmViZWxvdz03Njg2O2UuQm1vbm9zcGFjZT02NTMxNDtlLkJyZXZlc21hbGw9NjMyMjA7ZS5Cc21hbGw9NjMzMzA7ZS5CdG9wYmFyPTM4NjtlLkM9Njc7ZS5DYWFybWVuaWFuPTEzNDI7ZS5DYWN1dGU9MjYyO2UuQ2Fyb249NjMxNzg7ZS5DYXJvbnNtYWxsPTYzMjIxO2UuQ2Nhcm9uPTI2ODtlLkNjZWRpbGxhPTE5OTtlLkNjZWRpbGxhYWN1dGU9NzY4ODtlLkNjZWRpbGxhc21hbGw9NjM0NjM7ZS5DY2lyY2xlPTk0MDA7ZS5DY2lyY3VtZmxleD0yNjQ7ZS5DZG90PTI2NjtlLkNkb3RhY2NlbnQ9MjY2O2UuQ2VkaWxsYXNtYWxsPTYzNDE2O2UuQ2hhYXJtZW5pYW49MTM1MztlLkNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTI7ZS5DaGVjeXJpbGxpYz0xMDYzO2UuQ2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNDtlLkNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDY7ZS5DaGVkaWVyZXNpc2N5cmlsbGljPTEyNjg7ZS5DaGVoYXJtZW5pYW49MTM0NztlLkNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI3O2UuQ2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA4O2UuQ2hpPTkzNTtlLkNob29rPTM5MTtlLkNpcmN1bWZsZXhzbWFsbD02MzIyMjtlLkNtb25vc3BhY2U9NjUzMTU7ZS5Db2FybWVuaWFuPTEzNjE7ZS5Dc21hbGw9NjMzMzE7ZS5EPTY4O2UuRFo9NDk3O2UuRFpjYXJvbj00NTI7ZS5EYWFybWVuaWFuPTEzMzI7ZS5EYWZyaWNhbj0zOTM7ZS5EY2Fyb249MjcwO2UuRGNlZGlsbGE9NzY5NjtlLkRjaXJjbGU9OTQwMTtlLkRjaXJjdW1mbGV4YmVsb3c9NzY5ODtlLkRjcm9hdD0yNzI7ZS5EZG90YWNjZW50PTc2OTA7ZS5EZG90YmVsb3c9NzY5MjtlLkRlY3lyaWxsaWM9MTA0NDtlLkRlaWNvcHRpYz0xMDA2O2UuRGVsdGE9ODcxMDtlLkRlbHRhZ3JlZWs9OTE2O2UuRGhvb2s9Mzk0O2UuRGllcmVzaXM9NjMxNzk7ZS5EaWVyZXNpc0FjdXRlPTYzMTgwO2UuRGllcmVzaXNHcmF2ZT02MzE4MTtlLkRpZXJlc2lzc21hbGw9NjM0MDA7ZS5EaWdhbW1hZ3JlZWs9OTg4O2UuRGplY3lyaWxsaWM9MTAyNjtlLkRsaW5lYmVsb3c9NzY5NDtlLkRtb25vc3BhY2U9NjUzMTY7ZS5Eb3RhY2NlbnRzbWFsbD02MzIyMztlLkRzbGFzaD0yNzI7ZS5Ec21hbGw9NjMzMzI7ZS5EdG9wYmFyPTM5NTtlLkR6PTQ5ODtlLkR6Y2Fyb249NDUzO2UuRHplYWJraGFzaWFuY3lyaWxsaWM9MTI0ODtlLkR6ZWN5cmlsbGljPTEwMjk7ZS5EemhlY3lyaWxsaWM9MTAzOTtlLkU9Njk7ZS5FYWN1dGU9MjAxO2UuRWFjdXRlc21hbGw9NjM0NjU7ZS5FYnJldmU9Mjc2O2UuRWNhcm9uPTI4MjtlLkVjZWRpbGxhYnJldmU9NzcwODtlLkVjaGFybWVuaWFuPTEzMzM7ZS5FY2lyY2xlPTk0MDI7ZS5FY2lyY3VtZmxleD0yMDI7ZS5FY2lyY3VtZmxleGFjdXRlPTc4NzA7ZS5FY2lyY3VtZmxleGJlbG93PTc3MDQ7ZS5FY2lyY3VtZmxleGRvdGJlbG93PTc4Nzg7ZS5FY2lyY3VtZmxleGdyYXZlPTc4NzI7ZS5FY2lyY3VtZmxleGhvb2thYm92ZT03ODc0O2UuRWNpcmN1bWZsZXhzbWFsbD02MzQ2NjtlLkVjaXJjdW1mbGV4dGlsZGU9Nzg3NjtlLkVjeXJpbGxpYz0xMDI4O2UuRWRibGdyYXZlPTUxNjtlLkVkaWVyZXNpcz0yMDM7ZS5FZGllcmVzaXNzbWFsbD02MzQ2NztlLkVkb3Q9Mjc4O2UuRWRvdGFjY2VudD0yNzg7ZS5FZG90YmVsb3c9Nzg2NDtlLkVmY3lyaWxsaWM9MTA2MDtlLkVncmF2ZT0yMDA7ZS5FZ3JhdmVzbWFsbD02MzQ2NDtlLkVoYXJtZW5pYW49MTMzNTtlLkVob29rYWJvdmU9Nzg2NjtlLkVpZ2h0cm9tYW49ODU1MTtlLkVpbnZlcnRlZGJyZXZlPTUxODtlLkVpb3RpZmllZGN5cmlsbGljPTExMjQ7ZS5FbGN5cmlsbGljPTEwNTE7ZS5FbGV2ZW5yb21hbj04NTU0O2UuRW1hY3Jvbj0yNzQ7ZS5FbWFjcm9uYWN1dGU9NzcwMjtlLkVtYWNyb25ncmF2ZT03NzAwO2UuRW1jeXJpbGxpYz0xMDUyO2UuRW1vbm9zcGFjZT02NTMxNztlLkVuY3lyaWxsaWM9MTA1MztlLkVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NjtlLkVuZz0zMzA7ZS5FbmdoZWN5cmlsbGljPTExODg7ZS5Fbmhvb2tjeXJpbGxpYz0xMjIzO2UuRW9nb25laz0yODA7ZS5Fb3Blbj00MDA7ZS5FcHNpbG9uPTkxNztlLkVwc2lsb250b25vcz05MDQ7ZS5FcmN5cmlsbGljPTEwNTY7ZS5FcmV2ZXJzZWQ9Mzk4O2UuRXJldmVyc2VkY3lyaWxsaWM9MTA2OTtlLkVzY3lyaWxsaWM9MTA1NztlLkVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NDtlLkVzaD00MjU7ZS5Fc21hbGw9NjMzMzM7ZS5FdGE9OTE5O2UuRXRhcm1lbmlhbj0xMzM2O2UuRXRhdG9ub3M9OTA1O2UuRXRoPTIwODtlLkV0aHNtYWxsPTYzNDcyO2UuRXRpbGRlPTc4Njg7ZS5FdGlsZGViZWxvdz03NzA2O2UuRXVybz04MzY0O2UuRXpoPTQzOTtlLkV6aGNhcm9uPTQ5NDtlLkV6aHJldmVyc2VkPTQ0MDtlLkY9NzA7ZS5GY2lyY2xlPTk0MDM7ZS5GZG90YWNjZW50PTc3MTA7ZS5GZWhhcm1lbmlhbj0xMzY2O2UuRmVpY29wdGljPTk5NjtlLkZob29rPTQwMTtlLkZpdGFjeXJpbGxpYz0xMTM4O2UuRml2ZXJvbWFuPTg1NDg7ZS5GbW9ub3NwYWNlPTY1MzE4O2UuRm91cnJvbWFuPTg1NDc7ZS5Gc21hbGw9NjMzMzQ7ZS5HPTcxO2UuR0JzcXVhcmU9MTMxOTE7ZS5HYWN1dGU9NTAwO2UuR2FtbWE9OTE1O2UuR2FtbWFhZnJpY2FuPTQwNDtlLkdhbmdpYWNvcHRpYz0xMDAyO2UuR2JyZXZlPTI4NjtlLkdjYXJvbj00ODY7ZS5HY2VkaWxsYT0yOTA7ZS5HY2lyY2xlPTk0MDQ7ZS5HY2lyY3VtZmxleD0yODQ7ZS5HY29tbWFhY2NlbnQ9MjkwO2UuR2RvdD0yODg7ZS5HZG90YWNjZW50PTI4ODtlLkdlY3lyaWxsaWM9MTA0MztlLkdoYWRhcm1lbmlhbj0xMzQ2O2UuR2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzI7ZS5HaGVzdHJva2VjeXJpbGxpYz0xMTcwO2UuR2hldXB0dXJuY3lyaWxsaWM9MTE2ODtlLkdob29rPTQwMztlLkdpbWFybWVuaWFuPTEzMzE7ZS5HamVjeXJpbGxpYz0xMDI3O2UuR21hY3Jvbj03NzEyO2UuR21vbm9zcGFjZT02NTMxOTtlLkdyYXZlPTYzMTgyO2UuR3JhdmVzbWFsbD02MzMyODtlLkdzbWFsbD02MzMzNTtlLkdzbWFsbGhvb2s9NjY3O2UuR3N0cm9rZT00ODQ7ZS5IPTcyO2UuSDE4NTMzPTk2Nzk7ZS5IMTg1NDM9OTY0MjtlLkgxODU1MT05NjQzO2UuSDIyMDczPTk2MzM7ZS5IUHNxdWFyZT0xMzI1OTtlLkhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MjtlLkhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMjtlLkhhcmRzaWduY3lyaWxsaWM9MTA2NjtlLkhiYXI9Mjk0O2UuSGJyZXZlYmVsb3c9NzcyMjtlLkhjZWRpbGxhPTc3MjA7ZS5IY2lyY2xlPTk0MDU7ZS5IY2lyY3VtZmxleD0yOTI7ZS5IZGllcmVzaXM9NzcxODtlLkhkb3RhY2NlbnQ9NzcxNDtlLkhkb3RiZWxvdz03NzE2O2UuSG1vbm9zcGFjZT02NTMyMDtlLkhvYXJtZW5pYW49MTM0NDtlLkhvcmljb3B0aWM9MWUzO2UuSHNtYWxsPTYzMzM2O2UuSHVuZ2FydW1sYXV0PTYzMTgzO2UuSHVuZ2FydW1sYXV0c21hbGw9NjMyMjQ7ZS5IenNxdWFyZT0xMzIwMDtlLkk9NzM7ZS5JQWN5cmlsbGljPTEwNzE7ZS5JSj0zMDY7ZS5JVWN5cmlsbGljPTEwNzA7ZS5JYWN1dGU9MjA1O2UuSWFjdXRlc21hbGw9NjM0Njk7ZS5JYnJldmU9MzAwO2UuSWNhcm9uPTQ2MztlLkljaXJjbGU9OTQwNjtlLkljaXJjdW1mbGV4PTIwNjtlLkljaXJjdW1mbGV4c21hbGw9NjM0NzA7ZS5JY3lyaWxsaWM9MTAzMDtlLklkYmxncmF2ZT01MjA7ZS5JZGllcmVzaXM9MjA3O2UuSWRpZXJlc2lzYWN1dGU9NzcyNjtlLklkaWVyZXNpc2N5cmlsbGljPTEyNTI7ZS5JZGllcmVzaXNzbWFsbD02MzQ3MTtlLklkb3Q9MzA0O2UuSWRvdGFjY2VudD0zMDQ7ZS5JZG90YmVsb3c9Nzg4MjtlLkllYnJldmVjeXJpbGxpYz0xMjM4O2UuSWVjeXJpbGxpYz0xMDQ1O2UuSWZyYWt0dXI9ODQ2NTtlLklncmF2ZT0yMDQ7ZS5JZ3JhdmVzbWFsbD02MzQ2ODtlLklob29rYWJvdmU9Nzg4MDtlLklpY3lyaWxsaWM9MTA0ODtlLklpbnZlcnRlZGJyZXZlPTUyMjtlLklpc2hvcnRjeXJpbGxpYz0xMDQ5O2UuSW1hY3Jvbj0yOTg7ZS5JbWFjcm9uY3lyaWxsaWM9MTI1MDtlLkltb25vc3BhY2U9NjUzMjE7ZS5Jbmlhcm1lbmlhbj0xMzM5O2UuSW9jeXJpbGxpYz0xMDI1O2UuSW9nb25laz0zMDI7ZS5Jb3RhPTkyMTtlLklvdGFhZnJpY2FuPTQwNjtlLklvdGFkaWVyZXNpcz05Mzg7ZS5Jb3RhdG9ub3M9OTA2O2UuSXNtYWxsPTYzMzM3O2UuSXN0cm9rZT00MDc7ZS5JdGlsZGU9Mjk2O2UuSXRpbGRlYmVsb3c9NzcyNDtlLkl6aGl0c2FjeXJpbGxpYz0xMTQwO2UuSXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MjtlLko9NzQ7ZS5KYWFybWVuaWFuPTEzNDU7ZS5KY2lyY2xlPTk0MDc7ZS5KY2lyY3VtZmxleD0zMDg7ZS5KZWN5cmlsbGljPTEwMzI7ZS5KaGVoYXJtZW5pYW49MTM1NTtlLkptb25vc3BhY2U9NjUzMjI7ZS5Kc21hbGw9NjMzMzg7ZS5LPTc1O2UuS0JzcXVhcmU9MTMxODk7ZS5LS3NxdWFyZT0xMzI2MTtlLkthYmFzaGtpcmN5cmlsbGljPTExODQ7ZS5LYWN1dGU9NzcyODtlLkthY3lyaWxsaWM9MTA1MDtlLkthZGVzY2VuZGVyY3lyaWxsaWM9MTE3ODtlLkthaG9va2N5cmlsbGljPTEyMTk7ZS5LYXBwYT05MjI7ZS5LYXN0cm9rZWN5cmlsbGljPTExODI7ZS5LYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MDtlLktjYXJvbj00ODg7ZS5LY2VkaWxsYT0zMTA7ZS5LY2lyY2xlPTk0MDg7ZS5LY29tbWFhY2NlbnQ9MzEwO2UuS2RvdGJlbG93PTc3MzA7ZS5LZWhhcm1lbmlhbj0xMzY0O2UuS2VuYXJtZW5pYW49MTM0MztlLktoYWN5cmlsbGljPTEwNjE7ZS5LaGVpY29wdGljPTk5ODtlLktob29rPTQwODtlLktqZWN5cmlsbGljPTEwMzY7ZS5LbGluZWJlbG93PTc3MzI7ZS5LbW9ub3NwYWNlPTY1MzIzO2UuS29wcGFjeXJpbGxpYz0xMTUyO2UuS29wcGFncmVlaz05OTA7ZS5Lc2ljeXJpbGxpYz0xMTM0O2UuS3NtYWxsPTYzMzM5O2UuTD03NjtlLkxKPTQ1NTtlLkxMPTYzMTY3O2UuTGFjdXRlPTMxMztlLkxhbWJkYT05MjM7ZS5MY2Fyb249MzE3O2UuTGNlZGlsbGE9MzE1O2UuTGNpcmNsZT05NDA5O2UuTGNpcmN1bWZsZXhiZWxvdz03NzQwO2UuTGNvbW1hYWNjZW50PTMxNTtlLkxkb3Q9MzE5O2UuTGRvdGFjY2VudD0zMTk7ZS5MZG90YmVsb3c9NzczNDtlLkxkb3RiZWxvd21hY3Jvbj03NzM2O2UuTGl3bmFybWVuaWFuPTEzNDA7ZS5Maj00NTY7ZS5MamVjeXJpbGxpYz0xMDMzO2UuTGxpbmViZWxvdz03NzM4O2UuTG1vbm9zcGFjZT02NTMyNDtlLkxzbGFzaD0zMjE7ZS5Mc2xhc2hzbWFsbD02MzIyNTtlLkxzbWFsbD02MzM0MDtlLk09Nzc7ZS5NQnNxdWFyZT0xMzE5MDtlLk1hY3Jvbj02MzE4NDtlLk1hY3JvbnNtYWxsPTYzNDA3O2UuTWFjdXRlPTc3NDI7ZS5NY2lyY2xlPTk0MTA7ZS5NZG90YWNjZW50PTc3NDQ7ZS5NZG90YmVsb3c9Nzc0NjtlLk1lbmFybWVuaWFuPTEzNDg7ZS5NbW9ub3NwYWNlPTY1MzI1O2UuTXNtYWxsPTYzMzQxO2UuTXR1cm5lZD00MTI7ZS5NdT05MjQ7ZS5OPTc4O2UuTko9NDU4O2UuTmFjdXRlPTMyMztlLk5jYXJvbj0zMjc7ZS5OY2VkaWxsYT0zMjU7ZS5OY2lyY2xlPTk0MTE7ZS5OY2lyY3VtZmxleGJlbG93PTc3NTQ7ZS5OY29tbWFhY2NlbnQ9MzI1O2UuTmRvdGFjY2VudD03NzQ4O2UuTmRvdGJlbG93PTc3NTA7ZS5OaG9va2xlZnQ9NDEzO2UuTmluZXJvbWFuPTg1NTI7ZS5Oaj00NTk7ZS5OamVjeXJpbGxpYz0xMDM0O2UuTmxpbmViZWxvdz03NzUyO2UuTm1vbm9zcGFjZT02NTMyNjtlLk5vd2FybWVuaWFuPTEzNTA7ZS5Oc21hbGw9NjMzNDI7ZS5OdGlsZGU9MjA5O2UuTnRpbGRlc21hbGw9NjM0NzM7ZS5OdT05MjU7ZS5PPTc5O2UuT0U9MzM4O2UuT0VzbWFsbD02MzIyNjtlLk9hY3V0ZT0yMTE7ZS5PYWN1dGVzbWFsbD02MzQ3NTtlLk9iYXJyZWRjeXJpbGxpYz0xMjU2O2UuT2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1ODtlLk9icmV2ZT0zMzQ7ZS5PY2Fyb249NDY1O2UuT2NlbnRlcmVkdGlsZGU9NDE1O2UuT2NpcmNsZT05NDEyO2UuT2NpcmN1bWZsZXg9MjEyO2UuT2NpcmN1bWZsZXhhY3V0ZT03ODg4O2UuT2NpcmN1bWZsZXhkb3RiZWxvdz03ODk2O2UuT2NpcmN1bWZsZXhncmF2ZT03ODkwO2UuT2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MjtlLk9jaXJjdW1mbGV4c21hbGw9NjM0NzY7ZS5PY2lyY3VtZmxleHRpbGRlPTc4OTQ7ZS5PY3lyaWxsaWM9MTA1NDtlLk9kYmxhY3V0ZT0zMzY7ZS5PZGJsZ3JhdmU9NTI0O2UuT2RpZXJlc2lzPTIxNDtlLk9kaWVyZXNpc2N5cmlsbGljPTEyNTQ7ZS5PZGllcmVzaXNzbWFsbD02MzQ3ODtlLk9kb3RiZWxvdz03ODg0O2UuT2dvbmVrc21hbGw9NjMyMjc7ZS5PZ3JhdmU9MjEwO2UuT2dyYXZlc21hbGw9NjM0NzQ7ZS5PaGFybWVuaWFuPTEzNjU7ZS5PaG09ODQ4NjtlLk9ob29rYWJvdmU9Nzg4NjtlLk9ob3JuPTQxNjtlLk9ob3JuYWN1dGU9Nzg5ODtlLk9ob3JuZG90YmVsb3c9NzkwNjtlLk9ob3JuZ3JhdmU9NzkwMDtlLk9ob3JuaG9va2Fib3ZlPTc5MDI7ZS5PaG9ybnRpbGRlPTc5MDQ7ZS5PaHVuZ2FydW1sYXV0PTMzNjtlLk9pPTQxODtlLk9pbnZlcnRlZGJyZXZlPTUyNjtlLk9tYWNyb249MzMyO2UuT21hY3JvbmFjdXRlPTc3NjI7ZS5PbWFjcm9uZ3JhdmU9Nzc2MDtlLk9tZWdhPTg0ODY7ZS5PbWVnYWN5cmlsbGljPTExMjA7ZS5PbWVnYWdyZWVrPTkzNztlLk9tZWdhcm91bmRjeXJpbGxpYz0xMTQ2O2UuT21lZ2F0aXRsb2N5cmlsbGljPTExNDg7ZS5PbWVnYXRvbm9zPTkxMTtlLk9taWNyb249OTI3O2UuT21pY3JvbnRvbm9zPTkwODtlLk9tb25vc3BhY2U9NjUzMjc7ZS5PbmVyb21hbj04NTQ0O2UuT29nb25laz00OTA7ZS5Pb2dvbmVrbWFjcm9uPTQ5MjtlLk9vcGVuPTM5MDtlLk9zbGFzaD0yMTY7ZS5Pc2xhc2hhY3V0ZT01MTA7ZS5Pc2xhc2hzbWFsbD02MzQ4MDtlLk9zbWFsbD02MzM0MztlLk9zdHJva2VhY3V0ZT01MTA7ZS5PdGN5cmlsbGljPTExNTA7ZS5PdGlsZGU9MjEzO2UuT3RpbGRlYWN1dGU9Nzc1NjtlLk90aWxkZWRpZXJlc2lzPTc3NTg7ZS5PdGlsZGVzbWFsbD02MzQ3NztlLlA9ODA7ZS5QYWN1dGU9Nzc2NDtlLlBjaXJjbGU9OTQxMztlLlBkb3RhY2NlbnQ9Nzc2NjtlLlBlY3lyaWxsaWM9MTA1NTtlLlBlaGFybWVuaWFuPTEzNTQ7ZS5QZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkwO2UuUGhpPTkzNDtlLlBob29rPTQyMDtlLlBpPTkyODtlLlBpd3Jhcm1lbmlhbj0xMzYzO2UuUG1vbm9zcGFjZT02NTMyODtlLlBzaT05MzY7ZS5Qc2ljeXJpbGxpYz0xMTM2O2UuUHNtYWxsPTYzMzQ0O2UuUT04MTtlLlFjaXJjbGU9OTQxNDtlLlFtb25vc3BhY2U9NjUzMjk7ZS5Rc21hbGw9NjMzNDU7ZS5SPTgyO2UuUmFhcm1lbmlhbj0xMzU2O2UuUmFjdXRlPTM0MDtlLlJjYXJvbj0zNDQ7ZS5SY2VkaWxsYT0zNDI7ZS5SY2lyY2xlPTk0MTU7ZS5SY29tbWFhY2NlbnQ9MzQyO2UuUmRibGdyYXZlPTUyODtlLlJkb3RhY2NlbnQ9Nzc2ODtlLlJkb3RiZWxvdz03NzcwO2UuUmRvdGJlbG93bWFjcm9uPTc3NzI7ZS5SZWhhcm1lbmlhbj0xMzYwO2UuUmZyYWt0dXI9ODQ3NjtlLlJobz05Mjk7ZS5SaW5nc21hbGw9NjMyMjg7ZS5SaW52ZXJ0ZWRicmV2ZT01MzA7ZS5SbGluZWJlbG93PTc3NzQ7ZS5SbW9ub3NwYWNlPTY1MzMwO2UuUnNtYWxsPTYzMzQ2O2UuUnNtYWxsaW52ZXJ0ZWQ9NjQxO2UuUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcj02OTQ7ZS5TPTgzO2UuU0YwMTAwMDA9OTQ4NDtlLlNGMDIwMDAwPTk0OTI7ZS5TRjAzMDAwMD05NDg4O2UuU0YwNDAwMDA9OTQ5NjtlLlNGMDUwMDAwPTk1MzI7ZS5TRjA2MDAwMD05NTE2O2UuU0YwNzAwMDA9OTUyNDtlLlNGMDgwMDAwPTk1MDA7ZS5TRjA5MDAwMD05NTA4O2UuU0YxMDAwMDA9OTQ3MjtlLlNGMTEwMDAwPTk0NzQ7ZS5TRjE5MDAwMD05NTY5O2UuU0YyMDAwMDA9OTU3MDtlLlNGMjEwMDAwPTk1NTg7ZS5TRjIyMDAwMD05NTU3O2UuU0YyMzAwMDA9OTU3MTtlLlNGMjQwMDAwPTk1NTM7ZS5TRjI1MDAwMD05NTU5O2UuU0YyNjAwMDA9OTU2NTtlLlNGMjcwMDAwPTk1NjQ7ZS5TRjI4MDAwMD05NTYzO2UuU0YzNjAwMDA9OTU2NjtlLlNGMzcwMDAwPTk1Njc7ZS5TRjM4MDAwMD05NTYyO2UuU0YzOTAwMDA9OTU1NjtlLlNGNDAwMDAwPTk1Nzc7ZS5TRjQxMDAwMD05NTc0O2UuU0Y0MjAwMDA9OTU2ODtlLlNGNDMwMDAwPTk1NTI7ZS5TRjQ0MDAwMD05NTgwO2UuU0Y0NTAwMDA9OTU3NTtlLlNGNDYwMDAwPTk1NzY7ZS5TRjQ3MDAwMD05NTcyO2UuU0Y0ODAwMDA9OTU3MztlLlNGNDkwMDAwPTk1NjE7ZS5TRjUwMDAwMD05NTYwO2UuU0Y1MTAwMDA9OTU1NDtlLlNGNTIwMDAwPTk1NTU7ZS5TRjUzMDAwMD05NTc5O2UuU0Y1NDAwMDA9OTU3ODtlLlNhY3V0ZT0zNDY7ZS5TYWN1dGVkb3RhY2NlbnQ9Nzc4MDtlLlNhbXBpZ3JlZWs9OTkyO2UuU2Nhcm9uPTM1MjtlLlNjYXJvbmRvdGFjY2VudD03NzgyO2UuU2Nhcm9uc21hbGw9NjMyMjk7ZS5TY2VkaWxsYT0zNTA7ZS5TY2h3YT0zOTk7ZS5TY2h3YWN5cmlsbGljPTEyNDA7ZS5TY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MjtlLlNjaXJjbGU9OTQxNjtlLlNjaXJjdW1mbGV4PTM0ODtlLlNjb21tYWFjY2VudD01MzY7ZS5TZG90YWNjZW50PTc3NzY7ZS5TZG90YmVsb3c9Nzc3ODtlLlNkb3RiZWxvd2RvdGFjY2VudD03Nzg0O2UuU2VoYXJtZW5pYW49MTM1NztlLlNldmVucm9tYW49ODU1MDtlLlNoYWFybWVuaWFuPTEzNTE7ZS5TaGFjeXJpbGxpYz0xMDY0O2UuU2hjaGFjeXJpbGxpYz0xMDY1O2UuU2hlaWNvcHRpYz05OTQ7ZS5TaGhhY3lyaWxsaWM9MTIxMDtlLlNoaW1hY29wdGljPTEwMDQ7ZS5TaWdtYT05MzE7ZS5TaXhyb21hbj04NTQ5O2UuU21vbm9zcGFjZT02NTMzMTtlLlNvZnRzaWduY3lyaWxsaWM9MTA2ODtlLlNzbWFsbD02MzM0NztlLlN0aWdtYWdyZWVrPTk4NjtlLlQ9ODQ7ZS5UYXU9OTMyO2UuVGJhcj0zNTg7ZS5UY2Fyb249MzU2O2UuVGNlZGlsbGE9MzU0O2UuVGNpcmNsZT05NDE3O2UuVGNpcmN1bWZsZXhiZWxvdz03NzkyO2UuVGNvbW1hYWNjZW50PTM1NDtlLlRkb3RhY2NlbnQ9Nzc4NjtlLlRkb3RiZWxvdz03Nzg4O2UuVGVjeXJpbGxpYz0xMDU4O2UuVGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk2O2UuVGVucm9tYW49ODU1MztlLlRldHNlY3lyaWxsaWM9MTIwNDtlLlRoZXRhPTkyMDtlLlRob29rPTQyODtlLlRob3JuPTIyMjtlLlRob3Juc21hbGw9NjM0ODY7ZS5UaHJlZXJvbWFuPTg1NDY7ZS5UaWxkZXNtYWxsPTYzMjMwO2UuVGl3bmFybWVuaWFuPTEzNTk7ZS5UbGluZWJlbG93PTc3OTA7ZS5UbW9ub3NwYWNlPTY1MzMyO2UuVG9hcm1lbmlhbj0xMzM3O2UuVG9uZWZpdmU9NDQ0O2UuVG9uZXNpeD0zODg7ZS5Ub25ldHdvPTQyMztlLlRyZXRyb2ZsZXhob29rPTQzMDtlLlRzZWN5cmlsbGljPTEwNjI7ZS5Uc2hlY3lyaWxsaWM9MTAzNTtlLlRzbWFsbD02MzM0ODtlLlR3ZWx2ZXJvbWFuPTg1NTU7ZS5Ud29yb21hbj04NTQ1O2UuVT04NTtlLlVhY3V0ZT0yMTg7ZS5VYWN1dGVzbWFsbD02MzQ4MjtlLlVicmV2ZT0zNjQ7ZS5VY2Fyb249NDY3O2UuVWNpcmNsZT05NDE4O2UuVWNpcmN1bWZsZXg9MjE5O2UuVWNpcmN1bWZsZXhiZWxvdz03Nzk4O2UuVWNpcmN1bWZsZXhzbWFsbD02MzQ4MztlLlVjeXJpbGxpYz0xMDU5O2UuVWRibGFjdXRlPTM2ODtlLlVkYmxncmF2ZT01MzI7ZS5VZGllcmVzaXM9MjIwO2UuVWRpZXJlc2lzYWN1dGU9NDcxO2UuVWRpZXJlc2lzYmVsb3c9Nzc5NDtlLlVkaWVyZXNpc2Nhcm9uPTQ3MztlLlVkaWVyZXNpc2N5cmlsbGljPTEyNjQ7ZS5VZGllcmVzaXNncmF2ZT00NzU7ZS5VZGllcmVzaXNtYWNyb249NDY5O2UuVWRpZXJlc2lzc21hbGw9NjM0ODQ7ZS5VZG90YmVsb3c9NzkwODtlLlVncmF2ZT0yMTc7ZS5VZ3JhdmVzbWFsbD02MzQ4MTtlLlVob29rYWJvdmU9NzkxMDtlLlVob3JuPTQzMTtlLlVob3JuYWN1dGU9NzkxMjtlLlVob3JuZG90YmVsb3c9NzkyMDtlLlVob3JuZ3JhdmU9NzkxNDtlLlVob3JuaG9va2Fib3ZlPTc5MTY7ZS5VaG9ybnRpbGRlPTc5MTg7ZS5VaHVuZ2FydW1sYXV0PTM2ODtlLlVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY2O2UuVWludmVydGVkYnJldmU9NTM0O2UuVWtjeXJpbGxpYz0xMTQ0O2UuVW1hY3Jvbj0zNjI7ZS5VbWFjcm9uY3lyaWxsaWM9MTI2MjtlLlVtYWNyb25kaWVyZXNpcz03ODAyO2UuVW1vbm9zcGFjZT02NTMzMztlLlVvZ29uZWs9MzcwO2UuVXBzaWxvbj05MzM7ZS5VcHNpbG9uMT05Nzg7ZS5VcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs9OTc5O2UuVXBzaWxvbmFmcmljYW49NDMzO2UuVXBzaWxvbmRpZXJlc2lzPTkzOTtlLlVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlaz05ODA7ZS5VcHNpbG9uaG9va3N5bWJvbD05Nzg7ZS5VcHNpbG9udG9ub3M9OTEwO2UuVXJpbmc9MzY2O2UuVXNob3J0Y3lyaWxsaWM9MTAzODtlLlVzbWFsbD02MzM0OTtlLlVzdHJhaWdodGN5cmlsbGljPTExOTg7ZS5Vc3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAwO2UuVXRpbGRlPTM2MDtlLlV0aWxkZWFjdXRlPTc4MDA7ZS5VdGlsZGViZWxvdz03Nzk2O2UuVj04NjtlLlZjaXJjbGU9OTQxOTtlLlZkb3RiZWxvdz03ODA2O2UuVmVjeXJpbGxpYz0xMDQyO2UuVmV3YXJtZW5pYW49MTM1ODtlLlZob29rPTQzNDtlLlZtb25vc3BhY2U9NjUzMzQ7ZS5Wb2FybWVuaWFuPTEzNTI7ZS5Wc21hbGw9NjMzNTA7ZS5WdGlsZGU9NzgwNDtlLlc9ODc7ZS5XYWN1dGU9NzgxMDtlLldjaXJjbGU9OTQyMDtlLldjaXJjdW1mbGV4PTM3MjtlLldkaWVyZXNpcz03ODEyO2UuV2RvdGFjY2VudD03ODE0O2UuV2RvdGJlbG93PTc4MTY7ZS5XZ3JhdmU9NzgwODtlLldtb25vc3BhY2U9NjUzMzU7ZS5Xc21hbGw9NjMzNTE7ZS5YPTg4O2UuWGNpcmNsZT05NDIxO2UuWGRpZXJlc2lzPTc4MjA7ZS5YZG90YWNjZW50PTc4MTg7ZS5YZWhhcm1lbmlhbj0xMzQxO2UuWGk9OTI2O2UuWG1vbm9zcGFjZT02NTMzNjtlLlhzbWFsbD02MzM1MjtlLlk9ODk7ZS5ZYWN1dGU9MjIxO2UuWWFjdXRlc21hbGw9NjM0ODU7ZS5ZYXRjeXJpbGxpYz0xMTIyO2UuWWNpcmNsZT05NDIyO2UuWWNpcmN1bWZsZXg9Mzc0O2UuWWRpZXJlc2lzPTM3NjtlLllkaWVyZXNpc3NtYWxsPTYzNDg3O2UuWWRvdGFjY2VudD03ODIyO2UuWWRvdGJlbG93PTc5MjQ7ZS5ZZXJpY3lyaWxsaWM9MTA2NztlLlllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzI7ZS5ZZ3JhdmU9NzkyMjtlLllob29rPTQzNTtlLllob29rYWJvdmU9NzkyNjtlLllpYXJtZW5pYW49MTM0OTtlLllpY3lyaWxsaWM9MTAzMTtlLllpd25hcm1lbmlhbj0xMzYyO2UuWW1vbm9zcGFjZT02NTMzNztlLllzbWFsbD02MzM1MztlLll0aWxkZT03OTI4O2UuWXVzYmlnY3lyaWxsaWM9MTEzMDtlLll1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMjtlLll1c2xpdHRsZWN5cmlsbGljPTExMjY7ZS5ZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjg7ZS5aPTkwO2UuWmFhcm1lbmlhbj0xMzM0O2UuWmFjdXRlPTM3NztlLlpjYXJvbj0zODE7ZS5aY2Fyb25zbWFsbD02MzIzMTtlLlpjaXJjbGU9OTQyMztlLlpjaXJjdW1mbGV4PTc4MjQ7ZS5aZG90PTM3OTtlLlpkb3RhY2NlbnQ9Mzc5O2UuWmRvdGJlbG93PTc4MjY7ZS5aZWN5cmlsbGljPTEwNDc7ZS5aZWRlc2NlbmRlcmN5cmlsbGljPTExNzY7ZS5aZWRpZXJlc2lzY3lyaWxsaWM9MTI0NjtlLlpldGE9OTE4O2UuWmhlYXJtZW5pYW49MTMzODtlLlpoZWJyZXZlY3lyaWxsaWM9MTIxNztlLlpoZWN5cmlsbGljPTEwNDY7ZS5aaGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc0O2UuWmhlZGllcmVzaXNjeXJpbGxpYz0xMjQ0O2UuWmxpbmViZWxvdz03ODI4O2UuWm1vbm9zcGFjZT02NTMzODtlLlpzbWFsbD02MzM1NDtlLlpzdHJva2U9NDM3O2UuYT05NztlLmFhYmVuZ2FsaT0yNDM4O2UuYWFjdXRlPTIyNTtlLmFhZGV2YT0yMzEwO2UuYWFndWphcmF0aT0yNjk0O2UuYWFndXJtdWtoaT0yNTY2O2UuYWFtYXRyYWd1cm11a2hpPTI2MjI7ZS5hYXJ1c3F1YXJlPTEzMDU5O2UuYWF2b3dlbHNpZ25iZW5nYWxpPTI0OTQ7ZS5hYXZvd2Vsc2lnbmRldmE9MjM2NjtlLmFhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MDtlLmFiYnJldmlhdGlvbm1hcmthcm1lbmlhbj0xMzc1O2UuYWJicmV2aWF0aW9uc2lnbmRldmE9MjQxNjtlLmFiZW5nYWxpPTI0Mzc7ZS5hYm9wb21vZm89MTI1NzA7ZS5hYnJldmU9MjU5O2UuYWJyZXZlYWN1dGU9Nzg1NTtlLmFicmV2ZWN5cmlsbGljPTEyMzM7ZS5hYnJldmVkb3RiZWxvdz03ODYzO2UuYWJyZXZlZ3JhdmU9Nzg1NztlLmFicmV2ZWhvb2thYm92ZT03ODU5O2UuYWJyZXZldGlsZGU9Nzg2MTtlLmFjYXJvbj00NjI7ZS5hY2lyY2xlPTk0MjQ7ZS5hY2lyY3VtZmxleD0yMjY7ZS5hY2lyY3VtZmxleGFjdXRlPTc4NDU7ZS5hY2lyY3VtZmxleGRvdGJlbG93PTc4NTM7ZS5hY2lyY3VtZmxleGdyYXZlPTc4NDc7ZS5hY2lyY3VtZmxleGhvb2thYm92ZT03ODQ5O2UuYWNpcmN1bWZsZXh0aWxkZT03ODUxO2UuYWN1dGU9MTgwO2UuYWN1dGViZWxvd2NtYj03OTE7ZS5hY3V0ZWNtYj03Njk7ZS5hY3V0ZWNvbWI9NzY5O2UuYWN1dGVkZXZhPTIzODg7ZS5hY3V0ZWxvd21vZD03MTk7ZS5hY3V0ZXRvbmVjbWI9ODMzO2UuYWN5cmlsbGljPTEwNzI7ZS5hZGJsZ3JhdmU9NTEzO2UuYWRkYWtndXJtdWtoaT0yNjczO2UuYWRldmE9MjMwOTtlLmFkaWVyZXNpcz0yMjg7ZS5hZGllcmVzaXNjeXJpbGxpYz0xMjM1O2UuYWRpZXJlc2lzbWFjcm9uPTQ3OTtlLmFkb3RiZWxvdz03ODQxO2UuYWRvdG1hY3Jvbj00ODE7ZS5hZT0yMzA7ZS5hZWFjdXRlPTUwOTtlLmFla29yZWFuPTEyNjI0O2UuYWVtYWNyb249NDgzO2UuYWZpaTAwMjA4PTgyMTM7ZS5hZmlpMDg5NDE9ODM1NjtlLmFmaWkxMDAxNz0xMDQwO2UuYWZpaTEwMDE4PTEwNDE7ZS5hZmlpMTAwMTk9MTA0MjtlLmFmaWkxMDAyMD0xMDQzO2UuYWZpaTEwMDIxPTEwNDQ7ZS5hZmlpMTAwMjI9MTA0NTtlLmFmaWkxMDAyMz0xMDI1O2UuYWZpaTEwMDI0PTEwNDY7ZS5hZmlpMTAwMjU9MTA0NztlLmFmaWkxMDAyNj0xMDQ4O2UuYWZpaTEwMDI3PTEwNDk7ZS5hZmlpMTAwMjg9MTA1MDtlLmFmaWkxMDAyOT0xMDUxO2UuYWZpaTEwMDMwPTEwNTI7ZS5hZmlpMTAwMzE9MTA1MztlLmFmaWkxMDAzMj0xMDU0O2UuYWZpaTEwMDMzPTEwNTU7ZS5hZmlpMTAwMzQ9MTA1NjtlLmFmaWkxMDAzNT0xMDU3O2UuYWZpaTEwMDM2PTEwNTg7ZS5hZmlpMTAwMzc9MTA1OTtlLmFmaWkxMDAzOD0xMDYwO2UuYWZpaTEwMDM5PTEwNjE7ZS5hZmlpMTAwNDA9MTA2MjtlLmFmaWkxMDA0MT0xMDYzO2UuYWZpaTEwMDQyPTEwNjQ7ZS5hZmlpMTAwNDM9MTA2NTtlLmFmaWkxMDA0ND0xMDY2O2UuYWZpaTEwMDQ1PTEwNjc7ZS5hZmlpMTAwNDY9MTA2ODtlLmFmaWkxMDA0Nz0xMDY5O2UuYWZpaTEwMDQ4PTEwNzA7ZS5hZmlpMTAwNDk9MTA3MTtlLmFmaWkxMDA1MD0xMTY4O2UuYWZpaTEwMDUxPTEwMjY7ZS5hZmlpMTAwNTI9MTAyNztlLmFmaWkxMDA1Mz0xMDI4O2UuYWZpaTEwMDU0PTEwMjk7ZS5hZmlpMTAwNTU9MTAzMDtlLmFmaWkxMDA1Nj0xMDMxO2UuYWZpaTEwMDU3PTEwMzI7ZS5hZmlpMTAwNTg9MTAzMztlLmFmaWkxMDA1OT0xMDM0O2UuYWZpaTEwMDYwPTEwMzU7ZS5hZmlpMTAwNjE9MTAzNjtlLmFmaWkxMDA2Mj0xMDM4O2UuYWZpaTEwMDYzPTYzMTcyO2UuYWZpaTEwMDY0PTYzMTczO2UuYWZpaTEwMDY1PTEwNzI7ZS5hZmlpMTAwNjY9MTA3MztlLmFmaWkxMDA2Nz0xMDc0O2UuYWZpaTEwMDY4PTEwNzU7ZS5hZmlpMTAwNjk9MTA3NjtlLmFmaWkxMDA3MD0xMDc3O2UuYWZpaTEwMDcxPTExMDU7ZS5hZmlpMTAwNzI9MTA3ODtlLmFmaWkxMDA3Mz0xMDc5O2UuYWZpaTEwMDc0PTEwODA7ZS5hZmlpMTAwNzU9MTA4MTtlLmFmaWkxMDA3Nj0xMDgyO2UuYWZpaTEwMDc3PTEwODM7ZS5hZmlpMTAwNzg9MTA4NDtlLmFmaWkxMDA3OT0xMDg1O2UuYWZpaTEwMDgwPTEwODY7ZS5hZmlpMTAwODE9MTA4NztlLmFmaWkxMDA4Mj0xMDg4O2UuYWZpaTEwMDgzPTEwODk7ZS5hZmlpMTAwODQ9MTA5MDtlLmFmaWkxMDA4NT0xMDkxO2UuYWZpaTEwMDg2PTEwOTI7ZS5hZmlpMTAwODc9MTA5MztlLmFmaWkxMDA4OD0xMDk0O2UuYWZpaTEwMDg5PTEwOTU7ZS5hZmlpMTAwOTA9MTA5NjtlLmFmaWkxMDA5MT0xMDk3O2UuYWZpaTEwMDkyPTEwOTg7ZS5hZmlpMTAwOTM9MTA5OTtlLmFmaWkxMDA5ND0xMTAwO2UuYWZpaTEwMDk1PTExMDE7ZS5hZmlpMTAwOTY9MTEwMjtlLmFmaWkxMDA5Nz0xMTAzO2UuYWZpaTEwMDk4PTExNjk7ZS5hZmlpMTAwOTk9MTEwNjtlLmFmaWkxMDEwMD0xMTA3O2UuYWZpaTEwMTAxPTExMDg7ZS5hZmlpMTAxMDI9MTEwOTtlLmFmaWkxMDEwMz0xMTEwO2UuYWZpaTEwMTA0PTExMTE7ZS5hZmlpMTAxMDU9MTExMjtlLmFmaWkxMDEwNj0xMTEzO2UuYWZpaTEwMTA3PTExMTQ7ZS5hZmlpMTAxMDg9MTExNTtlLmFmaWkxMDEwOT0xMTE2O2UuYWZpaTEwMTEwPTExMTg7ZS5hZmlpMTAxNDU9MTAzOTtlLmFmaWkxMDE0Nj0xMTIyO2UuYWZpaTEwMTQ3PTExMzg7ZS5hZmlpMTAxNDg9MTE0MDtlLmFmaWkxMDE5Mj02MzE3NDtlLmFmaWkxMDE5Mz0xMTE5O2UuYWZpaTEwMTk0PTExMjM7ZS5hZmlpMTAxOTU9MTEzOTtlLmFmaWkxMDE5Nj0xMTQxO2UuYWZpaTEwODMxPTYzMTc1O2UuYWZpaTEwODMyPTYzMTc2O2UuYWZpaTEwODQ2PTEyNDE7ZS5hZmlpMjk5PTgyMDY7ZS5hZmlpMzAwPTgyMDc7ZS5hZmlpMzAxPTgyMDU7ZS5hZmlpNTczODE9MTY0MjtlLmFmaWk1NzM4OD0xNTQ4O2UuYWZpaTU3MzkyPTE2MzI7ZS5hZmlpNTczOTM9MTYzMztlLmFmaWk1NzM5ND0xNjM0O2UuYWZpaTU3Mzk1PTE2MzU7ZS5hZmlpNTczOTY9MTYzNjtlLmFmaWk1NzM5Nz0xNjM3O2UuYWZpaTU3Mzk4PTE2Mzg7ZS5hZmlpNTczOTk9MTYzOTtlLmFmaWk1NzQwMD0xNjQwO2UuYWZpaTU3NDAxPTE2NDE7ZS5hZmlpNTc0MDM9MTU2MztlLmFmaWk1NzQwNz0xNTY3O2UuYWZpaTU3NDA5PTE1Njk7ZS5hZmlpNTc0MTA9MTU3MDtlLmFmaWk1NzQxMT0xNTcxO2UuYWZpaTU3NDEyPTE1NzI7ZS5hZmlpNTc0MTM9MTU3MztlLmFmaWk1NzQxND0xNTc0O2UuYWZpaTU3NDE1PTE1NzU7ZS5hZmlpNTc0MTY9MTU3NjtlLmFmaWk1NzQxNz0xNTc3O2UuYWZpaTU3NDE4PTE1Nzg7ZS5hZmlpNTc0MTk9MTU3OTtlLmFmaWk1NzQyMD0xNTgwO2UuYWZpaTU3NDIxPTE1ODE7ZS5hZmlpNTc0MjI9MTU4MjtlLmFmaWk1NzQyMz0xNTgzO2UuYWZpaTU3NDI0PTE1ODQ7ZS5hZmlpNTc0MjU9MTU4NTtlLmFmaWk1NzQyNj0xNTg2O2UuYWZpaTU3NDI3PTE1ODc7ZS5hZmlpNTc0Mjg9MTU4ODtlLmFmaWk1NzQyOT0xNTg5O2UuYWZpaTU3NDMwPTE1OTA7ZS5hZmlpNTc0MzE9MTU5MTtlLmFmaWk1NzQzMj0xNTkyO2UuYWZpaTU3NDMzPTE1OTM7ZS5hZmlpNTc0MzQ9MTU5NDtlLmFmaWk1NzQ0MD0xNjAwO2UuYWZpaTU3NDQxPTE2MDE7ZS5hZmlpNTc0NDI9MTYwMjtlLmFmaWk1NzQ0Mz0xNjAzO2UuYWZpaTU3NDQ0PTE2MDQ7ZS5hZmlpNTc0NDU9MTYwNTtlLmFmaWk1NzQ0Nj0xNjA2O2UuYWZpaTU3NDQ4PTE2MDg7ZS5hZmlpNTc0NDk9MTYwOTtlLmFmaWk1NzQ1MD0xNjEwO2UuYWZpaTU3NDUxPTE2MTE7ZS5hZmlpNTc0NTI9MTYxMjtlLmFmaWk1NzQ1Mz0xNjEzO2UuYWZpaTU3NDU0PTE2MTQ7ZS5hZmlpNTc0NTU9MTYxNTtlLmFmaWk1NzQ1Nj0xNjE2O2UuYWZpaTU3NDU3PTE2MTc7ZS5hZmlpNTc0NTg9MTYxODtlLmFmaWk1NzQ3MD0xNjA3O2UuYWZpaTU3NTA1PTE3MDA7ZS5hZmlpNTc1MDY9MTY2MjtlLmFmaWk1NzUwNz0xNjcwO2UuYWZpaTU3NTA4PTE2ODg7ZS5hZmlpNTc1MDk9MTcxMTtlLmFmaWk1NzUxMT0xNjU3O2UuYWZpaTU3NTEyPTE2NzI7ZS5hZmlpNTc1MTM9MTY4MTtlLmFmaWk1NzUxND0xNzIyO2UuYWZpaTU3NTE5PTE3NDY7ZS5hZmlpNTc1MzQ9MTc0OTtlLmFmaWk1NzYzNj04MzYyO2UuYWZpaTU3NjQ1PTE0NzA7ZS5hZmlpNTc2NTg9MTQ3NTtlLmFmaWk1NzY2ND0xNDg4O2UuYWZpaTU3NjY1PTE0ODk7ZS5hZmlpNTc2NjY9MTQ5MDtlLmFmaWk1NzY2Nz0xNDkxO2UuYWZpaTU3NjY4PTE0OTI7ZS5hZmlpNTc2Njk9MTQ5MztlLmFmaWk1NzY3MD0xNDk0O2UuYWZpaTU3NjcxPTE0OTU7ZS5hZmlpNTc2NzI9MTQ5NjtlLmFmaWk1NzY3Mz0xNDk3O2UuYWZpaTU3Njc0PTE0OTg7ZS5hZmlpNTc2NzU9MTQ5OTtlLmFmaWk1NzY3Nj0xNTAwO2UuYWZpaTU3Njc3PTE1MDE7ZS5hZmlpNTc2Nzg9MTUwMjtlLmFmaWk1NzY3OT0xNTAzO2UuYWZpaTU3NjgwPTE1MDQ7ZS5hZmlpNTc2ODE9MTUwNTtlLmFmaWk1NzY4Mj0xNTA2O2UuYWZpaTU3NjgzPTE1MDc7ZS5hZmlpNTc2ODQ9MTUwODtlLmFmaWk1NzY4NT0xNTA5O2UuYWZpaTU3Njg2PTE1MTA7ZS5hZmlpNTc2ODc9MTUxMTtlLmFmaWk1NzY4OD0xNTEyO2UuYWZpaTU3Njg5PTE1MTM7ZS5hZmlpNTc2OTA9MTUxNDtlLmFmaWk1NzY5ND02NDI5ODtlLmFmaWk1NzY5NT02NDI5OTtlLmFmaWk1NzcwMD02NDMzMTtlLmFmaWk1NzcwNT02NDI4NztlLmFmaWk1NzcxNj0xNTIwO2UuYWZpaTU3NzE3PTE1MjE7ZS5hZmlpNTc3MTg9MTUyMjtlLmFmaWk1NzcyMz02NDMwOTtlLmFmaWk1Nzc5Mz0xNDYwO2UuYWZpaTU3Nzk0PTE0NjE7ZS5hZmlpNTc3OTU9MTQ2MjtlLmFmaWk1Nzc5Nj0xNDY3O2UuYWZpaTU3Nzk3PTE0NjQ7ZS5hZmlpNTc3OTg9MTQ2MztlLmFmaWk1Nzc5OT0xNDU2O2UuYWZpaTU3ODAwPTE0NTg7ZS5hZmlpNTc4MDE9MTQ1NztlLmFmaWk1NzgwMj0xNDU5O2UuYWZpaTU3ODAzPTE0NzQ7ZS5hZmlpNTc4MDQ9MTQ3MztlLmFmaWk1NzgwNj0xNDY1O2UuYWZpaTU3ODA3PTE0Njg7ZS5hZmlpNTc4Mzk9MTQ2OTtlLmFmaWk1Nzg0MT0xNDcxO2UuYWZpaTU3ODQyPTE0NzI7ZS5hZmlpNTc5Mjk9NzAwO2UuYWZpaTYxMjQ4PTg0NTM7ZS5hZmlpNjEyODk9ODQ2NztlLmFmaWk2MTM1Mj04NDcwO2UuYWZpaTYxNTczPTgyMzY7ZS5hZmlpNjE1NzQ9ODIzNztlLmFmaWk2MTU3NT04MjM4O2UuYWZpaTYxNjY0PTgyMDQ7ZS5hZmlpNjMxNjc9MTY0NTtlLmFmaWk2NDkzNz03MDE7ZS5hZ3JhdmU9MjI0O2UuYWd1amFyYXRpPTI2OTM7ZS5hZ3VybXVraGk9MjU2NTtlLmFoaXJhZ2FuYT0xMjM1NDtlLmFob29rYWJvdmU9Nzg0MztlLmFpYmVuZ2FsaT0yNDQ4O2UuYWlib3BvbW9mbz0xMjU3NDtlLmFpZGV2YT0yMzIwO2UuYWllY3lyaWxsaWM9MTIzNztlLmFpZ3VqYXJhdGk9MjcwNDtlLmFpZ3VybXVraGk9MjU3NjtlLmFpbWF0cmFndXJtdWtoaT0yNjMyO2UuYWluYXJhYmljPTE1OTM7ZS5haW5maW5hbGFyYWJpYz02NTIyNjtlLmFpbmluaXRpYWxhcmFiaWM9NjUyMjc7ZS5haW5tZWRpYWxhcmFiaWM9NjUyMjg7ZS5haW52ZXJ0ZWRicmV2ZT01MTU7ZS5haXZvd2Vsc2lnbmJlbmdhbGk9MjUwNDtlLmFpdm93ZWxzaWduZGV2YT0yMzc2O2UuYWl2b3dlbHNpZ25ndWphcmF0aT0yNzYwO2UuYWthdGFrYW5hPTEyNDUwO2UuYWthdGFrYW5haGFsZndpZHRoPTY1MzkzO2UuYWtvcmVhbj0xMjYyMztlLmFsZWY9MTQ4ODtlLmFsZWZhcmFiaWM9MTU3NTtlLmFsZWZkYWdlc2hoZWJyZXc9NjQzMDQ7ZS5hbGVmZmluYWxhcmFiaWM9NjUxNjY7ZS5hbGVmaGFtemFhYm92ZWFyYWJpYz0xNTcxO2UuYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1NjtlLmFsZWZoYW16YWJlbG93YXJhYmljPTE1NzM7ZS5hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1MTYwO2UuYWxlZmhlYnJldz0xNDg4O2UuYWxlZmxhbWVkaGVicmV3PTY0MzM1O2UuYWxlZm1hZGRhYWJvdmVhcmFiaWM9MTU3MDtlLmFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUxNTQ7ZS5hbGVmbWFrc3VyYWFyYWJpYz0xNjA5O2UuYWxlZm1ha3N1cmFmaW5hbGFyYWJpYz02NTI2NDtlLmFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYz02NTI2NztlLmFsZWZtYWtzdXJhbWVkaWFsYXJhYmljPTY1MjY4O2UuYWxlZnBhdGFoaGVicmV3PTY0MzAyO2UuYWxlZnFhbWF0c2hlYnJldz02NDMwMztlLmFsZXBoPTg1MDE7ZS5hbGxlcXVhbD04NzgwO2UuYWxwaGE9OTQ1O2UuYWxwaGF0b25vcz05NDA7ZS5hbWFjcm9uPTI1NztlLmFtb25vc3BhY2U9NjUzNDU7ZS5hbXBlcnNhbmQ9Mzg7ZS5hbXBlcnNhbmRtb25vc3BhY2U9NjUyODY7ZS5hbXBlcnNhbmRzbWFsbD02MzI3MDtlLmFtc3F1YXJlPTEzMjUwO2UuYW5ib3BvbW9mbz0xMjU3ODtlLmFuZ2JvcG9tb2ZvPTEyNTgwO2UuYW5nYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdraGFua2h1dGhhaT0zNjc0O2UuYW5nbGU9ODczNjtlLmFuZ2xlYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODc7ZS5hbmdsZWJyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODg7ZS5hbmdsZWxlZnQ9OTAwMTtlLmFuZ2xlcmlnaHQ9OTAwMjtlLmFuZ3N0cm9tPTg0OTE7ZS5hbm90ZWxlaWE9OTAzO2UuYW51ZGF0dGFkZXZhPTIzODY7ZS5hbnVzdmFyYWJlbmdhbGk9MjQzNDtlLmFudXN2YXJhZGV2YT0yMzA2O2UuYW51c3ZhcmFndWphcmF0aT0yNjkwO2UuYW9nb25laz0yNjE7ZS5hcGFhdG9zcXVhcmU9MTMwNTY7ZS5hcGFyZW49OTM3MjtlLmFwb3N0cm9waGVhcm1lbmlhbj0xMzcwO2UuYXBvc3Ryb3BoZW1vZD03MDA7ZS5hcHBsZT02Mzc0MztlLmFwcHJvYWNoZXM9ODc4NDtlLmFwcHJveGVxdWFsPTg3NzY7ZS5hcHByb3hlcXVhbG9yaW1hZ2U9ODc4NjtlLmFwcHJveGltYXRlbHllcXVhbD04NzczO2UuYXJhZWFla29yZWFuPTEyNjg2O2UuYXJhZWFrb3JlYW49MTI2ODU7ZS5hcmM9ODk3ODtlLmFyaWdodGhhbGZyaW5nPTc4MzQ7ZS5hcmluZz0yMjk7ZS5hcmluZ2FjdXRlPTUwNztlLmFyaW5nYmVsb3c9NzY4MTtlLmFycm93Ym90aD04NTk2O2UuYXJyb3dkYXNoZG93bj04Njc1O2UuYXJyb3dkYXNobGVmdD04NjcyO2UuYXJyb3dkYXNocmlnaHQ9ODY3NDtlLmFycm93ZGFzaHVwPTg2NzM7ZS5hcnJvd2RibGJvdGg9ODY2MDtlLmFycm93ZGJsZG93bj04NjU5O2UuYXJyb3dkYmxsZWZ0PTg2NTY7ZS5hcnJvd2RibHJpZ2h0PTg2NTg7ZS5hcnJvd2RibHVwPTg2NTc7ZS5hcnJvd2Rvd249ODU5NTtlLmFycm93ZG93bmxlZnQ9ODYwMTtlLmFycm93ZG93bnJpZ2h0PTg2MDA7ZS5hcnJvd2Rvd253aGl0ZT04NjgxO2UuYXJyb3doZWFkZG93bm1vZD03MDk7ZS5hcnJvd2hlYWRsZWZ0bW9kPTcwNjtlLmFycm93aGVhZHJpZ2h0bW9kPTcwNztlLmFycm93aGVhZHVwbW9kPTcwODtlLmFycm93aG9yaXpleD02MzcxOTtlLmFycm93bGVmdD04NTkyO2UuYXJyb3dsZWZ0ZGJsPTg2NTY7ZS5hcnJvd2xlZnRkYmxzdHJva2U9ODY1MztlLmFycm93bGVmdG92ZXJyaWdodD04NjQ2O2UuYXJyb3dsZWZ0d2hpdGU9ODY3ODtlLmFycm93cmlnaHQ9ODU5NDtlLmFycm93cmlnaHRkYmxzdHJva2U9ODY1NTtlLmFycm93cmlnaHRoZWF2eT0xMDE0MjtlLmFycm93cmlnaHRvdmVybGVmdD04NjQ0O2UuYXJyb3dyaWdodHdoaXRlPTg2ODA7ZS5hcnJvd3RhYmxlZnQ9ODY3NjtlLmFycm93dGFicmlnaHQ9ODY3NztlLmFycm93dXA9ODU5MztlLmFycm93dXBkbj04NTk3O2UuYXJyb3d1cGRuYnNlPTg2MTY7ZS5hcnJvd3VwZG93bmJhc2U9ODYxNjtlLmFycm93dXBsZWZ0PTg1OTg7ZS5hcnJvd3VwbGVmdG9mZG93bj04NjQ1O2UuYXJyb3d1cHJpZ2h0PTg1OTk7ZS5hcnJvd3Vwd2hpdGU9ODY3OTtlLmFycm93dmVydGV4PTYzNzE4O2UuYXNjaWljaXJjdW09OTQ7ZS5hc2NpaWNpcmN1bW1vbm9zcGFjZT02NTM0MjtlLmFzY2lpdGlsZGU9MTI2O2UuYXNjaWl0aWxkZW1vbm9zcGFjZT02NTM3NDtlLmFzY3JpcHQ9NTkzO2UuYXNjcmlwdHR1cm5lZD01OTQ7ZS5hc21hbGxoaXJhZ2FuYT0xMjM1MztlLmFzbWFsbGthdGFrYW5hPTEyNDQ5O2UuYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODM7ZS5hc3Rlcmlzaz00MjtlLmFzdGVyaXNrYWx0b25lYXJhYmljPTE2NDU7ZS5hc3Rlcmlza2FyYWJpYz0xNjQ1O2UuYXN0ZXJpc2ttYXRoPTg3Mjc7ZS5hc3Rlcmlza21vbm9zcGFjZT02NTI5MDtlLmFzdGVyaXNrc21hbGw9NjUxMjE7ZS5hc3RlcmlzbT04MjU4O2UuYXN1cGVyaW9yPTYzMjA5O2UuYXN5bXB0b3RpY2FsbHllcXVhbD04NzcxO2UuYXQ9NjQ7ZS5hdGlsZGU9MjI3O2UuYXRtb25vc3BhY2U9NjUzMTI7ZS5hdHNtYWxsPTY1MTMxO2UuYXR1cm5lZD01OTI7ZS5hdWJlbmdhbGk9MjQ1MjtlLmF1Ym9wb21vZm89MTI1NzY7ZS5hdWRldmE9MjMyNDtlLmF1Z3VqYXJhdGk9MjcwODtlLmF1Z3VybXVraGk9MjU4MDtlLmF1bGVuZ3RobWFya2JlbmdhbGk9MjUxOTtlLmF1bWF0cmFndXJtdWtoaT0yNjM2O2UuYXV2b3dlbHNpZ25iZW5nYWxpPTI1MDg7ZS5hdXZvd2Vsc2lnbmRldmE9MjM4MDtlLmF1dm93ZWxzaWduZ3VqYXJhdGk9Mjc2NDtlLmF2YWdyYWhhZGV2YT0yMzY1O2UuYXliYXJtZW5pYW49MTM3NztlLmF5aW49MTUwNjtlLmF5aW5hbHRvbmVoZWJyZXc9NjQyODg7ZS5heWluaGVicmV3PTE1MDY7ZS5iPTk4O2UuYmFiZW5nYWxpPTI0NzY7ZS5iYWNrc2xhc2g9OTI7ZS5iYWNrc2xhc2htb25vc3BhY2U9NjUzNDA7ZS5iYWRldmE9MjM0ODtlLmJhZ3VqYXJhdGk9MjczMjtlLmJhZ3VybXVraGk9MjYwNDtlLmJhaGlyYWdhbmE9MTI0MDA7ZS5iYWh0dGhhaT0zNjQ3O2UuYmFrYXRha2FuYT0xMjQ5NjtlLmJhcj0xMjQ7ZS5iYXJtb25vc3BhY2U9NjUzNzI7ZS5iYm9wb21vZm89MTI1NDk7ZS5iY2lyY2xlPTk0MjU7ZS5iZG90YWNjZW50PTc2ODM7ZS5iZG90YmVsb3c9NzY4NTtlLmJlYW1lZHNpeHRlZW50aG5vdGVzPTk4MzY7ZS5iZWNhdXNlPTg3NTc7ZS5iZWN5cmlsbGljPTEwNzM7ZS5iZWhhcmFiaWM9MTU3NjtlLmJlaGZpbmFsYXJhYmljPTY1MTY4O2UuYmVoaW5pdGlhbGFyYWJpYz02NTE2OTtlLmJlaGlyYWdhbmE9MTI0MDk7ZS5iZWhtZWRpYWxhcmFiaWM9NjUxNzA7ZS5iZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3MTtlLmJlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyMDtlLmJlaG5vb25maW5hbGFyYWJpYz02NDYyMTtlLmJla2F0YWthbmE9MTI1MDU7ZS5iZW5hcm1lbmlhbj0xMzc4O2UuYmV0PTE0ODk7ZS5iZXRhPTk0NjtlLmJldGFzeW1ib2xncmVlaz05NzY7ZS5iZXRkYWdlc2g9NjQzMDU7ZS5iZXRkYWdlc2hoZWJyZXc9NjQzMDU7ZS5iZXRoZWJyZXc9MTQ4OTtlLmJldHJhZmVoZWJyZXc9NjQzMzI7ZS5iaGFiZW5nYWxpPTI0Nzc7ZS5iaGFkZXZhPTIzNDk7ZS5iaGFndWphcmF0aT0yNzMzO2UuYmhhZ3VybXVraGk9MjYwNTtlLmJob29rPTU5NTtlLmJpaGlyYWdhbmE9MTI0MDM7ZS5iaWthdGFrYW5hPTEyNDk5O2UuYmlsYWJpYWxjbGljaz02NjQ7ZS5iaW5kaWd1cm11a2hpPTI1NjI7ZS5iaXJ1c3F1YXJlPTEzMTA1O2UuYmxhY2tjaXJjbGU9OTY3OTtlLmJsYWNrZGlhbW9uZD05NjcwO2UuYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYwO2UuYmxhY2tsZWZ0cG9pbnRpbmdwb2ludGVyPTk2Njg7ZS5ibGFja2xlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMwNDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODM7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMDU7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NDtlLmJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU9OTY5OTtlLmJsYWNrbG93ZXJyaWdodHRyaWFuZ2xlPTk2OTg7ZS5ibGFja3JlY3RhbmdsZT05NjQ0O2UuYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcj05NjU4O2UuYmxhY2tyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NDtlLmJsYWNrc21hbGxzcXVhcmU9OTY0MjtlLmJsYWNrc21pbGluZ2ZhY2U9OTc4NztlLmJsYWNrc3F1YXJlPTk2MzI7ZS5ibGFja3N0YXI9OTczMztlLmJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU9OTcwMDtlLmJsYWNrdXBwZXJyaWdodHRyaWFuZ2xlPTk3MDE7ZS5ibGFja3VwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTI7ZS5ibGFja3VwcG9pbnRpbmd0cmlhbmdsZT05NjUwO2UuYmxhbms9OTI1MTtlLmJsaW5lYmVsb3c9NzY4NztlLmJsb2NrPTk2MDg7ZS5ibW9ub3NwYWNlPTY1MzQ2O2UuYm9iYWltYWl0aGFpPTM2MTA7ZS5ib2hpcmFnYW5hPTEyNDEyO2UuYm9rYXRha2FuYT0xMjUwODtlLmJwYXJlbj05MzczO2UuYnFzcXVhcmU9MTMyNTE7ZS5icmFjZWV4PTYzNzMyO2UuYnJhY2VsZWZ0PTEyMztlLmJyYWNlbGVmdGJ0PTYzNzMxO2UuYnJhY2VsZWZ0bWlkPTYzNzMwO2UuYnJhY2VsZWZ0bW9ub3NwYWNlPTY1MzcxO2UuYnJhY2VsZWZ0c21hbGw9NjUxMTU7ZS5icmFjZWxlZnR0cD02MzcyOTtlLmJyYWNlbGVmdHZlcnRpY2FsPTY1MDc5O2UuYnJhY2VyaWdodD0xMjU7ZS5icmFjZXJpZ2h0YnQ9NjM3NDI7ZS5icmFjZXJpZ2h0bWlkPTYzNzQxO2UuYnJhY2VyaWdodG1vbm9zcGFjZT02NTM3MztlLmJyYWNlcmlnaHRzbWFsbD02NTExNjtlLmJyYWNlcmlnaHR0cD02Mzc0MDtlLmJyYWNlcmlnaHR2ZXJ0aWNhbD02NTA4MDtlLmJyYWNrZXRsZWZ0PTkxO2UuYnJhY2tldGxlZnRidD02MzcyODtlLmJyYWNrZXRsZWZ0ZXg9NjM3Mjc7ZS5icmFja2V0bGVmdG1vbm9zcGFjZT02NTMzOTtlLmJyYWNrZXRsZWZ0dHA9NjM3MjY7ZS5icmFja2V0cmlnaHQ9OTM7ZS5icmFja2V0cmlnaHRidD02MzczOTtlLmJyYWNrZXRyaWdodGV4PTYzNzM4O2UuYnJhY2tldHJpZ2h0bW9ub3NwYWNlPTY1MzQxO2UuYnJhY2tldHJpZ2h0dHA9NjM3Mzc7ZS5icmV2ZT03Mjg7ZS5icmV2ZWJlbG93Y21iPTgxNDtlLmJyZXZlY21iPTc3NDtlLmJyZXZlaW52ZXJ0ZWRiZWxvd2NtYj04MTU7ZS5icmV2ZWludmVydGVkY21iPTc4NTtlLmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWI9ODY1O2UuYnJpZGdlYmVsb3djbWI9ODEwO2UuYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYj04MjY7ZS5icm9rZW5iYXI9MTY2O2UuYnN0cm9rZT0zODQ7ZS5ic3VwZXJpb3I9NjMyMTA7ZS5idG9wYmFyPTM4NztlLmJ1aGlyYWdhbmE9MTI0MDY7ZS5idWthdGFrYW5hPTEyNTAyO2UuYnVsbGV0PTgyMjY7ZS5idWxsZXRpbnZlcnNlPTk2ODg7ZS5idWxsZXRvcGVyYXRvcj04NzI5O2UuYnVsbHNleWU9OTY3ODtlLmM9OTk7ZS5jYWFybWVuaWFuPTEzOTA7ZS5jYWJlbmdhbGk9MjQ1ODtlLmNhY3V0ZT0yNjM7ZS5jYWRldmE9MjMzMDtlLmNhZ3VqYXJhdGk9MjcxNDtlLmNhZ3VybXVraGk9MjU4NjtlLmNhbHNxdWFyZT0xMzE5MjtlLmNhbmRyYWJpbmR1YmVuZ2FsaT0yNDMzO2UuY2FuZHJhYmluZHVjbWI9Nzg0O2UuY2FuZHJhYmluZHVkZXZhPTIzMDU7ZS5jYW5kcmFiaW5kdWd1amFyYXRpPTI2ODk7ZS5jYXBzbG9jaz04NjgyO2UuY2FyZW9mPTg0NTM7ZS5jYXJvbj03MTE7ZS5jYXJvbmJlbG93Y21iPTgxMjtlLmNhcm9uY21iPTc4MDtlLmNhcnJpYWdlcmV0dXJuPTg2Mjk7ZS5jYm9wb21vZm89MTI1Njg7ZS5jY2Fyb249MjY5O2UuY2NlZGlsbGE9MjMxO2UuY2NlZGlsbGFhY3V0ZT03Njg5O2UuY2NpcmNsZT05NDI2O2UuY2NpcmN1bWZsZXg9MjY1O2UuY2N1cmw9NTk3O2UuY2RvdD0yNjc7ZS5jZG90YWNjZW50PTI2NztlLmNkc3F1YXJlPTEzMjUzO2UuY2VkaWxsYT0xODQ7ZS5jZWRpbGxhY21iPTgwNztlLmNlbnQ9MTYyO2UuY2VudGlncmFkZT04NDUxO2UuY2VudGluZmVyaW9yPTYzMTk5O2UuY2VudG1vbm9zcGFjZT02NTUwNDtlLmNlbnRvbGRzdHlsZT02MzM5NDtlLmNlbnRzdXBlcmlvcj02MzIwMDtlLmNoYWFybWVuaWFuPTE0MDE7ZS5jaGFiZW5nYWxpPTI0NTk7ZS5jaGFkZXZhPTIzMzE7ZS5jaGFndWphcmF0aT0yNzE1O2UuY2hhZ3VybXVraGk9MjU4NztlLmNoYm9wb21vZm89MTI1NjQ7ZS5jaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEzO2UuY2hlY2ttYXJrPTEwMDAzO2UuY2hlY3lyaWxsaWM9MTA5NTtlLmNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTU7ZS5jaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA3O2UuY2hlZGllcmVzaXNjeXJpbGxpYz0xMjY5O2UuY2hlaGFybWVuaWFuPTEzOTU7ZS5jaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyODtlLmNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwOTtlLmNoaT05Njc7ZS5jaGlldWNoYWNpcmNsZWtvcmVhbj0xMjkxOTtlLmNoaWV1Y2hhcGFyZW5rb3JlYW49MTI4MjM7ZS5jaGlldWNoY2lyY2xla29yZWFuPTEyOTA1O2UuY2hpZXVjaGtvcmVhbj0xMjYxODtlLmNoaWV1Y2hwYXJlbmtvcmVhbj0xMjgwOTtlLmNob2NoYW5ndGhhaT0zNTk0O2UuY2hvY2hhbnRoYWk9MzU5MjtlLmNob2NoaW5ndGhhaT0zNTkzO2UuY2hvY2hvZXRoYWk9MzU5NjtlLmNob29rPTM5MjtlLmNpZXVjYWNpcmNsZWtvcmVhbj0xMjkxODtlLmNpZXVjYXBhcmVua29yZWFuPTEyODIyO2UuY2lldWNjaXJjbGVrb3JlYW49MTI5MDQ7ZS5jaWV1Y2tvcmVhbj0xMjYxNjtlLmNpZXVjcGFyZW5rb3JlYW49MTI4MDg7ZS5jaWV1Y3VwYXJlbmtvcmVhbj0xMjgyODtlLmNpcmNsZT05Njc1O2UuY2lyY2xlY29weXJ0PTE2OTtlLmNpcmNsZW11bHRpcGx5PTg4NTU7ZS5jaXJjbGVvdD04ODU3O2UuY2lyY2xlcGx1cz04ODUzO2UuY2lyY2xlcG9zdGFsbWFyaz0xMjM0MjtlLmNpcmNsZXdpdGhsZWZ0aGFsZmJsYWNrPTk2ODA7ZS5jaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s9OTY4MTtlLmNpcmN1bWZsZXg9NzEwO2UuY2lyY3VtZmxleGJlbG93Y21iPTgxMztlLmNpcmN1bWZsZXhjbWI9NzcwO2UuY2xlYXI9ODk5OTtlLmNsaWNrYWx2ZW9sYXI9NDUwO2UuY2xpY2tkZW50YWw9NDQ4O2UuY2xpY2tsYXRlcmFsPTQ0OTtlLmNsaWNrcmV0cm9mbGV4PTQ1MTtlLmNsdWI9OTgyNztlLmNsdWJzdWl0YmxhY2s9OTgyNztlLmNsdWJzdWl0d2hpdGU9OTgzMTtlLmNtY3ViZWRzcXVhcmU9MTMyMjA7ZS5jbW9ub3NwYWNlPTY1MzQ3O2UuY21zcXVhcmVkc3F1YXJlPTEzMjE2O2UuY29hcm1lbmlhbj0xNDA5O2UuY29sb249NTg7ZS5jb2xvbm1vbmV0YXJ5PTgzNTM7ZS5jb2xvbm1vbm9zcGFjZT02NTMwNjtlLmNvbG9uc2lnbj04MzUzO2UuY29sb25zbWFsbD02NTEwOTtlLmNvbG9udHJpYW5ndWxhcmhhbGZtb2Q9NzIxO2UuY29sb250cmlhbmd1bGFybW9kPTcyMDtlLmNvbW1hPTQ0O2UuY29tbWFhYm92ZWNtYj03ODc7ZS5jb21tYWFib3ZlcmlnaHRjbWI9Nzg5O2UuY29tbWFhY2NlbnQ9NjMxNzE7ZS5jb21tYWFyYWJpYz0xNTQ4O2UuY29tbWFhcm1lbmlhbj0xMzczO2UuY29tbWFpbmZlcmlvcj02MzIwMTtlLmNvbW1hbW9ub3NwYWNlPTY1MjkyO2UuY29tbWFyZXZlcnNlZGFib3ZlY21iPTc4ODtlLmNvbW1hcmV2ZXJzZWRtb2Q9NzAxO2UuY29tbWFzbWFsbD02NTEwNDtlLmNvbW1hc3VwZXJpb3I9NjMyMDI7ZS5jb21tYXR1cm5lZGFib3ZlY21iPTc4NjtlLmNvbW1hdHVybmVkbW9kPTY5OTtlLmNvbXBhc3M9OTc4ODtlLmNvbmdydWVudD04NzczO2UuY29udG91cmludGVncmFsPTg3NTA7ZS5jb250cm9sPTg5NjM7ZS5jb250cm9sQUNLPTY7ZS5jb250cm9sQkVMPTc7ZS5jb250cm9sQlM9ODtlLmNvbnRyb2xDQU49MjQ7ZS5jb250cm9sQ1I9MTM7ZS5jb250cm9sREMxPTE3O2UuY29udHJvbERDMj0xODtlLmNvbnRyb2xEQzM9MTk7ZS5jb250cm9sREM0PTIwO2UuY29udHJvbERFTD0xMjc7ZS5jb250cm9sRExFPTE2O2UuY29udHJvbEVNPTI1O2UuY29udHJvbEVOUT01O2UuY29udHJvbEVPVD00O2UuY29udHJvbEVTQz0yNztlLmNvbnRyb2xFVEI9MjM7ZS5jb250cm9sRVRYPTM7ZS5jb250cm9sRkY9MTI7ZS5jb250cm9sRlM9Mjg7ZS5jb250cm9sR1M9Mjk7ZS5jb250cm9sSFQ9OTtlLmNvbnRyb2xMRj0xMDtlLmNvbnRyb2xOQUs9MjE7ZS5jb250cm9sTlVMTD0wO2UuY29udHJvbFJTPTMwO2UuY29udHJvbFNJPTE1O2UuY29udHJvbFNPPTE0O2UuY29udHJvbFNPVD0yO2UuY29udHJvbFNUWD0xO2UuY29udHJvbFNVQj0yNjtlLmNvbnRyb2xTWU49MjI7ZS5jb250cm9sVVM9MzE7ZS5jb250cm9sVlQ9MTE7ZS5jb3B5cmlnaHQ9MTY5O2UuY29weXJpZ2h0c2Fucz02MzcyMTtlLmNvcHlyaWdodHNlcmlmPTYzMTkzO2UuY29ybmVyYnJhY2tldGxlZnQ9MTIzMDA7ZS5jb3JuZXJicmFja2V0bGVmdGhhbGZ3aWR0aD02NTM3ODtlLmNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODk7ZS5jb3JuZXJicmFja2V0cmlnaHQ9MTIzMDE7ZS5jb3JuZXJicmFja2V0cmlnaHRoYWxmd2lkdGg9NjUzNzk7ZS5jb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MDtlLmNvcnBvcmF0aW9uc3F1YXJlPTEzMTgzO2UuY29zcXVhcmU9MTMyNTU7ZS5jb3Zlcmtnc3F1YXJlPTEzMjU0O2UuY3BhcmVuPTkzNzQ7ZS5jcnV6ZWlybz04MzU0O2UuY3N0cmV0Y2hlZD02NjM7ZS5jdXJseWFuZD04OTExO2UuY3VybHlvcj04OTEwO2UuY3VycmVuY3k9MTY0O2UuY3lyQnJldmU9NjMxODU7ZS5jeXJGbGV4PTYzMTg2O2UuY3lyYnJldmU9NjMxODg7ZS5jeXJmbGV4PTYzMTg5O2UuZD0xMDA7ZS5kYWFybWVuaWFuPTEzODA7ZS5kYWJlbmdhbGk9MjQ3MDtlLmRhZGFyYWJpYz0xNTkwO2UuZGFkZXZhPTIzNDI7ZS5kYWRmaW5hbGFyYWJpYz02NTIxNDtlLmRhZGluaXRpYWxhcmFiaWM9NjUyMTU7ZS5kYWRtZWRpYWxhcmFiaWM9NjUyMTY7ZS5kYWdlc2g9MTQ2ODtlLmRhZ2VzaGhlYnJldz0xNDY4O2UuZGFnZ2VyPTgyMjQ7ZS5kYWdnZXJkYmw9ODIyNTtlLmRhZ3VqYXJhdGk9MjcyNjtlLmRhZ3VybXVraGk9MjU5ODtlLmRhaGlyYWdhbmE9MTIzODQ7ZS5kYWthdGFrYW5hPTEyNDgwO2UuZGFsYXJhYmljPTE1ODM7ZS5kYWxldD0xNDkxO2UuZGFsZXRkYWdlc2g9NjQzMDc7ZS5kYWxldGRhZ2VzaGhlYnJldz02NDMwNztlLmRhbGV0aGVicmV3PTE0OTE7ZS5kYWxmaW5hbGFyYWJpYz02NTE5NDtlLmRhbW1hYXJhYmljPTE2MTU7ZS5kYW1tYWxvd2FyYWJpYz0xNjE1O2UuZGFtbWF0YW5hbHRvbmVhcmFiaWM9MTYxMjtlLmRhbW1hdGFuYXJhYmljPTE2MTI7ZS5kYW5kYT0yNDA0O2UuZGFyZ2FoZWJyZXc9MTQ0NztlLmRhcmdhbGVmdGhlYnJldz0xNDQ3O2UuZGFzaWFwbmV1bWF0YWN5cmlsbGljY21iPTExNTc7ZS5kYmxHcmF2ZT02MzE4NztlLmRibGFuZ2xlYnJhY2tldGxlZnQ9MTIyOTg7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODU7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodD0xMjI5OTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODY7ZS5kYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYj04MTE7ZS5kYmxhcnJvd2xlZnQ9ODY2MDtlLmRibGFycm93cmlnaHQ9ODY1ODtlLmRibGRhbmRhPTI0MDU7ZS5kYmxncmF2ZT02MzE5MDtlLmRibGdyYXZlY21iPTc4MztlLmRibGludGVncmFsPTg3NDg7ZS5kYmxsb3dsaW5lPTgyMTU7ZS5kYmxsb3dsaW5lY21iPTgxOTtlLmRibG92ZXJsaW5lY21iPTgzMTtlLmRibHByaW1lbW9kPTY5ODtlLmRibHZlcnRpY2FsYmFyPTgyMTQ7ZS5kYmx2ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODI7ZS5kYm9wb21vZm89MTI1NTM7ZS5kYnNxdWFyZT0xMzI1NjtlLmRjYXJvbj0yNzE7ZS5kY2VkaWxsYT03Njk3O2UuZGNpcmNsZT05NDI3O2UuZGNpcmN1bWZsZXhiZWxvdz03Njk5O2UuZGNyb2F0PTI3MztlLmRkYWJlbmdhbGk9MjQ2NTtlLmRkYWRldmE9MjMzNztlLmRkYWd1amFyYXRpPTI3MjE7ZS5kZGFndXJtdWtoaT0yNTkzO2UuZGRhbGFyYWJpYz0xNjcyO2UuZGRhbGZpbmFsYXJhYmljPTY0MzkzO2UuZGRkaGFkZXZhPTIzOTY7ZS5kZGhhYmVuZ2FsaT0yNDY2O2UuZGRoYWRldmE9MjMzODtlLmRkaGFndWphcmF0aT0yNzIyO2UuZGRoYWd1cm11a2hpPTI1OTQ7ZS5kZG90YWNjZW50PTc2OTE7ZS5kZG90YmVsb3c9NzY5MztlLmRlY2ltYWxzZXBhcmF0b3JhcmFiaWM9MTY0MztlLmRlY2ltYWxzZXBhcmF0b3JwZXJzaWFuPTE2NDM7ZS5kZWN5cmlsbGljPTEwNzY7ZS5kZWdyZWU9MTc2O2UuZGVoaWhlYnJldz0xNDUzO2UuZGVoaXJhZ2FuYT0xMjM5MTtlLmRlaWNvcHRpYz0xMDA3O2UuZGVrYXRha2FuYT0xMjQ4NztlLmRlbGV0ZWxlZnQ9OTAwMztlLmRlbGV0ZXJpZ2h0PTg5OTg7ZS5kZWx0YT05NDg7ZS5kZWx0YXR1cm5lZD0zOTc7ZS5kZW5vbWluYXRvcm1pbnVzb25lbnVtZXJhdG9yYmVuZ2FsaT0yNTUyO2UuZGV6aD02NzY7ZS5kaGFiZW5nYWxpPTI0NzE7ZS5kaGFkZXZhPTIzNDM7ZS5kaGFndWphcmF0aT0yNzI3O2UuZGhhZ3VybXVraGk9MjU5OTtlLmRob29rPTU5OTtlLmRpYWx5dGlrYXRvbm9zPTkwMTtlLmRpYWx5dGlrYXRvbm9zY21iPTgzNjtlLmRpYW1vbmQ9OTgzMDtlLmRpYW1vbmRzdWl0d2hpdGU9OTgyNjtlLmRpZXJlc2lzPTE2ODtlLmRpZXJlc2lzYWN1dGU9NjMxOTE7ZS5kaWVyZXNpc2JlbG93Y21iPTgwNDtlLmRpZXJlc2lzY21iPTc3NjtlLmRpZXJlc2lzZ3JhdmU9NjMxOTI7ZS5kaWVyZXNpc3Rvbm9zPTkwMTtlLmRpaGlyYWdhbmE9MTIzODY7ZS5kaWthdGFrYW5hPTEyNDgyO2UuZGl0dG9tYXJrPTEyMjkxO2UuZGl2aWRlPTI0NztlLmRpdmlkZXM9ODczOTtlLmRpdmlzaW9uc2xhc2g9ODcyNTtlLmRqZWN5cmlsbGljPTExMDY7ZS5ka3NoYWRlPTk2MTk7ZS5kbGluZWJlbG93PTc2OTU7ZS5kbHNxdWFyZT0xMzIwNztlLmRtYWNyb249MjczO2UuZG1vbm9zcGFjZT02NTM0ODtlLmRuYmxvY2s9OTYwNDtlLmRvY2hhZGF0aGFpPTM1OTg7ZS5kb2Rla3RoYWk9MzYwNDtlLmRvaGlyYWdhbmE9MTIzOTM7ZS5kb2thdGFrYW5hPTEyNDg5O2UuZG9sbGFyPTM2O2UuZG9sbGFyaW5mZXJpb3I9NjMyMDM7ZS5kb2xsYXJtb25vc3BhY2U9NjUyODQ7ZS5kb2xsYXJvbGRzdHlsZT02MzI2ODtlLmRvbGxhcnNtYWxsPTY1MTI5O2UuZG9sbGFyc3VwZXJpb3I9NjMyMDQ7ZS5kb25nPTgzNjM7ZS5kb3J1c3F1YXJlPTEzMDk0O2UuZG90YWNjZW50PTcyOTtlLmRvdGFjY2VudGNtYj03NzU7ZS5kb3RiZWxvd2NtYj04MDM7ZS5kb3RiZWxvd2NvbWI9ODAzO2UuZG90a2F0YWthbmE9MTI1Mzk7ZS5kb3RsZXNzaT0zMDU7ZS5kb3RsZXNzaj02MzE2NjtlLmRvdGxlc3Nqc3Ryb2tlaG9vaz02NDQ7ZS5kb3RtYXRoPTg5MDE7ZS5kb3R0ZWRjaXJjbGU9OTY3NjtlLmRvdWJsZXlvZHBhdGFoPTY0Mjg3O2UuZG91YmxleW9kcGF0YWhoZWJyZXc9NjQyODc7ZS5kb3dudGFja2JlbG93Y21iPTc5ODtlLmRvd250YWNrbW9kPTcyNTtlLmRwYXJlbj05Mzc1O2UuZHN1cGVyaW9yPTYzMjExO2UuZHRhaWw9NTk4O2UuZHRvcGJhcj0zOTY7ZS5kdWhpcmFnYW5hPTEyMzg5O2UuZHVrYXRha2FuYT0xMjQ4NTtlLmR6PTQ5OTtlLmR6YWx0b25lPTY3NTtlLmR6Y2Fyb249NDU0O2UuZHpjdXJsPTY3NztlLmR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDk7ZS5kemVjeXJpbGxpYz0xMTA5O2UuZHpoZWN5cmlsbGljPTExMTk7ZS5lPTEwMTtlLmVhY3V0ZT0yMzM7ZS5lYXJ0aD05NzkzO2UuZWJlbmdhbGk9MjQ0NztlLmVib3BvbW9mbz0xMjU3MjtlLmVicmV2ZT0yNzc7ZS5lY2FuZHJhZGV2YT0yMzE3O2UuZWNhbmRyYWd1amFyYXRpPTI3MDE7ZS5lY2FuZHJhdm93ZWxzaWduZGV2YT0yMzczO2UuZWNhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTc7ZS5lY2Fyb249MjgzO2UuZWNlZGlsbGFicmV2ZT03NzA5O2UuZWNoYXJtZW5pYW49MTM4MTtlLmVjaHlpd25hcm1lbmlhbj0xNDE1O2UuZWNpcmNsZT05NDI4O2UuZWNpcmN1bWZsZXg9MjM0O2UuZWNpcmN1bWZsZXhhY3V0ZT03ODcxO2UuZWNpcmN1bWZsZXhiZWxvdz03NzA1O2UuZWNpcmN1bWZsZXhkb3RiZWxvdz03ODc5O2UuZWNpcmN1bWZsZXhncmF2ZT03ODczO2UuZWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NTtlLmVjaXJjdW1mbGV4dGlsZGU9Nzg3NztlLmVjeXJpbGxpYz0xMTA4O2UuZWRibGdyYXZlPTUxNztlLmVkZXZhPTIzMTk7ZS5lZGllcmVzaXM9MjM1O2UuZWRvdD0yNzk7ZS5lZG90YWNjZW50PTI3OTtlLmVkb3RiZWxvdz03ODY1O2UuZWVndXJtdWtoaT0yNTc1O2UuZWVtYXRyYWd1cm11a2hpPTI2MzE7ZS5lZmN5cmlsbGljPTEwOTI7ZS5lZ3JhdmU9MjMyO2UuZWd1amFyYXRpPTI3MDM7ZS5laGFybWVuaWFuPTEzODM7ZS5laGJvcG9tb2ZvPTEyNTczO2UuZWhpcmFnYW5hPTEyMzYwO2UuZWhvb2thYm92ZT03ODY3O2UuZWlib3BvbW9mbz0xMjU3NTtlLmVpZ2h0PTU2O2UuZWlnaHRhcmFiaWM9MTY0MDtlLmVpZ2h0YmVuZ2FsaT0yNTQyO2UuZWlnaHRjaXJjbGU9OTMxOTtlLmVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyOTtlLmVpZ2h0ZGV2YT0yNDE0O2UuZWlnaHRlZW5jaXJjbGU9OTMyOTtlLmVpZ2h0ZWVucGFyZW49OTM0OTtlLmVpZ2h0ZWVucGVyaW9kPTkzNjk7ZS5laWdodGd1amFyYXRpPTI3OTg7ZS5laWdodGd1cm11a2hpPTI2NzA7ZS5laWdodGhhY2thcmFiaWM9MTY0MDtlLmVpZ2h0aGFuZ3pob3U9MTIzMjg7ZS5laWdodGhub3RlYmVhbWVkPTk4MzU7ZS5laWdodGlkZW9ncmFwaGljcGFyZW49MTI4Mzk7ZS5laWdodGluZmVyaW9yPTgzMjg7ZS5laWdodG1vbm9zcGFjZT02NTMwNDtlLmVpZ2h0b2xkc3R5bGU9NjMyODg7ZS5laWdodHBhcmVuPTkzMzk7ZS5laWdodHBlcmlvZD05MzU5O2UuZWlnaHRwZXJzaWFuPTE3ODQ7ZS5laWdodHJvbWFuPTg1Njc7ZS5laWdodHN1cGVyaW9yPTgzMTI7ZS5laWdodHRoYWk9MzY3MjtlLmVpbnZlcnRlZGJyZXZlPTUxOTtlLmVpb3RpZmllZGN5cmlsbGljPTExMjU7ZS5la2F0YWthbmE9MTI0NTY7ZS5la2F0YWthbmFoYWxmd2lkdGg9NjUzOTY7ZS5la29ua2FyZ3VybXVraGk9MjY3NjtlLmVrb3JlYW49MTI2Mjg7ZS5lbGN5cmlsbGljPTEwODM7ZS5lbGVtZW50PTg3MTI7ZS5lbGV2ZW5jaXJjbGU9OTMyMjtlLmVsZXZlbnBhcmVuPTkzNDI7ZS5lbGV2ZW5wZXJpb2Q9OTM2MjtlLmVsZXZlbnJvbWFuPTg1NzA7ZS5lbGxpcHNpcz04MjMwO2UuZWxsaXBzaXN2ZXJ0aWNhbD04OTQyO2UuZW1hY3Jvbj0yNzU7ZS5lbWFjcm9uYWN1dGU9NzcwMztlLmVtYWNyb25ncmF2ZT03NzAxO2UuZW1jeXJpbGxpYz0xMDg0O2UuZW1kYXNoPTgyMTI7ZS5lbWRhc2h2ZXJ0aWNhbD02NTA3MztlLmVtb25vc3BhY2U9NjUzNDk7ZS5lbXBoYXNpc21hcmthcm1lbmlhbj0xMzcxO2UuZW1wdHlzZXQ9ODcwOTtlLmVuYm9wb21vZm89MTI1Nzk7ZS5lbmN5cmlsbGljPTEwODU7ZS5lbmRhc2g9ODIxMTtlLmVuZGFzaHZlcnRpY2FsPTY1MDc0O2UuZW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg3O2UuZW5nPTMzMTtlLmVuZ2JvcG9tb2ZvPTEyNTgxO2UuZW5naGVjeXJpbGxpYz0xMTg5O2UuZW5ob29rY3lyaWxsaWM9MTIyNDtlLmVuc3BhY2U9ODE5NDtlLmVvZ29uZWs9MjgxO2UuZW9rb3JlYW49MTI2Mjc7ZS5lb3Blbj02MDM7ZS5lb3BlbmNsb3NlZD02NjY7ZS5lb3BlbnJldmVyc2VkPTYwNDtlLmVvcGVucmV2ZXJzZWRjbG9zZWQ9NjA2O2UuZW9wZW5yZXZlcnNlZGhvb2s9NjA1O2UuZXBhcmVuPTkzNzY7ZS5lcHNpbG9uPTk0OTtlLmVwc2lsb250b25vcz05NDE7ZS5lcXVhbD02MTtlLmVxdWFsbW9ub3NwYWNlPTY1MzA5O2UuZXF1YWxzbWFsbD02NTEyNjtlLmVxdWFsc3VwZXJpb3I9ODMxNjtlLmVxdWl2YWxlbmNlPTg4MDE7ZS5lcmJvcG9tb2ZvPTEyNTgyO2UuZXJjeXJpbGxpYz0xMDg4O2UuZXJldmVyc2VkPTYwMDtlLmVyZXZlcnNlZGN5cmlsbGljPTExMDE7ZS5lc2N5cmlsbGljPTEwODk7ZS5lc2Rlc2NlbmRlcmN5cmlsbGljPTExOTU7ZS5lc2g9NjQzO2UuZXNoY3VybD02NDY7ZS5lc2hvcnRkZXZhPTIzMTg7ZS5lc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzQ7ZS5lc2hyZXZlcnNlZGxvb3A9NDI2O2UuZXNoc3F1YXRyZXZlcnNlZD02NDU7ZS5lc21hbGxoaXJhZ2FuYT0xMjM1OTtlLmVzbWFsbGthdGFrYW5hPTEyNDU1O2UuZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODY7ZS5lc3RpbWF0ZWQ9ODQ5NDtlLmVzdXBlcmlvcj02MzIxMjtlLmV0YT05NTE7ZS5ldGFybWVuaWFuPTEzODQ7ZS5ldGF0b25vcz05NDI7ZS5ldGg9MjQwO2UuZXRpbGRlPTc4Njk7ZS5ldGlsZGViZWxvdz03NzA3O2UuZXRuYWh0YWZvdWtoaGVicmV3PTE0MjU7ZS5ldG5haHRhZm91a2hsZWZ0aGVicmV3PTE0MjU7ZS5ldG5haHRhaGVicmV3PTE0MjU7ZS5ldG5haHRhbGVmdGhlYnJldz0xNDI1O2UuZXR1cm5lZD00Nzc7ZS5ldWtvcmVhbj0xMjY0MTtlLmV1cm89ODM2NDtlLmV2b3dlbHNpZ25iZW5nYWxpPTI1MDM7ZS5ldm93ZWxzaWduZGV2YT0yMzc1O2UuZXZvd2Vsc2lnbmd1amFyYXRpPTI3NTk7ZS5leGNsYW09MzM7ZS5leGNsYW1hcm1lbmlhbj0xMzcyO2UuZXhjbGFtZGJsPTgyNTI7ZS5leGNsYW1kb3duPTE2MTtlLmV4Y2xhbWRvd25zbWFsbD02MzM5MztlLmV4Y2xhbW1vbm9zcGFjZT02NTI4MTtlLmV4Y2xhbXNtYWxsPTYzMjY1O2UuZXhpc3RlbnRpYWw9ODcwNztlLmV6aD02NTg7ZS5lemhjYXJvbj00OTU7ZS5lemhjdXJsPTY1OTtlLmV6aHJldmVyc2VkPTQ0MTtlLmV6aHRhaWw9NDQyO2UuZj0xMDI7ZS5mYWRldmE9MjM5ODtlLmZhZ3VybXVraGk9MjY1NDtlLmZhaHJlbmhlaXQ9ODQ1NztlLmZhdGhhYXJhYmljPTE2MTQ7ZS5mYXRoYWxvd2FyYWJpYz0xNjE0O2UuZmF0aGF0YW5hcmFiaWM9MTYxMTtlLmZib3BvbW9mbz0xMjU1MjtlLmZjaXJjbGU9OTQyOTtlLmZkb3RhY2NlbnQ9NzcxMTtlLmZlaGFyYWJpYz0xNjAxO2UuZmVoYXJtZW5pYW49MTQxNDtlLmZlaGZpbmFsYXJhYmljPTY1MjM0O2UuZmVoaW5pdGlhbGFyYWJpYz02NTIzNTtlLmZlaG1lZGlhbGFyYWJpYz02NTIzNjtlLmZlaWNvcHRpYz05OTc7ZS5mZW1hbGU9OTc5MjtlLmZmPTY0MjU2O2UuZl9mPTY0MjU2O2UuZmZpPTY0MjU5O2UuZl9mX2k9NjQyNTk7ZS5mZmw9NjQyNjA7ZS5mX2ZfbD02NDI2MDtlLmZpPTY0MjU3O2UuZl9pPTY0MjU3O2UuZmlmdGVlbmNpcmNsZT05MzI2O2UuZmlmdGVlbnBhcmVuPTkzNDY7ZS5maWZ0ZWVucGVyaW9kPTkzNjY7ZS5maWd1cmVkYXNoPTgyMTA7ZS5maWxsZWRib3g9OTYzMjtlLmZpbGxlZHJlY3Q9OTY0NDtlLmZpbmFsa2FmPTE0OTg7ZS5maW5hbGthZmRhZ2VzaD02NDMxNDtlLmZpbmFsa2FmZGFnZXNoaGVicmV3PTY0MzE0O2UuZmluYWxrYWZoZWJyZXc9MTQ5ODtlLmZpbmFsbWVtPTE1MDE7ZS5maW5hbG1lbWhlYnJldz0xNTAxO2UuZmluYWxudW49MTUwMztlLmZpbmFsbnVuaGVicmV3PTE1MDM7ZS5maW5hbHBlPTE1MDc7ZS5maW5hbHBlaGVicmV3PTE1MDc7ZS5maW5hbHRzYWRpPTE1MDk7ZS5maW5hbHRzYWRpaGVicmV3PTE1MDk7ZS5maXJzdHRvbmVjaGluZXNlPTcxMztlLmZpc2hleWU9OTY3MztlLmZpdGFjeXJpbGxpYz0xMTM5O2UuZml2ZT01MztlLmZpdmVhcmFiaWM9MTYzNztlLmZpdmViZW5nYWxpPTI1Mzk7ZS5maXZlY2lyY2xlPTkzMTY7ZS5maXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNjtlLmZpdmVkZXZhPTI0MTE7ZS5maXZlZWlnaHRocz04NTQxO2UuZml2ZWd1amFyYXRpPTI3OTU7ZS5maXZlZ3VybXVraGk9MjY2NztlLmZpdmVoYWNrYXJhYmljPTE2Mzc7ZS5maXZlaGFuZ3pob3U9MTIzMjU7ZS5maXZlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNjtlLmZpdmVpbmZlcmlvcj04MzI1O2UuZml2ZW1vbm9zcGFjZT02NTMwMTtlLmZpdmVvbGRzdHlsZT02MzI4NTtlLmZpdmVwYXJlbj05MzM2O2UuZml2ZXBlcmlvZD05MzU2O2UuZml2ZXBlcnNpYW49MTc4MTtlLmZpdmVyb21hbj04NTY0O2UuZml2ZXN1cGVyaW9yPTgzMDk7ZS5maXZldGhhaT0zNjY5O2UuZmw9NjQyNTg7ZS5mX2w9NjQyNTg7ZS5mbG9yaW49NDAyO2UuZm1vbm9zcGFjZT02NTM1MDtlLmZtc3F1YXJlPTEzMjA5O2UuZm9mYW50aGFpPTM2MTU7ZS5mb2ZhdGhhaT0zNjEzO2UuZm9uZ21hbnRoYWk9MzY2MztlLmZvcmFsbD04NzA0O2UuZm91cj01MjtlLmZvdXJhcmFiaWM9MTYzNjtlLmZvdXJiZW5nYWxpPTI1Mzg7ZS5mb3VyY2lyY2xlPTkzMTU7ZS5mb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNTtlLmZvdXJkZXZhPTI0MTA7ZS5mb3VyZ3VqYXJhdGk9Mjc5NDtlLmZvdXJndXJtdWtoaT0yNjY2O2UuZm91cmhhY2thcmFiaWM9MTYzNjtlLmZvdXJoYW5nemhvdT0xMjMyNDtlLmZvdXJpZGVvZ3JhcGhpY3BhcmVuPTEyODM1O2UuZm91cmluZmVyaW9yPTgzMjQ7ZS5mb3VybW9ub3NwYWNlPTY1MzAwO2UuZm91cm51bWVyYXRvcmJlbmdhbGk9MjU1MTtlLmZvdXJvbGRzdHlsZT02MzI4NDtlLmZvdXJwYXJlbj05MzM1O2UuZm91cnBlcmlvZD05MzU1O2UuZm91cnBlcnNpYW49MTc4MDtlLmZvdXJyb21hbj04NTYzO2UuZm91cnN1cGVyaW9yPTgzMDg7ZS5mb3VydGVlbmNpcmNsZT05MzI1O2UuZm91cnRlZW5wYXJlbj05MzQ1O2UuZm91cnRlZW5wZXJpb2Q9OTM2NTtlLmZvdXJ0aGFpPTM2Njg7ZS5mb3VydGh0b25lY2hpbmVzZT03MTU7ZS5mcGFyZW49OTM3NztlLmZyYWN0aW9uPTgyNjA7ZS5mcmFuYz04MzU1O2UuZz0xMDM7ZS5nYWJlbmdhbGk9MjQ1NTtlLmdhY3V0ZT01MDE7ZS5nYWRldmE9MjMyNztlLmdhZmFyYWJpYz0xNzExO2UuZ2FmZmluYWxhcmFiaWM9NjQ0MDM7ZS5nYWZpbml0aWFsYXJhYmljPTY0NDA0O2UuZ2FmbWVkaWFsYXJhYmljPTY0NDA1O2UuZ2FndWphcmF0aT0yNzExO2UuZ2FndXJtdWtoaT0yNTgzO2UuZ2FoaXJhZ2FuYT0xMjM2NDtlLmdha2F0YWthbmE9MTI0NjA7ZS5nYW1tYT05NDc7ZS5nYW1tYWxhdGluc21hbGw9NjExO2UuZ2FtbWFzdXBlcmlvcj03MzY7ZS5nYW5naWFjb3B0aWM9MTAwMztlLmdib3BvbW9mbz0xMjU1NztlLmdicmV2ZT0yODc7ZS5nY2Fyb249NDg3O2UuZ2NlZGlsbGE9MjkxO2UuZ2NpcmNsZT05NDMwO2UuZ2NpcmN1bWZsZXg9Mjg1O2UuZ2NvbW1hYWNjZW50PTI5MTtlLmdkb3Q9Mjg5O2UuZ2RvdGFjY2VudD0yODk7ZS5nZWN5cmlsbGljPTEwNzU7ZS5nZWhpcmFnYW5hPTEyMzcwO2UuZ2VrYXRha2FuYT0xMjQ2NjtlLmdlb21ldHJpY2FsbHllcXVhbD04Nzg1O2UuZ2VyZXNoYWNjZW50aGVicmV3PTE0MzY7ZS5nZXJlc2hoZWJyZXc9MTUyMztlLmdlcmVzaG11cWRhbWhlYnJldz0xNDM3O2UuZ2VybWFuZGJscz0yMjM7ZS5nZXJzaGF5aW1hY2NlbnRoZWJyZXc9MTQzODtlLmdlcnNoYXlpbWhlYnJldz0xNTI0O2UuZ2V0YW1hcms9MTIzMDc7ZS5naGFiZW5nYWxpPTI0NTY7ZS5naGFkYXJtZW5pYW49MTM5NDtlLmdoYWRldmE9MjMyODtlLmdoYWd1amFyYXRpPTI3MTI7ZS5naGFndXJtdWtoaT0yNTg0O2UuZ2hhaW5hcmFiaWM9MTU5NDtlLmdoYWluZmluYWxhcmFiaWM9NjUyMzA7ZS5naGFpbmluaXRpYWxhcmFiaWM9NjUyMzE7ZS5naGFpbm1lZGlhbGFyYWJpYz02NTIzMjtlLmdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTczO2UuZ2hlc3Ryb2tlY3lyaWxsaWM9MTE3MTtlLmdoZXVwdHVybmN5cmlsbGljPTExNjk7ZS5naGhhZGV2YT0yMzk0O2UuZ2hoYWd1cm11a2hpPTI2NTA7ZS5naG9vaz02MDg7ZS5naHpzcXVhcmU9MTMyMDM7ZS5naWhpcmFnYW5hPTEyMzY2O2UuZ2lrYXRha2FuYT0xMjQ2MjtlLmdpbWFybWVuaWFuPTEzNzk7ZS5naW1lbD0xNDkwO2UuZ2ltZWxkYWdlc2g9NjQzMDY7ZS5naW1lbGRhZ2VzaGhlYnJldz02NDMwNjtlLmdpbWVsaGVicmV3PTE0OTA7ZS5namVjeXJpbGxpYz0xMTA3O2UuZ2xvdHRhbGludmVydGVkc3Ryb2tlPTQ0NjtlLmdsb3R0YWxzdG9wPTY2MDtlLmdsb3R0YWxzdG9waW52ZXJ0ZWQ9NjYyO2UuZ2xvdHRhbHN0b3Btb2Q9NzA0O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZD02NjE7ZS5nbG90dGFsc3RvcHJldmVyc2VkbW9kPTcwNTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRzdXBlcmlvcj03NDA7ZS5nbG90dGFsc3RvcHN0cm9rZT02NzM7ZS5nbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkPTY3NDtlLmdtYWNyb249NzcxMztlLmdtb25vc3BhY2U9NjUzNTE7ZS5nb2hpcmFnYW5hPTEyMzcyO2UuZ29rYXRha2FuYT0xMjQ2ODtlLmdwYXJlbj05Mzc4O2UuZ3Bhc3F1YXJlPTEzMjI4O2UuZ3JhZGllbnQ9ODcxMTtlLmdyYXZlPTk2O2UuZ3JhdmViZWxvd2NtYj03OTA7ZS5ncmF2ZWNtYj03Njg7ZS5ncmF2ZWNvbWI9NzY4O2UuZ3JhdmVkZXZhPTIzODc7ZS5ncmF2ZWxvd21vZD03MTg7ZS5ncmF2ZW1vbm9zcGFjZT02NTM0NDtlLmdyYXZldG9uZWNtYj04MzI7ZS5ncmVhdGVyPTYyO2UuZ3JlYXRlcmVxdWFsPTg4MDU7ZS5ncmVhdGVyZXF1YWxvcmxlc3M9ODkyMztlLmdyZWF0ZXJtb25vc3BhY2U9NjUzMTA7ZS5ncmVhdGVyb3JlcXVpdmFsZW50PTg4MTk7ZS5ncmVhdGVyb3JsZXNzPTg4MjM7ZS5ncmVhdGVyb3ZlcmVxdWFsPTg4MDc7ZS5ncmVhdGVyc21hbGw9NjUxMjU7ZS5nc2NyaXB0PTYwOTtlLmdzdHJva2U9NDg1O2UuZ3VoaXJhZ2FuYT0xMjM2ODtlLmd1aWxsZW1vdGxlZnQ9MTcxO2UuZ3VpbGxlbW90cmlnaHQ9MTg3O2UuZ3VpbHNpbmdsbGVmdD04MjQ5O2UuZ3VpbHNpbmdscmlnaHQ9ODI1MDtlLmd1a2F0YWthbmE9MTI0NjQ7ZS5ndXJhbXVzcXVhcmU9MTMwODA7ZS5neXNxdWFyZT0xMzI1NztlLmg9MTA0O2UuaGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkzO2UuaGFhbHRvbmVhcmFiaWM9MTcyOTtlLmhhYmVuZ2FsaT0yNDg5O2UuaGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAzO2UuaGFkZXZhPTIzNjE7ZS5oYWd1amFyYXRpPTI3NDU7ZS5oYWd1cm11a2hpPTI2MTc7ZS5oYWhhcmFiaWM9MTU4MTtlLmhhaGZpbmFsYXJhYmljPTY1MTg2O2UuaGFoaW5pdGlhbGFyYWJpYz02NTE4NztlLmhhaGlyYWdhbmE9MTIzOTk7ZS5oYWhtZWRpYWxhcmFiaWM9NjUxODg7ZS5oYWl0dXNxdWFyZT0xMzA5ODtlLmhha2F0YWthbmE9MTI0OTU7ZS5oYWthdGFrYW5haGFsZndpZHRoPTY1NDE4O2UuaGFsYW50Z3VybXVraGk9MjYzNztlLmhhbXphYXJhYmljPTE1Njk7ZS5oYW16YWxvd2FyYWJpYz0xNTY5O2UuaGFuZ3VsZmlsbGVyPTEyNjQ0O2UuaGFyZHNpZ25jeXJpbGxpYz0xMDk4O2UuaGFycG9vbmxlZnRiYXJidXA9ODYzNjtlLmhhcnBvb25yaWdodGJhcmJ1cD04NjQwO2UuaGFzcXVhcmU9MTMyNTg7ZS5oYXRhZnBhdGFoPTE0NTg7ZS5oYXRhZnBhdGFoMTY9MTQ1ODtlLmhhdGFmcGF0YWgyMz0xNDU4O2UuaGF0YWZwYXRhaDJmPTE0NTg7ZS5oYXRhZnBhdGFoaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFobmFycm93aGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFocXVhcnRlcmhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHdpZGVoZWJyZXc9MTQ1ODtlLmhhdGFmcWFtYXRzPTE0NTk7ZS5oYXRhZnFhbWF0czFiPTE0NTk7ZS5oYXRhZnFhbWF0czI4PTE0NTk7ZS5oYXRhZnFhbWF0czM0PTE0NTk7ZS5oYXRhZnFhbWF0c2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzcXVhcnRlcmhlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHN3aWRlaGVicmV3PTE0NTk7ZS5oYXRhZnNlZ29sPTE0NTc7ZS5oYXRhZnNlZ29sMTc9MTQ1NztlLmhhdGFmc2Vnb2wyND0xNDU3O2UuaGF0YWZzZWdvbDMwPTE0NTc7ZS5oYXRhZnNlZ29saGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sbmFycm93aGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29scXVhcnRlcmhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHdpZGVoZWJyZXc9MTQ1NztlLmhiYXI9Mjk1O2UuaGJvcG9tb2ZvPTEyNTU5O2UuaGJyZXZlYmVsb3c9NzcyMztlLmhjZWRpbGxhPTc3MjE7ZS5oY2lyY2xlPTk0MzE7ZS5oY2lyY3VtZmxleD0yOTM7ZS5oZGllcmVzaXM9NzcxOTtlLmhkb3RhY2NlbnQ9NzcxNTtlLmhkb3RiZWxvdz03NzE3O2UuaGU9MTQ5MjtlLmhlYXJ0PTk4Mjk7ZS5oZWFydHN1aXRibGFjaz05ODI5O2UuaGVhcnRzdWl0d2hpdGU9OTgyNTtlLmhlZGFnZXNoPTY0MzA4O2UuaGVkYWdlc2hoZWJyZXc9NjQzMDg7ZS5oZWhhbHRvbmVhcmFiaWM9MTcyOTtlLmhlaGFyYWJpYz0xNjA3O2UuaGVoZWJyZXc9MTQ5MjtlLmhlaGZpbmFsYWx0b25lYXJhYmljPTY0NDIzO2UuaGVoZmluYWxhbHR0d29hcmFiaWM9NjUyNTg7ZS5oZWhmaW5hbGFyYWJpYz02NTI1ODtlLmhlaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NDQyMTtlLmhlaGhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NDQyMDtlLmhlaGluaXRpYWxhbHRvbmVhcmFiaWM9NjQ0MjQ7ZS5oZWhpbml0aWFsYXJhYmljPTY1MjU5O2UuaGVoaXJhZ2FuYT0xMjQwODtlLmhlaG1lZGlhbGFsdG9uZWFyYWJpYz02NDQyNTtlLmhlaG1lZGlhbGFyYWJpYz02NTI2MDtlLmhlaXNlaWVyYXNxdWFyZT0xMzE3OTtlLmhla2F0YWthbmE9MTI1MDQ7ZS5oZWthdGFrYW5haGFsZndpZHRoPTY1NDIxO2UuaGVrdXRhYXJ1c3F1YXJlPTEzMTEwO2UuaGVuZ2hvb2s9NjE1O2UuaGVydXR1c3F1YXJlPTEzMTEzO2UuaGV0PTE0OTU7ZS5oZXRoZWJyZXc9MTQ5NTtlLmhob29rPTYxNDtlLmhob29rc3VwZXJpb3I9Njg5O2UuaGlldWhhY2lyY2xla29yZWFuPTEyOTIzO2UuaGlldWhhcGFyZW5rb3JlYW49MTI4Mjc7ZS5oaWV1aGNpcmNsZWtvcmVhbj0xMjkwOTtlLmhpZXVoa29yZWFuPTEyNjIyO2UuaGlldWhwYXJlbmtvcmVhbj0xMjgxMztlLmhpaGlyYWdhbmE9MTI0MDI7ZS5oaWthdGFrYW5hPTEyNDk4O2UuaGlrYXRha2FuYWhhbGZ3aWR0aD02NTQxOTtlLmhpcmlxPTE0NjA7ZS5oaXJpcTE0PTE0NjA7ZS5oaXJpcTIxPTE0NjA7ZS5oaXJpcTJkPTE0NjA7ZS5oaXJpcWhlYnJldz0xNDYwO2UuaGlyaXFuYXJyb3doZWJyZXc9MTQ2MDtlLmhpcmlxcXVhcnRlcmhlYnJldz0xNDYwO2UuaGlyaXF3aWRlaGVicmV3PTE0NjA7ZS5obGluZWJlbG93PTc4MzA7ZS5obW9ub3NwYWNlPTY1MzUyO2UuaG9hcm1lbmlhbj0xMzkyO2UuaG9oaXB0aGFpPTM2Mjc7ZS5ob2hpcmFnYW5hPTEyNDExO2UuaG9rYXRha2FuYT0xMjUwNztlLmhva2F0YWthbmFoYWxmd2lkdGg9NjU0MjI7ZS5ob2xhbT0xNDY1O2UuaG9sYW0xOT0xNDY1O2UuaG9sYW0yNj0xNDY1O2UuaG9sYW0zMj0xNDY1O2UuaG9sYW1oZWJyZXc9MTQ2NTtlLmhvbGFtbmFycm93aGVicmV3PTE0NjU7ZS5ob2xhbXF1YXJ0ZXJoZWJyZXc9MTQ2NTtlLmhvbGFtd2lkZWhlYnJldz0xNDY1O2UuaG9ub2todWt0aGFpPTM2MzA7ZS5ob29rYWJvdmVjb21iPTc3NztlLmhvb2tjbWI9Nzc3O2UuaG9va3BhbGF0YWxpemVkYmVsb3djbWI9ODAxO2UuaG9va3JldHJvZmxleGJlbG93Y21iPTgwMjtlLmhvb25zcXVhcmU9MTMxMjI7ZS5ob3JpY29wdGljPTEwMDE7ZS5ob3Jpem9udGFsYmFyPTgyMTM7ZS5ob3JuY21iPTc5NTtlLmhvdHNwcmluZ3M9OTgzMjtlLmhvdXNlPTg5NjI7ZS5ocGFyZW49OTM3OTtlLmhzdXBlcmlvcj02ODg7ZS5odHVybmVkPTYxMztlLmh1aGlyYWdhbmE9MTI0MDU7ZS5odWlpdG9zcXVhcmU9MTMxMDc7ZS5odWthdGFrYW5hPTEyNTAxO2UuaHVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMDtlLmh1bmdhcnVtbGF1dD03MzM7ZS5odW5nYXJ1bWxhdXRjbWI9Nzc5O2UuaHY9NDA1O2UuaHlwaGVuPTQ1O2UuaHlwaGVuaW5mZXJpb3I9NjMyMDU7ZS5oeXBoZW5tb25vc3BhY2U9NjUyOTM7ZS5oeXBoZW5zbWFsbD02NTEyMztlLmh5cGhlbnN1cGVyaW9yPTYzMjA2O2UuaHlwaGVudHdvPTgyMDg7ZS5pPTEwNTtlLmlhY3V0ZT0yMzc7ZS5pYWN5cmlsbGljPTExMDM7ZS5pYmVuZ2FsaT0yNDM5O2UuaWJvcG9tb2ZvPTEyNTgzO2UuaWJyZXZlPTMwMTtlLmljYXJvbj00NjQ7ZS5pY2lyY2xlPTk0MzI7ZS5pY2lyY3VtZmxleD0yMzg7ZS5pY3lyaWxsaWM9MTExMDtlLmlkYmxncmF2ZT01MjE7ZS5pZGVvZ3JhcGhlYXJ0aGNpcmNsZT0xMjk0MztlLmlkZW9ncmFwaGZpcmVjaXJjbGU9MTI5Mzk7ZS5pZGVvZ3JhcGhpY2FsbGlhbmNlcGFyZW49MTI4NjM7ZS5pZGVvZ3JhcGhpY2NhbGxwYXJlbj0xMjg1ODtlLmlkZW9ncmFwaGljY2VudHJlY2lyY2xlPTEyOTY1O2UuaWRlb2dyYXBoaWNjbG9zZT0xMjI5NDtlLmlkZW9ncmFwaGljY29tbWE9MTIyODk7ZS5pZGVvZ3JhcGhpY2NvbW1hbGVmdD02NTM4MDtlLmlkZW9ncmFwaGljY29uZ3JhdHVsYXRpb25wYXJlbj0xMjg1NTtlLmlkZW9ncmFwaGljY29ycmVjdGNpcmNsZT0xMjk2MztlLmlkZW9ncmFwaGljZWFydGhwYXJlbj0xMjg0NztlLmlkZW9ncmFwaGljZW50ZXJwcmlzZXBhcmVuPTEyODYxO2UuaWRlb2dyYXBoaWNleGNlbGxlbnRjaXJjbGU9MTI5NTc7ZS5pZGVvZ3JhcGhpY2Zlc3RpdmFscGFyZW49MTI4NjQ7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbGNpcmNsZT0xMjk1MDtlLmlkZW9ncmFwaGljZmluYW5jaWFscGFyZW49MTI4NTQ7ZS5pZGVvZ3JhcGhpY2ZpcmVwYXJlbj0xMjg0MztlLmlkZW9ncmFwaGljaGF2ZXBhcmVuPTEyODUwO2UuaWRlb2dyYXBoaWNoaWdoY2lyY2xlPTEyOTY0O2UuaWRlb2dyYXBoaWNpdGVyYXRpb25tYXJrPTEyMjkzO2UuaWRlb2dyYXBoaWNsYWJvcmNpcmNsZT0xMjk1MjtlLmlkZW9ncmFwaGljbGFib3JwYXJlbj0xMjg1NjtlLmlkZW9ncmFwaGljbGVmdGNpcmNsZT0xMjk2NztlLmlkZW9ncmFwaGljbG93Y2lyY2xlPTEyOTY2O2UuaWRlb2dyYXBoaWNtZWRpY2luZWNpcmNsZT0xMjk2OTtlLmlkZW9ncmFwaGljbWV0YWxwYXJlbj0xMjg0NjtlLmlkZW9ncmFwaGljbW9vbnBhcmVuPTEyODQyO2UuaWRlb2dyYXBoaWNuYW1lcGFyZW49MTI4NTI7ZS5pZGVvZ3JhcGhpY3BlcmlvZD0xMjI5MDtlLmlkZW9ncmFwaGljcHJpbnRjaXJjbGU9MTI5NTg7ZS5pZGVvZ3JhcGhpY3JlYWNocGFyZW49MTI4Njc7ZS5pZGVvZ3JhcGhpY3JlcHJlc2VudHBhcmVuPTEyODU3O2UuaWRlb2dyYXBoaWNyZXNvdXJjZXBhcmVuPTEyODYyO2UuaWRlb2dyYXBoaWNyaWdodGNpcmNsZT0xMjk2ODtlLmlkZW9ncmFwaGljc2VjcmV0Y2lyY2xlPTEyOTUzO2UuaWRlb2dyYXBoaWNzZWxmcGFyZW49MTI4NjY7ZS5pZGVvZ3JhcGhpY3NvY2lldHlwYXJlbj0xMjg1MTtlLmlkZW9ncmFwaGljc3BhY2U9MTIyODg7ZS5pZGVvZ3JhcGhpY3NwZWNpYWxwYXJlbj0xMjg1MztlLmlkZW9ncmFwaGljc3RvY2twYXJlbj0xMjg0OTtlLmlkZW9ncmFwaGljc3R1ZHlwYXJlbj0xMjg1OTtlLmlkZW9ncmFwaGljc3VucGFyZW49MTI4NDg7ZS5pZGVvZ3JhcGhpY3N1cGVydmlzZXBhcmVuPTEyODYwO2UuaWRlb2dyYXBoaWN3YXRlcnBhcmVuPTEyODQ0O2UuaWRlb2dyYXBoaWN3b29kcGFyZW49MTI4NDU7ZS5pZGVvZ3JhcGhpY3plcm89MTIyOTU7ZS5pZGVvZ3JhcGhtZXRhbGNpcmNsZT0xMjk0MjtlLmlkZW9ncmFwaG1vb25jaXJjbGU9MTI5Mzg7ZS5pZGVvZ3JhcGhuYW1lY2lyY2xlPTEyOTQ4O2UuaWRlb2dyYXBoc3VuY2lyY2xlPTEyOTQ0O2UuaWRlb2dyYXBod2F0ZXJjaXJjbGU9MTI5NDA7ZS5pZGVvZ3JhcGh3b29kY2lyY2xlPTEyOTQxO2UuaWRldmE9MjMxMTtlLmlkaWVyZXNpcz0yMzk7ZS5pZGllcmVzaXNhY3V0ZT03NzI3O2UuaWRpZXJlc2lzY3lyaWxsaWM9MTI1MztlLmlkb3RiZWxvdz03ODgzO2UuaWVicmV2ZWN5cmlsbGljPTEyMzk7ZS5pZWN5cmlsbGljPTEwNzc7ZS5pZXVuZ2FjaXJjbGVrb3JlYW49MTI5MTc7ZS5pZXVuZ2FwYXJlbmtvcmVhbj0xMjgyMTtlLmlldW5nY2lyY2xla29yZWFuPTEyOTAzO2UuaWV1bmdrb3JlYW49MTI2MTU7ZS5pZXVuZ3BhcmVua29yZWFuPTEyODA3O2UuaWdyYXZlPTIzNjtlLmlndWphcmF0aT0yNjk1O2UuaWd1cm11a2hpPTI1Njc7ZS5paGlyYWdhbmE9MTIzNTY7ZS5paG9va2Fib3ZlPTc4ODE7ZS5paWJlbmdhbGk9MjQ0MDtlLmlpY3lyaWxsaWM9MTA4MDtlLmlpZGV2YT0yMzEyO2UuaWlndWphcmF0aT0yNjk2O2UuaWlndXJtdWtoaT0yNTY4O2UuaWltYXRyYWd1cm11a2hpPTI2MjQ7ZS5paW52ZXJ0ZWRicmV2ZT01MjM7ZS5paXNob3J0Y3lyaWxsaWM9MTA4MTtlLmlpdm93ZWxzaWduYmVuZ2FsaT0yNDk2O2UuaWl2b3dlbHNpZ25kZXZhPTIzNjg7ZS5paXZvd2Vsc2lnbmd1amFyYXRpPTI3NTI7ZS5paj0zMDc7ZS5pa2F0YWthbmE9MTI0NTI7ZS5pa2F0YWthbmFoYWxmd2lkdGg9NjUzOTQ7ZS5pa29yZWFuPTEyNjQzO2UuaWxkZT03MzI7ZS5pbHV5aGVicmV3PTE0NTI7ZS5pbWFjcm9uPTI5OTtlLmltYWNyb25jeXJpbGxpYz0xMjUxO2UuaW1hZ2VvcmFwcHJveGltYXRlbHllcXVhbD04Nzg3O2UuaW1hdHJhZ3VybXVraGk9MjYyMztlLmltb25vc3BhY2U9NjUzNTM7ZS5pbmNyZW1lbnQ9ODcxMDtlLmluZmluaXR5PTg3MzQ7ZS5pbmlhcm1lbmlhbj0xMzg3O2UuaW50ZWdyYWw9ODc0NztlLmludGVncmFsYm90dG9tPTg5OTM7ZS5pbnRlZ3JhbGJ0PTg5OTM7ZS5pbnRlZ3JhbGV4PTYzNzMzO2UuaW50ZWdyYWx0b3A9ODk5MjtlLmludGVncmFsdHA9ODk5MjtlLmludGVyc2VjdGlvbj04NzQ1O2UuaW50aXNxdWFyZT0xMzA2MTtlLmludmJ1bGxldD05Njg4O2UuaW52Y2lyY2xlPTk2ODk7ZS5pbnZzbWlsZWZhY2U9OTc4NztlLmlvY3lyaWxsaWM9MTEwNTtlLmlvZ29uZWs9MzAzO2UuaW90YT05NTM7ZS5pb3RhZGllcmVzaXM9OTcwO2UuaW90YWRpZXJlc2lzdG9ub3M9OTEyO2UuaW90YWxhdGluPTYxNztlLmlvdGF0b25vcz05NDM7ZS5pcGFyZW49OTM4MDtlLmlyaWd1cm11a2hpPTI2NzQ7ZS5pc21hbGxoaXJhZ2FuYT0xMjM1NTtlLmlzbWFsbGthdGFrYW5hPTEyNDUxO2UuaXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODQ7ZS5pc3NoYXJiZW5nYWxpPTI1NTQ7ZS5pc3Ryb2tlPTYxNjtlLmlzdXBlcmlvcj02MzIxMztlLml0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ1O2UuaXRlcmF0aW9ua2F0YWthbmE9MTI1NDE7ZS5pdGlsZGU9Mjk3O2UuaXRpbGRlYmVsb3c9NzcyNTtlLml1Ym9wb21vZm89MTI1ODU7ZS5pdWN5cmlsbGljPTExMDI7ZS5pdm93ZWxzaWduYmVuZ2FsaT0yNDk1O2UuaXZvd2Vsc2lnbmRldmE9MjM2NztlLml2b3dlbHNpZ25ndWphcmF0aT0yNzUxO2UuaXpoaXRzYWN5cmlsbGljPTExNDE7ZS5pemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQzO2Uuaj0xMDY7ZS5qYWFybWVuaWFuPTEzOTM7ZS5qYWJlbmdhbGk9MjQ2MDtlLmphZGV2YT0yMzMyO2UuamFndWphcmF0aT0yNzE2O2UuamFndXJtdWtoaT0yNTg4O2UuamJvcG9tb2ZvPTEyNTYwO2UuamNhcm9uPTQ5NjtlLmpjaXJjbGU9OTQzMztlLmpjaXJjdW1mbGV4PTMwOTtlLmpjcm9zc2VkdGFpbD02Njk7ZS5qZG90bGVzc3N0cm9rZT02MDc7ZS5qZWN5cmlsbGljPTExMTI7ZS5qZWVtYXJhYmljPTE1ODA7ZS5qZWVtZmluYWxhcmFiaWM9NjUxODI7ZS5qZWVtaW5pdGlhbGFyYWJpYz02NTE4MztlLmplZW1tZWRpYWxhcmFiaWM9NjUxODQ7ZS5qZWhhcmFiaWM9MTY4ODtlLmplaGZpbmFsYXJhYmljPTY0Mzk1O2UuamhhYmVuZ2FsaT0yNDYxO2UuamhhZGV2YT0yMzMzO2UuamhhZ3VqYXJhdGk9MjcxNztlLmpoYWd1cm11a2hpPTI1ODk7ZS5qaGVoYXJtZW5pYW49MTQwMztlLmppcz0xMjI5MjtlLmptb25vc3BhY2U9NjUzNTQ7ZS5qcGFyZW49OTM4MTtlLmpzdXBlcmlvcj02OTA7ZS5rPTEwNztlLmthYmFzaGtpcmN5cmlsbGljPTExODU7ZS5rYWJlbmdhbGk9MjQ1MztlLmthY3V0ZT03NzI5O2Uua2FjeXJpbGxpYz0xMDgyO2Uua2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc5O2Uua2FkZXZhPTIzMjU7ZS5rYWY9MTQ5OTtlLmthZmFyYWJpYz0xNjAzO2Uua2FmZGFnZXNoPTY0MzE1O2Uua2FmZGFnZXNoaGVicmV3PTY0MzE1O2Uua2FmZmluYWxhcmFiaWM9NjUyNDI7ZS5rYWZoZWJyZXc9MTQ5OTtlLmthZmluaXRpYWxhcmFiaWM9NjUyNDM7ZS5rYWZtZWRpYWxhcmFiaWM9NjUyNDQ7ZS5rYWZyYWZlaGVicmV3PTY0MzMzO2Uua2FndWphcmF0aT0yNzA5O2Uua2FndXJtdWtoaT0yNTgxO2Uua2FoaXJhZ2FuYT0xMjM2MztlLmthaG9va2N5cmlsbGljPTEyMjA7ZS5rYWthdGFrYW5hPTEyNDU5O2Uua2FrYXRha2FuYWhhbGZ3aWR0aD02NTM5ODtlLmthcHBhPTk1NDtlLmthcHBhc3ltYm9sZ3JlZWs9MTAwODtlLmthcHllb3VubWlldW1rb3JlYW49MTI2NTc7ZS5rYXB5ZW91bnBoaWV1cGhrb3JlYW49MTI2NzY7ZS5rYXB5ZW91bnBpZXVwa29yZWFuPTEyNjY0O2Uua2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuPTEyNjY1O2Uua2Fyb3JpaXNxdWFyZT0xMzA2OTtlLmthc2hpZGFhdXRvYXJhYmljPTE2MDA7ZS5rYXNoaWRhYXV0b25vc2lkZWJlYXJpbmdhcmFiaWM9MTYwMDtlLmthc21hbGxrYXRha2FuYT0xMjUzMztlLmthc3F1YXJlPTEzMTg4O2Uua2FzcmFhcmFiaWM9MTYxNjtlLmthc3JhdGFuYXJhYmljPTE2MTM7ZS5rYXN0cm9rZWN5cmlsbGljPTExODM7ZS5rYXRhaGlyYXByb2xvbmdtYXJraGFsZndpZHRoPTY1MzkyO2Uua2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODE7ZS5rYm9wb21vZm89MTI1NTg7ZS5rY2Fsc3F1YXJlPTEzMTkzO2Uua2Nhcm9uPTQ4OTtlLmtjZWRpbGxhPTMxMTtlLmtjaXJjbGU9OTQzNDtlLmtjb21tYWFjY2VudD0zMTE7ZS5rZG90YmVsb3c9NzczMTtlLmtlaGFybWVuaWFuPTE0MTI7ZS5rZWhpcmFnYW5hPTEyMzY5O2Uua2VrYXRha2FuYT0xMjQ2NTtlLmtla2F0YWthbmFoYWxmd2lkdGg9NjU0MDE7ZS5rZW5hcm1lbmlhbj0xMzkxO2Uua2VzbWFsbGthdGFrYW5hPTEyNTM0O2Uua2dyZWVubGFuZGljPTMxMjtlLmtoYWJlbmdhbGk9MjQ1NDtlLmtoYWN5cmlsbGljPTEwOTM7ZS5raGFkZXZhPTIzMjY7ZS5raGFndWphcmF0aT0yNzEwO2Uua2hhZ3VybXVraGk9MjU4MjtlLmtoYWhhcmFiaWM9MTU4MjtlLmtoYWhmaW5hbGFyYWJpYz02NTE5MDtlLmtoYWhpbml0aWFsYXJhYmljPTY1MTkxO2Uua2hhaG1lZGlhbGFyYWJpYz02NTE5MjtlLmtoZWljb3B0aWM9OTk5O2Uua2hoYWRldmE9MjM5MztlLmtoaGFndXJtdWtoaT0yNjQ5O2Uua2hpZXVraGFjaXJjbGVrb3JlYW49MTI5MjA7ZS5raGlldWtoYXBhcmVua29yZWFuPTEyODI0O2Uua2hpZXVraGNpcmNsZWtvcmVhbj0xMjkwNjtlLmtoaWV1a2hrb3JlYW49MTI2MTk7ZS5raGlldWtocGFyZW5rb3JlYW49MTI4MTA7ZS5raG9raGFpdGhhaT0zNTg2O2Uua2hva2hvbnRoYWk9MzU4OTtlLmtob2todWF0dGhhaT0zNTg3O2Uua2hva2h3YWl0aGFpPTM1ODg7ZS5raG9tdXR0aGFpPTM2NzU7ZS5raG9vaz00MDk7ZS5raG9yYWtoYW5ndGhhaT0zNTkwO2Uua2h6c3F1YXJlPTEzMjAxO2Uua2loaXJhZ2FuYT0xMjM2NTtlLmtpa2F0YWthbmE9MTI0NjE7ZS5raWthdGFrYW5haGFsZndpZHRoPTY1Mzk5O2Uua2lyb2d1cmFtdXNxdWFyZT0xMzA3NztlLmtpcm9tZWV0b3J1c3F1YXJlPTEzMDc4O2Uua2lyb3NxdWFyZT0xMzA3NjtlLmtpeWVva2FjaXJjbGVrb3JlYW49MTI5MTA7ZS5raXllb2thcGFyZW5rb3JlYW49MTI4MTQ7ZS5raXllb2tjaXJjbGVrb3JlYW49MTI4OTY7ZS5raXllb2trb3JlYW49MTI1OTM7ZS5raXllb2twYXJlbmtvcmVhbj0xMjgwMDtlLmtpeWVva3Npb3Nrb3JlYW49MTI1OTU7ZS5ramVjeXJpbGxpYz0xMTE2O2Uua2xpbmViZWxvdz03NzMzO2Uua2xzcXVhcmU9MTMyMDg7ZS5rbWN1YmVkc3F1YXJlPTEzMjIyO2Uua21vbm9zcGFjZT02NTM1NTtlLmttc3F1YXJlZHNxdWFyZT0xMzIxODtlLmtvaGlyYWdhbmE9MTIzNzE7ZS5rb2htc3F1YXJlPTEzMjQ4O2Uua29rYWl0aGFpPTM1ODU7ZS5rb2thdGFrYW5hPTEyNDY3O2Uua29rYXRha2FuYWhhbGZ3aWR0aD02NTQwMjtlLmtvb3Bvc3F1YXJlPTEzMDg2O2Uua29wcGFjeXJpbGxpYz0xMTUzO2Uua29yZWFuc3RhbmRhcmRzeW1ib2w9MTI5Mjc7ZS5rb3JvbmlzY21iPTgzNTtlLmtwYXJlbj05MzgyO2Uua3Bhc3F1YXJlPTEzMjI2O2Uua3NpY3lyaWxsaWM9MTEzNTtlLmt0c3F1YXJlPTEzMjYzO2Uua3R1cm5lZD02NzA7ZS5rdWhpcmFnYW5hPTEyMzY3O2Uua3VrYXRha2FuYT0xMjQ2MztlLmt1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDA7ZS5rdnNxdWFyZT0xMzI0MDtlLmt3c3F1YXJlPTEzMjQ2O2UubD0xMDg7ZS5sYWJlbmdhbGk9MjQ4MjtlLmxhY3V0ZT0zMTQ7ZS5sYWRldmE9MjM1NDtlLmxhZ3VqYXJhdGk9MjczODtlLmxhZ3VybXVraGk9MjYxMDtlLmxha2toYW5neWFvdGhhaT0zNjUzO2UubGFtYWxlZmZpbmFsYXJhYmljPTY1Mjc2O2UubGFtYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTI3MjtlLmxhbWFsZWZoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNzE7ZS5sYW1hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1Mjc0O2UubGFtYWxlZmhhbXphYmVsb3dpc29sYXRlZGFyYWJpYz02NTI3MztlLmxhbWFsZWZpc29sYXRlZGFyYWJpYz02NTI3NTtlLmxhbWFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUyNzA7ZS5sYW1hbGVmbWFkZGFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjY5O2UubGFtYXJhYmljPTE2MDQ7ZS5sYW1iZGE9OTU1O2UubGFtYmRhc3Ryb2tlPTQxMTtlLmxhbWVkPTE1MDA7ZS5sYW1lZGRhZ2VzaD02NDMxNjtlLmxhbWVkZGFnZXNoaGVicmV3PTY0MzE2O2UubGFtZWRoZWJyZXc9MTUwMDtlLmxhbWZpbmFsYXJhYmljPTY1MjQ2O2UubGFtaGFoaW5pdGlhbGFyYWJpYz02NDcxNDtlLmxhbWluaXRpYWxhcmFiaWM9NjUyNDc7ZS5sYW1qZWVtaW5pdGlhbGFyYWJpYz02NDcxMztlLmxhbWtoYWhpbml0aWFsYXJhYmljPTY0NzE1O2UubGFtbGFtaGVoaXNvbGF0ZWRhcmFiaWM9NjUwMTA7ZS5sYW1tZWRpYWxhcmFiaWM9NjUyNDg7ZS5sYW1tZWVtaGFoaW5pdGlhbGFyYWJpYz02NDkwNDtlLmxhbW1lZW1pbml0aWFsYXJhYmljPTY0NzE2O2UubGFyZ2VjaXJjbGU9OTcxMTtlLmxiYXI9NDEwO2UubGJlbHQ9NjIwO2UubGJvcG9tb2ZvPTEyNTU2O2UubGNhcm9uPTMxODtlLmxjZWRpbGxhPTMxNjtlLmxjaXJjbGU9OTQzNTtlLmxjaXJjdW1mbGV4YmVsb3c9Nzc0MTtlLmxjb21tYWFjY2VudD0zMTY7ZS5sZG90PTMyMDtlLmxkb3RhY2NlbnQ9MzIwO2UubGRvdGJlbG93PTc3MzU7ZS5sZG90YmVsb3dtYWNyb249NzczNztlLmxlZnRhbmdsZWFib3ZlY21iPTc5NDtlLmxlZnR0YWNrYmVsb3djbWI9NzkyO2UubGVzcz02MDtlLmxlc3NlcXVhbD04ODA0O2UubGVzc2VxdWFsb3JncmVhdGVyPTg5MjI7ZS5sZXNzbW9ub3NwYWNlPTY1MzA4O2UubGVzc29yZXF1aXZhbGVudD04ODE4O2UubGVzc29yZ3JlYXRlcj04ODIyO2UubGVzc292ZXJlcXVhbD04ODA2O2UubGVzc3NtYWxsPTY1MTI0O2UubGV6aD02MjI7ZS5sZmJsb2NrPTk2MTI7ZS5saG9va3JldHJvZmxleD02MjE7ZS5saXJhPTgzNTY7ZS5saXduYXJtZW5pYW49MTM4ODtlLmxqPTQ1NztlLmxqZWN5cmlsbGljPTExMTM7ZS5sbD02MzE2ODtlLmxsYWRldmE9MjM1NTtlLmxsYWd1amFyYXRpPTI3Mzk7ZS5sbGluZWJlbG93PTc3Mzk7ZS5sbGxhZGV2YT0yMzU2O2UubGx2b2NhbGljYmVuZ2FsaT0yNTI5O2UubGx2b2NhbGljZGV2YT0yNDAxO2UubGx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMxO2UubGx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAzO2UubG1pZGRsZXRpbGRlPTYxOTtlLmxtb25vc3BhY2U9NjUzNTY7ZS5sbXNxdWFyZT0xMzI2NDtlLmxvY2h1bGF0aGFpPTM2Mjg7ZS5sb2dpY2FsYW5kPTg3NDM7ZS5sb2dpY2Fsbm90PTE3MjtlLmxvZ2ljYWxub3RyZXZlcnNlZD04OTc2O2UubG9naWNhbG9yPTg3NDQ7ZS5sb2xpbmd0aGFpPTM2MjE7ZS5sb25ncz0zODM7ZS5sb3dsaW5lY2VudGVybGluZT02NTEwMjtlLmxvd2xpbmVjbWI9ODE4O2UubG93bGluZWRhc2hlZD02NTEwMTtlLmxvemVuZ2U9OTY3NDtlLmxwYXJlbj05MzgzO2UubHNsYXNoPTMyMjtlLmxzcXVhcmU9ODQ2NztlLmxzdXBlcmlvcj02MzIxNDtlLmx0c2hhZGU9OTYxNztlLmx1dGhhaT0zNjIyO2UubHZvY2FsaWNiZW5nYWxpPTI0NDQ7ZS5sdm9jYWxpY2RldmE9MjMxNjtlLmx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMwO2UubHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDI7ZS5seHNxdWFyZT0xMzI2NztlLm09MTA5O2UubWFiZW5nYWxpPTI0Nzg7ZS5tYWNyb249MTc1O2UubWFjcm9uYmVsb3djbWI9ODE3O2UubWFjcm9uY21iPTc3MjtlLm1hY3Jvbmxvd21vZD03MTc7ZS5tYWNyb25tb25vc3BhY2U9NjU1MDc7ZS5tYWN1dGU9Nzc0MztlLm1hZGV2YT0yMzUwO2UubWFndWphcmF0aT0yNzM0O2UubWFndXJtdWtoaT0yNjA2O2UubWFoYXBha2hoZWJyZXc9MTQ0NDtlLm1haGFwYWtobGVmdGhlYnJldz0xNDQ0O2UubWFoaXJhZ2FuYT0xMjQxNDtlLm1haWNoYXR0YXdhbG93bGVmdHRoYWk9NjM2Mzc7ZS5tYWljaGF0dGF3YWxvd3JpZ2h0dGhhaT02MzYzNjtlLm1haWNoYXR0YXdhdGhhaT0zNjU5O2UubWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpPTYzNjM1O2UubWFpZWtsb3dsZWZ0dGhhaT02MzYyODtlLm1haWVrbG93cmlnaHR0aGFpPTYzNjI3O2UubWFpZWt0aGFpPTM2NTY7ZS5tYWlla3VwcGVybGVmdHRoYWk9NjM2MjY7ZS5tYWloYW5ha2F0bGVmdHRoYWk9NjM2MjA7ZS5tYWloYW5ha2F0dGhhaT0zNjMzO2UubWFpdGFpa2h1bGVmdHRoYWk9NjM2MjU7ZS5tYWl0YWlraHV0aGFpPTM2NTU7ZS5tYWl0aG9sb3dsZWZ0dGhhaT02MzYzMTtlLm1haXRob2xvd3JpZ2h0dGhhaT02MzYzMDtlLm1haXRob3RoYWk9MzY1NztlLm1haXRob3VwcGVybGVmdHRoYWk9NjM2Mjk7ZS5tYWl0cmlsb3dsZWZ0dGhhaT02MzYzNDtlLm1haXRyaWxvd3JpZ2h0dGhhaT02MzYzMztlLm1haXRyaXRoYWk9MzY1ODtlLm1haXRyaXVwcGVybGVmdHRoYWk9NjM2MzI7ZS5tYWl5YW1va3RoYWk9MzY1NDtlLm1ha2F0YWthbmE9MTI1MTA7ZS5tYWthdGFrYW5haGFsZndpZHRoPTY1NDIzO2UubWFsZT05Nzk0O2UubWFuc3lvbnNxdWFyZT0xMzEyNztlLm1hcWFmaGVicmV3PTE0NzA7ZS5tYXJzPTk3OTQ7ZS5tYXNvcmFjaXJjbGVoZWJyZXc9MTQ1NTtlLm1hc3F1YXJlPTEzMTg3O2UubWJvcG9tb2ZvPTEyNTUxO2UubWJzcXVhcmU9MTMyNjg7ZS5tY2lyY2xlPTk0MzY7ZS5tY3ViZWRzcXVhcmU9MTMyMjE7ZS5tZG90YWNjZW50PTc3NDU7ZS5tZG90YmVsb3c9Nzc0NztlLm1lZW1hcmFiaWM9MTYwNTtlLm1lZW1maW5hbGFyYWJpYz02NTI1MDtlLm1lZW1pbml0aWFsYXJhYmljPTY1MjUxO2UubWVlbW1lZGlhbGFyYWJpYz02NTI1MjtlLm1lZW1tZWVtaW5pdGlhbGFyYWJpYz02NDcyMTtlLm1lZW1tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODQ7ZS5tZWV0b3J1c3F1YXJlPTEzMTMzO2UubWVoaXJhZ2FuYT0xMjQxNztlLm1laXppZXJhc3F1YXJlPTEzMTgyO2UubWVrYXRha2FuYT0xMjUxMztlLm1la2F0YWthbmFoYWxmd2lkdGg9NjU0MjY7ZS5tZW09MTUwMjtlLm1lbWRhZ2VzaD02NDMxODtlLm1lbWRhZ2VzaGhlYnJldz02NDMxODtlLm1lbWhlYnJldz0xNTAyO2UubWVuYXJtZW5pYW49MTM5NjtlLm1lcmtoYWhlYnJldz0xNDQ1O2UubWVya2hha2VmdWxhaGVicmV3PTE0NDY7ZS5tZXJraGFrZWZ1bGFsZWZ0aGVicmV3PTE0NDY7ZS5tZXJraGFsZWZ0aGVicmV3PTE0NDU7ZS5taG9vaz02MjU7ZS5taHpzcXVhcmU9MTMyMDI7ZS5taWRkbGVkb3RrYXRha2FuYWhhbGZ3aWR0aD02NTM4MTtlLm1pZGRvdD0xODM7ZS5taWV1bWFjaXJjbGVrb3JlYW49MTI5MTQ7ZS5taWV1bWFwYXJlbmtvcmVhbj0xMjgxODtlLm1pZXVtY2lyY2xla29yZWFuPTEyOTAwO2UubWlldW1rb3JlYW49MTI2MDk7ZS5taWV1bXBhbnNpb3Nrb3JlYW49MTI2NTY7ZS5taWV1bXBhcmVua29yZWFuPTEyODA0O2UubWlldW1waWV1cGtvcmVhbj0xMjY1NDtlLm1pZXVtc2lvc2tvcmVhbj0xMjY1NTtlLm1paGlyYWdhbmE9MTI0MTU7ZS5taWthdGFrYW5hPTEyNTExO2UubWlrYXRha2FuYWhhbGZ3aWR0aD02NTQyNDtlLm1pbnVzPTg3MjI7ZS5taW51c2JlbG93Y21iPTgwMDtlLm1pbnVzY2lyY2xlPTg4NTQ7ZS5taW51c21vZD03Mjc7ZS5taW51c3BsdXM9ODcyMztlLm1pbnV0ZT04MjQyO2UubWlyaWJhYXJ1c3F1YXJlPTEzMTMwO2UubWlyaXNxdWFyZT0xMzEyOTtlLm1sb25nbGVndHVybmVkPTYyNDtlLm1sc3F1YXJlPTEzMjA2O2UubW1jdWJlZHNxdWFyZT0xMzIxOTtlLm1tb25vc3BhY2U9NjUzNTc7ZS5tbXNxdWFyZWRzcXVhcmU9MTMyMTU7ZS5tb2hpcmFnYW5hPTEyNDE4O2UubW9obXNxdWFyZT0xMzI0OTtlLm1va2F0YWthbmE9MTI1MTQ7ZS5tb2thdGFrYW5haGFsZndpZHRoPTY1NDI3O2UubW9sc3F1YXJlPTEzMjcwO2UubW9tYXRoYWk9MzYxNztlLm1vdmVyc3NxdWFyZT0xMzIyMztlLm1vdmVyc3NxdWFyZWRzcXVhcmU9MTMyMjQ7ZS5tcGFyZW49OTM4NDtlLm1wYXNxdWFyZT0xMzIyNztlLm1zc3F1YXJlPTEzMjM1O2UubXN1cGVyaW9yPTYzMjE1O2UubXR1cm5lZD02MjM7ZS5tdT0xODE7ZS5tdTE9MTgxO2UubXVhc3F1YXJlPTEzMTg2O2UubXVjaGdyZWF0ZXI9ODgxMTtlLm11Y2hsZXNzPTg4MTA7ZS5tdWZzcXVhcmU9MTMxOTY7ZS5tdWdyZWVrPTk1NjtlLm11Z3NxdWFyZT0xMzE5NztlLm11aGlyYWdhbmE9MTI0MTY7ZS5tdWthdGFrYW5hPTEyNTEyO2UubXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNTtlLm11bHNxdWFyZT0xMzIwNTtlLm11bHRpcGx5PTIxNTtlLm11bXNxdWFyZT0xMzIxMTtlLm11bmFoaGVicmV3PTE0NDM7ZS5tdW5haGxlZnRoZWJyZXc9MTQ0MztlLm11c2ljYWxub3RlPTk4MzQ7ZS5tdXNpY2Fsbm90ZWRibD05ODM1O2UubXVzaWNmbGF0c2lnbj05ODM3O2UubXVzaWNzaGFycHNpZ249OTgzOTtlLm11c3NxdWFyZT0xMzIzNDtlLm11dnNxdWFyZT0xMzIzODtlLm11d3NxdWFyZT0xMzI0NDtlLm12bWVnYXNxdWFyZT0xMzI0MTtlLm12c3F1YXJlPTEzMjM5O2UubXdtZWdhc3F1YXJlPTEzMjQ3O2UubXdzcXVhcmU9MTMyNDU7ZS5uPTExMDtlLm5hYmVuZ2FsaT0yNDcyO2UubmFibGE9ODcxMTtlLm5hY3V0ZT0zMjQ7ZS5uYWRldmE9MjM0NDtlLm5hZ3VqYXJhdGk9MjcyODtlLm5hZ3VybXVraGk9MjYwMDtlLm5haGlyYWdhbmE9MTIzOTQ7ZS5uYWthdGFrYW5hPTEyNDkwO2UubmFrYXRha2FuYWhhbGZ3aWR0aD02NTQxMztlLm5hcG9zdHJvcGhlPTMyOTtlLm5hc3F1YXJlPTEzMTg1O2UubmJvcG9tb2ZvPTEyNTU1O2UubmJzcGFjZT0xNjA7ZS5uY2Fyb249MzI4O2UubmNlZGlsbGE9MzI2O2UubmNpcmNsZT05NDM3O2UubmNpcmN1bWZsZXhiZWxvdz03NzU1O2UubmNvbW1hYWNjZW50PTMyNjtlLm5kb3RhY2NlbnQ9Nzc0OTtlLm5kb3RiZWxvdz03NzUxO2UubmVoaXJhZ2FuYT0xMjM5NztlLm5la2F0YWthbmE9MTI0OTM7ZS5uZWthdGFrYW5haGFsZndpZHRoPTY1NDE2O2UubmV3c2hlcWVsc2lnbj04MzYyO2UubmZzcXVhcmU9MTMxOTU7ZS5uZ2FiZW5nYWxpPTI0NTc7ZS5uZ2FkZXZhPTIzMjk7ZS5uZ2FndWphcmF0aT0yNzEzO2UubmdhZ3VybXVraGk9MjU4NTtlLm5nb25ndXRoYWk9MzU5MTtlLm5oaXJhZ2FuYT0xMjQzNTtlLm5ob29rbGVmdD02MjY7ZS5uaG9va3JldHJvZmxleD02Mjc7ZS5uaWV1bmFjaXJjbGVrb3JlYW49MTI5MTE7ZS5uaWV1bmFwYXJlbmtvcmVhbj0xMjgxNTtlLm5pZXVuY2lldWNrb3JlYW49MTI1OTc7ZS5uaWV1bmNpcmNsZWtvcmVhbj0xMjg5NztlLm5pZXVuaGlldWhrb3JlYW49MTI1OTg7ZS5uaWV1bmtvcmVhbj0xMjU5NjtlLm5pZXVucGFuc2lvc2tvcmVhbj0xMjY0ODtlLm5pZXVucGFyZW5rb3JlYW49MTI4MDE7ZS5uaWV1bnNpb3Nrb3JlYW49MTI2NDc7ZS5uaWV1bnRpa2V1dGtvcmVhbj0xMjY0NjtlLm5paGlyYWdhbmE9MTIzOTU7ZS5uaWthdGFrYW5hPTEyNDkxO2UubmlrYXRha2FuYWhhbGZ3aWR0aD02NTQxNDtlLm5pa2hhaGl0bGVmdHRoYWk9NjM2NDE7ZS5uaWtoYWhpdHRoYWk9MzY2MTtlLm5pbmU9NTc7ZS5uaW5lYXJhYmljPTE2NDE7ZS5uaW5lYmVuZ2FsaT0yNTQzO2UubmluZWNpcmNsZT05MzIwO2UubmluZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMzA7ZS5uaW5lZGV2YT0yNDE1O2UubmluZWd1amFyYXRpPTI3OTk7ZS5uaW5lZ3VybXVraGk9MjY3MTtlLm5pbmVoYWNrYXJhYmljPTE2NDE7ZS5uaW5laGFuZ3pob3U9MTIzMjk7ZS5uaW5laWRlb2dyYXBoaWNwYXJlbj0xMjg0MDtlLm5pbmVpbmZlcmlvcj04MzI5O2UubmluZW1vbm9zcGFjZT02NTMwNTtlLm5pbmVvbGRzdHlsZT02MzI4OTtlLm5pbmVwYXJlbj05MzQwO2UubmluZXBlcmlvZD05MzYwO2UubmluZXBlcnNpYW49MTc4NTtlLm5pbmVyb21hbj04NTY4O2UubmluZXN1cGVyaW9yPTgzMTM7ZS5uaW5ldGVlbmNpcmNsZT05MzMwO2UubmluZXRlZW5wYXJlbj05MzUwO2UubmluZXRlZW5wZXJpb2Q9OTM3MDtlLm5pbmV0aGFpPTM2NzM7ZS5uaj00NjA7ZS5uamVjeXJpbGxpYz0xMTE0O2UubmthdGFrYW5hPTEyNTMxO2UubmthdGFrYW5haGFsZndpZHRoPTY1NDM3O2UubmxlZ3JpZ2h0bG9uZz00MTQ7ZS5ubGluZWJlbG93PTc3NTM7ZS5ubW9ub3NwYWNlPTY1MzU4O2Uubm1zcXVhcmU9MTMyMTA7ZS5ubmFiZW5nYWxpPTI0Njc7ZS5ubmFkZXZhPTIzMzk7ZS5ubmFndWphcmF0aT0yNzIzO2Uubm5hZ3VybXVraGk9MjU5NTtlLm5ubmFkZXZhPTIzNDU7ZS5ub2hpcmFnYW5hPTEyMzk4O2Uubm9rYXRha2FuYT0xMjQ5NDtlLm5va2F0YWthbmFoYWxmd2lkdGg9NjU0MTc7ZS5ub25icmVha2luZ3NwYWNlPTE2MDtlLm5vbmVudGhhaT0zNjAzO2Uubm9udXRoYWk9MzYwOTtlLm5vb25hcmFiaWM9MTYwNjtlLm5vb25maW5hbGFyYWJpYz02NTI1NDtlLm5vb25naHVubmFhcmFiaWM9MTcyMjtlLm5vb25naHVubmFmaW5hbGFyYWJpYz02NDQxNTtlLm5vb25pbml0aWFsYXJhYmljPTY1MjU1O2Uubm9vbmplZW1pbml0aWFsYXJhYmljPTY0NzIyO2Uubm9vbmplZW1pc29sYXRlZGFyYWJpYz02NDU4NztlLm5vb25tZWRpYWxhcmFiaWM9NjUyNTY7ZS5ub29ubWVlbWluaXRpYWxhcmFiaWM9NjQ3MjU7ZS5ub29ubWVlbWlzb2xhdGVkYXJhYmljPTY0NTkwO2Uubm9vbm5vb25maW5hbGFyYWJpYz02NDY1MztlLm5vdGNvbnRhaW5zPTg3MTY7ZS5ub3RlbGVtZW50PTg3MTM7ZS5ub3RlbGVtZW50b2Y9ODcxMztlLm5vdGVxdWFsPTg4MDA7ZS5ub3RncmVhdGVyPTg4MTU7ZS5ub3RncmVhdGVybm9yZXF1YWw9ODgxNztlLm5vdGdyZWF0ZXJub3JsZXNzPTg4MjU7ZS5ub3RpZGVudGljYWw9ODgwMjtlLm5vdGxlc3M9ODgxNDtlLm5vdGxlc3Nub3JlcXVhbD04ODE2O2Uubm90cGFyYWxsZWw9ODc0MjtlLm5vdHByZWNlZGVzPTg4MzI7ZS5ub3RzdWJzZXQ9ODgzNjtlLm5vdHN1Y2NlZWRzPTg4MzM7ZS5ub3RzdXBlcnNldD04ODM3O2Uubm93YXJtZW5pYW49MTM5ODtlLm5wYXJlbj05Mzg1O2UubnNzcXVhcmU9MTMyMzM7ZS5uc3VwZXJpb3I9ODMxOTtlLm50aWxkZT0yNDE7ZS5udT05NTc7ZS5udWhpcmFnYW5hPTEyMzk2O2UubnVrYXRha2FuYT0xMjQ5MjtlLm51a2F0YWthbmFoYWxmd2lkdGg9NjU0MTU7ZS5udWt0YWJlbmdhbGk9MjQ5MjtlLm51a3RhZGV2YT0yMzY0O2UubnVrdGFndWphcmF0aT0yNzQ4O2UubnVrdGFndXJtdWtoaT0yNjIwO2UubnVtYmVyc2lnbj0zNTtlLm51bWJlcnNpZ25tb25vc3BhY2U9NjUyODM7ZS5udW1iZXJzaWduc21hbGw9NjUxMTk7ZS5udW1lcmFsc2lnbmdyZWVrPTg4NDtlLm51bWVyYWxzaWdubG93ZXJncmVlaz04ODU7ZS5udW1lcm89ODQ3MDtlLm51bj0xNTA0O2UubnVuZGFnZXNoPTY0MzIwO2UubnVuZGFnZXNoaGVicmV3PTY0MzIwO2UubnVuaGVicmV3PTE1MDQ7ZS5udnNxdWFyZT0xMzIzNztlLm53c3F1YXJlPTEzMjQzO2UubnlhYmVuZ2FsaT0yNDYyO2UubnlhZGV2YT0yMzM0O2UubnlhZ3VqYXJhdGk9MjcxODtlLm55YWd1cm11a2hpPTI1OTA7ZS5vPTExMTtlLm9hY3V0ZT0yNDM7ZS5vYW5ndGhhaT0zNjI5O2Uub2JhcnJlZD02Mjk7ZS5vYmFycmVkY3lyaWxsaWM9MTI1NztlLm9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTk7ZS5vYmVuZ2FsaT0yNDUxO2Uub2JvcG9tb2ZvPTEyNTcxO2Uub2JyZXZlPTMzNTtlLm9jYW5kcmFkZXZhPTIzMjE7ZS5vY2FuZHJhZ3VqYXJhdGk9MjcwNTtlLm9jYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzc7ZS5vY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MTtlLm9jYXJvbj00NjY7ZS5vY2lyY2xlPTk0Mzg7ZS5vY2lyY3VtZmxleD0yNDQ7ZS5vY2lyY3VtZmxleGFjdXRlPTc4ODk7ZS5vY2lyY3VtZmxleGRvdGJlbG93PTc4OTc7ZS5vY2lyY3VtZmxleGdyYXZlPTc4OTE7ZS5vY2lyY3VtZmxleGhvb2thYm92ZT03ODkzO2Uub2NpcmN1bWZsZXh0aWxkZT03ODk1O2Uub2N5cmlsbGljPTEwODY7ZS5vZGJsYWN1dGU9MzM3O2Uub2RibGdyYXZlPTUyNTtlLm9kZXZhPTIzMjM7ZS5vZGllcmVzaXM9MjQ2O2Uub2RpZXJlc2lzY3lyaWxsaWM9MTI1NTtlLm9kb3RiZWxvdz03ODg1O2Uub2U9MzM5O2Uub2Vrb3JlYW49MTI2MzQ7ZS5vZ29uZWs9NzMxO2Uub2dvbmVrY21iPTgwODtlLm9ncmF2ZT0yNDI7ZS5vZ3VqYXJhdGk9MjcwNztlLm9oYXJtZW5pYW49MTQxMztlLm9oaXJhZ2FuYT0xMjM2MjtlLm9ob29rYWJvdmU9Nzg4NztlLm9ob3JuPTQxNztlLm9ob3JuYWN1dGU9Nzg5OTtlLm9ob3JuZG90YmVsb3c9NzkwNztlLm9ob3JuZ3JhdmU9NzkwMTtlLm9ob3JuaG9va2Fib3ZlPTc5MDM7ZS5vaG9ybnRpbGRlPTc5MDU7ZS5vaHVuZ2FydW1sYXV0PTMzNztlLm9pPTQxOTtlLm9pbnZlcnRlZGJyZXZlPTUyNztlLm9rYXRha2FuYT0xMjQ1ODtlLm9rYXRha2FuYWhhbGZ3aWR0aD02NTM5NztlLm9rb3JlYW49MTI2MzE7ZS5vbGVoZWJyZXc9MTQ1MTtlLm9tYWNyb249MzMzO2Uub21hY3JvbmFjdXRlPTc3NjM7ZS5vbWFjcm9uZ3JhdmU9Nzc2MTtlLm9tZGV2YT0yMzg0O2Uub21lZ2E9OTY5O2Uub21lZ2ExPTk4MjtlLm9tZWdhY3lyaWxsaWM9MTEyMTtlLm9tZWdhbGF0aW5jbG9zZWQ9NjMxO2Uub21lZ2Fyb3VuZGN5cmlsbGljPTExNDc7ZS5vbWVnYXRpdGxvY3lyaWxsaWM9MTE0OTtlLm9tZWdhdG9ub3M9OTc0O2Uub21ndWphcmF0aT0yNzY4O2Uub21pY3Jvbj05NTk7ZS5vbWljcm9udG9ub3M9OTcyO2Uub21vbm9zcGFjZT02NTM1OTtlLm9uZT00OTtlLm9uZWFyYWJpYz0xNjMzO2Uub25lYmVuZ2FsaT0yNTM1O2Uub25lY2lyY2xlPTkzMTI7ZS5vbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIyO2Uub25lZGV2YT0yNDA3O2Uub25lZG90ZW5sZWFkZXI9ODIyODtlLm9uZWVpZ2h0aD04NTM5O2Uub25lZml0dGVkPTYzMTk2O2Uub25lZ3VqYXJhdGk9Mjc5MTtlLm9uZWd1cm11a2hpPTI2NjM7ZS5vbmVoYWNrYXJhYmljPTE2MzM7ZS5vbmVoYWxmPTE4OTtlLm9uZWhhbmd6aG91PTEyMzIxO2Uub25laWRlb2dyYXBoaWNwYXJlbj0xMjgzMjtlLm9uZWluZmVyaW9yPTgzMjE7ZS5vbmVtb25vc3BhY2U9NjUyOTc7ZS5vbmVudW1lcmF0b3JiZW5nYWxpPTI1NDg7ZS5vbmVvbGRzdHlsZT02MzI4MTtlLm9uZXBhcmVuPTkzMzI7ZS5vbmVwZXJpb2Q9OTM1MjtlLm9uZXBlcnNpYW49MTc3NztlLm9uZXF1YXJ0ZXI9MTg4O2Uub25lcm9tYW49ODU2MDtlLm9uZXN1cGVyaW9yPTE4NTtlLm9uZXRoYWk9MzY2NTtlLm9uZXRoaXJkPTg1MzE7ZS5vb2dvbmVrPTQ5MTtlLm9vZ29uZWttYWNyb249NDkzO2Uub29ndXJtdWtoaT0yNTc5O2Uub29tYXRyYWd1cm11a2hpPTI2MzU7ZS5vb3Blbj01OTY7ZS5vcGFyZW49OTM4NjtlLm9wZW5idWxsZXQ9OTcwMjtlLm9wdGlvbj04OTk3O2Uub3JkZmVtaW5pbmU9MTcwO2Uub3JkbWFzY3VsaW5lPTE4NjtlLm9ydGhvZ29uYWw9ODczNTtlLm9zaG9ydGRldmE9MjMyMjtlLm9zaG9ydHZvd2Vsc2lnbmRldmE9MjM3ODtlLm9zbGFzaD0yNDg7ZS5vc2xhc2hhY3V0ZT01MTE7ZS5vc21hbGxoaXJhZ2FuYT0xMjM2MTtlLm9zbWFsbGthdGFrYW5hPTEyNDU3O2Uub3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODc7ZS5vc3Ryb2tlYWN1dGU9NTExO2Uub3N1cGVyaW9yPTYzMjE2O2Uub3RjeXJpbGxpYz0xMTUxO2Uub3RpbGRlPTI0NTtlLm90aWxkZWFjdXRlPTc3NTc7ZS5vdGlsZGVkaWVyZXNpcz03NzU5O2Uub3Vib3BvbW9mbz0xMjU3NztlLm92ZXJsaW5lPTgyNTQ7ZS5vdmVybGluZWNlbnRlcmxpbmU9NjUwOTg7ZS5vdmVybGluZWNtYj03NzM7ZS5vdmVybGluZWRhc2hlZD02NTA5NztlLm92ZXJsaW5lZGJsd2F2eT02NTEwMDtlLm92ZXJsaW5ld2F2eT02NTA5OTtlLm92ZXJzY29yZT0xNzU7ZS5vdm93ZWxzaWduYmVuZ2FsaT0yNTA3O2Uub3Zvd2Vsc2lnbmRldmE9MjM3OTtlLm92b3dlbHNpZ25ndWphcmF0aT0yNzYzO2UucD0xMTI7ZS5wYWFtcHNzcXVhcmU9MTMxODQ7ZS5wYWFzZW50b3NxdWFyZT0xMzA5OTtlLnBhYmVuZ2FsaT0yNDc0O2UucGFjdXRlPTc3NjU7ZS5wYWRldmE9MjM0NjtlLnBhZ2Vkb3duPTg2NzE7ZS5wYWdldXA9ODY3MDtlLnBhZ3VqYXJhdGk9MjczMDtlLnBhZ3VybXVraGk9MjYwMjtlLnBhaGlyYWdhbmE9MTI0MDE7ZS5wYWl5YW5ub2l0aGFpPTM2MzE7ZS5wYWthdGFrYW5hPTEyNDk3O2UucGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYj0xMTU2O2UucGFsb2Noa2FjeXJpbGxpYz0xMjE2O2UucGFuc2lvc2tvcmVhbj0xMjY3MTtlLnBhcmFncmFwaD0xODI7ZS5wYXJhbGxlbD04NzQxO2UucGFyZW5sZWZ0PTQwO2UucGFyZW5sZWZ0YWx0b25lYXJhYmljPTY0ODMwO2UucGFyZW5sZWZ0YnQ9NjM3MjU7ZS5wYXJlbmxlZnRleD02MzcyNDtlLnBhcmVubGVmdGluZmVyaW9yPTgzMzM7ZS5wYXJlbmxlZnRtb25vc3BhY2U9NjUyODg7ZS5wYXJlbmxlZnRzbWFsbD02NTExMztlLnBhcmVubGVmdHN1cGVyaW9yPTgzMTc7ZS5wYXJlbmxlZnR0cD02MzcyMztlLnBhcmVubGVmdHZlcnRpY2FsPTY1MDc3O2UucGFyZW5yaWdodD00MTtlLnBhcmVucmlnaHRhbHRvbmVhcmFiaWM9NjQ4MzE7ZS5wYXJlbnJpZ2h0YnQ9NjM3MzY7ZS5wYXJlbnJpZ2h0ZXg9NjM3MzU7ZS5wYXJlbnJpZ2h0aW5mZXJpb3I9ODMzNDtlLnBhcmVucmlnaHRtb25vc3BhY2U9NjUyODk7ZS5wYXJlbnJpZ2h0c21hbGw9NjUxMTQ7ZS5wYXJlbnJpZ2h0c3VwZXJpb3I9ODMxODtlLnBhcmVucmlnaHR0cD02MzczNDtlLnBhcmVucmlnaHR2ZXJ0aWNhbD02NTA3ODtlLnBhcnRpYWxkaWZmPTg3MDY7ZS5wYXNlcWhlYnJldz0xNDcyO2UucGFzaHRhaGVicmV3PTE0MzM7ZS5wYXNxdWFyZT0xMzIyNTtlLnBhdGFoPTE0NjM7ZS5wYXRhaDExPTE0NjM7ZS5wYXRhaDFkPTE0NjM7ZS5wYXRhaDJhPTE0NjM7ZS5wYXRhaGhlYnJldz0xNDYzO2UucGF0YWhuYXJyb3doZWJyZXc9MTQ2MztlLnBhdGFocXVhcnRlcmhlYnJldz0xNDYzO2UucGF0YWh3aWRlaGVicmV3PTE0NjM7ZS5wYXplcmhlYnJldz0xNDQxO2UucGJvcG9tb2ZvPTEyNTUwO2UucGNpcmNsZT05NDM5O2UucGRvdGFjY2VudD03NzY3O2UucGU9MTUwODtlLnBlY3lyaWxsaWM9MTA4NztlLnBlZGFnZXNoPTY0MzI0O2UucGVkYWdlc2hoZWJyZXc9NjQzMjQ7ZS5wZWV6aXNxdWFyZT0xMzExNTtlLnBlZmluYWxkYWdlc2hoZWJyZXc9NjQzMjM7ZS5wZWhhcmFiaWM9MTY2MjtlLnBlaGFybWVuaWFuPTE0MDI7ZS5wZWhlYnJldz0xNTA4O2UucGVoZmluYWxhcmFiaWM9NjQzNDM7ZS5wZWhpbml0aWFsYXJhYmljPTY0MzQ0O2UucGVoaXJhZ2FuYT0xMjQxMDtlLnBlaG1lZGlhbGFyYWJpYz02NDM0NTtlLnBla2F0YWthbmE9MTI1MDY7ZS5wZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkxO2UucGVyYWZlaGVicmV3PTY0MzM0O2UucGVyY2VudD0zNztlLnBlcmNlbnRhcmFiaWM9MTY0MjtlLnBlcmNlbnRtb25vc3BhY2U9NjUyODU7ZS5wZXJjZW50c21hbGw9NjUxMzA7ZS5wZXJpb2Q9NDY7ZS5wZXJpb2Rhcm1lbmlhbj0xNDE3O2UucGVyaW9kY2VudGVyZWQ9MTgzO2UucGVyaW9kaGFsZndpZHRoPTY1Mzc3O2UucGVyaW9kaW5mZXJpb3I9NjMyMDc7ZS5wZXJpb2Rtb25vc3BhY2U9NjUyOTQ7ZS5wZXJpb2RzbWFsbD02NTEwNjtlLnBlcmlvZHN1cGVyaW9yPTYzMjA4O2UucGVyaXNwb21lbmlncmVla2NtYj04MzQ7ZS5wZXJwZW5kaWN1bGFyPTg4Njk7ZS5wZXJ0aG91c2FuZD04MjQwO2UucGVzZXRhPTgzNTk7ZS5wZnNxdWFyZT0xMzE5NDtlLnBoYWJlbmdhbGk9MjQ3NTtlLnBoYWRldmE9MjM0NztlLnBoYWd1amFyYXRpPTI3MzE7ZS5waGFndXJtdWtoaT0yNjAzO2UucGhpPTk2NjtlLnBoaTE9OTgxO2UucGhpZXVwaGFjaXJjbGVrb3JlYW49MTI5MjI7ZS5waGlldXBoYXBhcmVua29yZWFuPTEyODI2O2UucGhpZXVwaGNpcmNsZWtvcmVhbj0xMjkwODtlLnBoaWV1cGhrb3JlYW49MTI2MjE7ZS5waGlldXBocGFyZW5rb3JlYW49MTI4MTI7ZS5waGlsYXRpbj02MzI7ZS5waGludGh1dGhhaT0zNjQyO2UucGhpc3ltYm9sZ3JlZWs9OTgxO2UucGhvb2s9NDIxO2UucGhvcGhhbnRoYWk9MzYxNDtlLnBob3BodW5ndGhhaT0zNjEyO2UucGhvc2FtcGhhb3RoYWk9MzYxNjtlLnBpPTk2MDtlLnBpZXVwYWNpcmNsZWtvcmVhbj0xMjkxNTtlLnBpZXVwYXBhcmVua29yZWFuPTEyODE5O2UucGlldXBjaWV1Y2tvcmVhbj0xMjY2MjtlLnBpZXVwY2lyY2xla29yZWFuPTEyOTAxO2UucGlldXBraXllb2trb3JlYW49MTI2NTg7ZS5waWV1cGtvcmVhbj0xMjYxMDtlLnBpZXVwcGFyZW5rb3JlYW49MTI4MDU7ZS5waWV1cHNpb3NraXllb2trb3JlYW49MTI2NjA7ZS5waWV1cHNpb3Nrb3JlYW49MTI2MTI7ZS5waWV1cHNpb3N0aWtldXRrb3JlYW49MTI2NjE7ZS5waWV1cHRoaWV1dGhrb3JlYW49MTI2NjM7ZS5waWV1cHRpa2V1dGtvcmVhbj0xMjY1OTtlLnBpaGlyYWdhbmE9MTI0MDQ7ZS5waWthdGFrYW5hPTEyNTAwO2UucGlzeW1ib2xncmVlaz05ODI7ZS5waXdyYXJtZW5pYW49MTQxMTtlLnBsYW5ja292ZXIycGk9ODQ2MztlLnBsYW5ja292ZXIycGkxPTg0NjM7ZS5wbHVzPTQzO2UucGx1c2JlbG93Y21iPTc5OTtlLnBsdXNjaXJjbGU9ODg1MztlLnBsdXNtaW51cz0xNzc7ZS5wbHVzbW9kPTcyNjtlLnBsdXNtb25vc3BhY2U9NjUyOTE7ZS5wbHVzc21hbGw9NjUxMjI7ZS5wbHVzc3VwZXJpb3I9ODMxNDtlLnBtb25vc3BhY2U9NjUzNjA7ZS5wbXNxdWFyZT0xMzI3MjtlLnBvaGlyYWdhbmE9MTI0MTM7ZS5wb2ludGluZ2luZGV4ZG93bndoaXRlPTk3NTk7ZS5wb2ludGluZ2luZGV4bGVmdHdoaXRlPTk3NTY7ZS5wb2ludGluZ2luZGV4cmlnaHR3aGl0ZT05NzU4O2UucG9pbnRpbmdpbmRleHVwd2hpdGU9OTc1NztlLnBva2F0YWthbmE9MTI1MDk7ZS5wb3BsYXRoYWk9MzYxMTtlLnBvc3RhbG1hcms9MTIzMDY7ZS5wb3N0YWxtYXJrZmFjZT0xMjMyMDtlLnBwYXJlbj05Mzg3O2UucHJlY2VkZXM9ODgyNjtlLnByZXNjcmlwdGlvbj04NDc4O2UucHJpbWVtb2Q9Njk3O2UucHJpbWVyZXZlcnNlZD04MjQ1O2UucHJvZHVjdD04NzE5O2UucHJvamVjdGl2ZT04OTY1O2UucHJvbG9uZ2Vka2FuYT0xMjU0MDtlLnByb3BlbGxvcj04OTg0O2UucHJvcGVyc3Vic2V0PTg4MzQ7ZS5wcm9wZXJzdXBlcnNldD04ODM1O2UucHJvcG9ydGlvbj04NzU5O2UucHJvcG9ydGlvbmFsPTg3MzM7ZS5wc2k9OTY4O2UucHNpY3lyaWxsaWM9MTEzNztlLnBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU4O2UucHNzcXVhcmU9MTMyMzI7ZS5wdWhpcmFnYW5hPTEyNDA3O2UucHVrYXRha2FuYT0xMjUwMztlLnB2c3F1YXJlPTEzMjM2O2UucHdzcXVhcmU9MTMyNDI7ZS5xPTExMztlLnFhZGV2YT0yMzkyO2UucWFkbWFoZWJyZXc9MTQ0ODtlLnFhZmFyYWJpYz0xNjAyO2UucWFmZmluYWxhcmFiaWM9NjUyMzg7ZS5xYWZpbml0aWFsYXJhYmljPTY1MjM5O2UucWFmbWVkaWFsYXJhYmljPTY1MjQwO2UucWFtYXRzPTE0NjQ7ZS5xYW1hdHMxMD0xNDY0O2UucWFtYXRzMWE9MTQ2NDtlLnFhbWF0czFjPTE0NjQ7ZS5xYW1hdHMyNz0xNDY0O2UucWFtYXRzMjk9MTQ2NDtlLnFhbWF0czMzPTE0NjQ7ZS5xYW1hdHNkZT0xNDY0O2UucWFtYXRzaGVicmV3PTE0NjQ7ZS5xYW1hdHNuYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFuaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbm5hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5xdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbndpZGVoZWJyZXc9MTQ2NDtlLnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3dpZGVoZWJyZXc9MTQ2NDtlLnFhcm5leXBhcmFoZWJyZXc9MTQzOTtlLnFib3BvbW9mbz0xMjU2MTtlLnFjaXJjbGU9OTQ0MDtlLnFob29rPTY3MjtlLnFtb25vc3BhY2U9NjUzNjE7ZS5xb2Y9MTUxMTtlLnFvZmRhZ2VzaD02NDMyNztlLnFvZmRhZ2VzaGhlYnJldz02NDMyNztlLnFvZmhlYnJldz0xNTExO2UucXBhcmVuPTkzODg7ZS5xdWFydGVybm90ZT05ODMzO2UucXVidXRzPTE0Njc7ZS5xdWJ1dHMxOD0xNDY3O2UucXVidXRzMjU9MTQ2NztlLnF1YnV0czMxPTE0Njc7ZS5xdWJ1dHNoZWJyZXc9MTQ2NztlLnF1YnV0c25hcnJvd2hlYnJldz0xNDY3O2UucXVidXRzcXVhcnRlcmhlYnJldz0xNDY3O2UucXVidXRzd2lkZWhlYnJldz0xNDY3O2UucXVlc3Rpb249NjM7ZS5xdWVzdGlvbmFyYWJpYz0xNTY3O2UucXVlc3Rpb25hcm1lbmlhbj0xMzc0O2UucXVlc3Rpb25kb3duPTE5MTtlLnF1ZXN0aW9uZG93bnNtYWxsPTYzNDIzO2UucXVlc3Rpb25ncmVlaz04OTQ7ZS5xdWVzdGlvbm1vbm9zcGFjZT02NTMxMTtlLnF1ZXN0aW9uc21hbGw9NjMyOTU7ZS5xdW90ZWRibD0zNDtlLnF1b3RlZGJsYmFzZT04MjIyO2UucXVvdGVkYmxsZWZ0PTgyMjA7ZS5xdW90ZWRibG1vbm9zcGFjZT02NTI4MjtlLnF1b3RlZGJscHJpbWU9MTIzMTg7ZS5xdW90ZWRibHByaW1lcmV2ZXJzZWQ9MTIzMTc7ZS5xdW90ZWRibHJpZ2h0PTgyMjE7ZS5xdW90ZWxlZnQ9ODIxNjtlLnF1b3RlbGVmdHJldmVyc2VkPTgyMTk7ZS5xdW90ZXJldmVyc2VkPTgyMTk7ZS5xdW90ZXJpZ2h0PTgyMTc7ZS5xdW90ZXJpZ2h0bj0zMjk7ZS5xdW90ZXNpbmdsYmFzZT04MjE4O2UucXVvdGVzaW5nbGU9Mzk7ZS5xdW90ZXNpbmdsZW1vbm9zcGFjZT02NTI4NztlLnI9MTE0O2UucmFhcm1lbmlhbj0xNDA0O2UucmFiZW5nYWxpPTI0ODA7ZS5yYWN1dGU9MzQxO2UucmFkZXZhPTIzNTI7ZS5yYWRpY2FsPTg3MzA7ZS5yYWRpY2FsZXg9NjM3MTc7ZS5yYWRvdmVyc3NxdWFyZT0xMzIzMDtlLnJhZG92ZXJzc3F1YXJlZHNxdWFyZT0xMzIzMTtlLnJhZHNxdWFyZT0xMzIyOTtlLnJhZmU9MTQ3MTtlLnJhZmVoZWJyZXc9MTQ3MTtlLnJhZ3VqYXJhdGk9MjczNjtlLnJhZ3VybXVraGk9MjYwODtlLnJhaGlyYWdhbmE9MTI0MjU7ZS5yYWthdGFrYW5hPTEyNTIxO2UucmFrYXRha2FuYWhhbGZ3aWR0aD02NTQzMTtlLnJhbG93ZXJkaWFnb25hbGJlbmdhbGk9MjU0NTtlLnJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpPTI1NDQ7ZS5yYW1zaG9ybj02MTI7ZS5yYXRpbz04NzU4O2UucmJvcG9tb2ZvPTEyNTY2O2UucmNhcm9uPTM0NTtlLnJjZWRpbGxhPTM0MztlLnJjaXJjbGU9OTQ0MTtlLnJjb21tYWFjY2VudD0zNDM7ZS5yZGJsZ3JhdmU9NTI5O2UucmRvdGFjY2VudD03NzY5O2UucmRvdGJlbG93PTc3NzE7ZS5yZG90YmVsb3dtYWNyb249Nzc3MztlLnJlZmVyZW5jZW1hcms9ODI1MTtlLnJlZmxleHN1YnNldD04ODM4O2UucmVmbGV4c3VwZXJzZXQ9ODgzOTtlLnJlZ2lzdGVyZWQ9MTc0O2UucmVnaXN0ZXJzYW5zPTYzNzIwO2UucmVnaXN0ZXJzZXJpZj02MzE5NDtlLnJlaGFyYWJpYz0xNTg1O2UucmVoYXJtZW5pYW49MTQwODtlLnJlaGZpbmFsYXJhYmljPTY1MTk4O2UucmVoaXJhZ2FuYT0xMjQyODtlLnJla2F0YWthbmE9MTI1MjQ7ZS5yZWthdGFrYW5haGFsZndpZHRoPTY1NDM0O2UucmVzaD0xNTEyO2UucmVzaGRhZ2VzaGhlYnJldz02NDMyODtlLnJlc2hoZWJyZXc9MTUxMjtlLnJldmVyc2VkdGlsZGU9ODc2NTtlLnJldmlhaGVicmV3PTE0MzE7ZS5yZXZpYW11Z3Jhc2hoZWJyZXc9MTQzMTtlLnJldmxvZ2ljYWxub3Q9ODk3NjtlLnJmaXNoaG9vaz02Mzg7ZS5yZmlzaGhvb2tyZXZlcnNlZD02Mzk7ZS5yaGFiZW5nYWxpPTI1MjU7ZS5yaGFkZXZhPTIzOTc7ZS5yaG89OTYxO2Uucmhvb2s9NjM3O2Uucmhvb2t0dXJuZWQ9NjM1O2Uucmhvb2t0dXJuZWRzdXBlcmlvcj02OTM7ZS5yaG9zeW1ib2xncmVlaz0xMDA5O2UucmhvdGljaG9va21vZD03MzQ7ZS5yaWV1bGFjaXJjbGVrb3JlYW49MTI5MTM7ZS5yaWV1bGFwYXJlbmtvcmVhbj0xMjgxNztlLnJpZXVsY2lyY2xla29yZWFuPTEyODk5O2UucmlldWxoaWV1aGtvcmVhbj0xMjYwODtlLnJpZXVsa2l5ZW9ra29yZWFuPTEyNjAyO2UucmlldWxraXllb2tzaW9za29yZWFuPTEyNjQ5O2UucmlldWxrb3JlYW49MTI2MDE7ZS5yaWV1bG1pZXVta29yZWFuPTEyNjAzO2UucmlldWxwYW5zaW9za29yZWFuPTEyNjUyO2UucmlldWxwYXJlbmtvcmVhbj0xMjgwMztlLnJpZXVscGhpZXVwaGtvcmVhbj0xMjYwNztlLnJpZXVscGlldXBrb3JlYW49MTI2MDQ7ZS5yaWV1bHBpZXVwc2lvc2tvcmVhbj0xMjY1MTtlLnJpZXVsc2lvc2tvcmVhbj0xMjYwNTtlLnJpZXVsdGhpZXV0aGtvcmVhbj0xMjYwNjtlLnJpZXVsdGlrZXV0a29yZWFuPTEyNjUwO2UucmlldWx5ZW9yaW5oaWV1aGtvcmVhbj0xMjY1MztlLnJpZ2h0YW5nbGU9ODczNTtlLnJpZ2h0dGFja2JlbG93Y21iPTc5MztlLnJpZ2h0dHJpYW5nbGU9ODg5NTtlLnJpaGlyYWdhbmE9MTI0MjY7ZS5yaWthdGFrYW5hPTEyNTIyO2UucmlrYXRha2FuYWhhbGZ3aWR0aD02NTQzMjtlLnJpbmc9NzMwO2UucmluZ2JlbG93Y21iPTgwNTtlLnJpbmdjbWI9Nzc4O2UucmluZ2hhbGZsZWZ0PTcwMztlLnJpbmdoYWxmbGVmdGFybWVuaWFuPTEzNjk7ZS5yaW5naGFsZmxlZnRiZWxvd2NtYj03OTY7ZS5yaW5naGFsZmxlZnRjZW50ZXJlZD03MjM7ZS5yaW5naGFsZnJpZ2h0PTcwMjtlLnJpbmdoYWxmcmlnaHRiZWxvd2NtYj04MjU7ZS5yaW5naGFsZnJpZ2h0Y2VudGVyZWQ9NzIyO2UucmludmVydGVkYnJldmU9NTMxO2Uucml0dG9ydXNxdWFyZT0xMzEzNztlLnJsaW5lYmVsb3c9Nzc3NTtlLnJsb25nbGVnPTYzNjtlLnJsb25nbGVndHVybmVkPTYzNDtlLnJtb25vc3BhY2U9NjUzNjI7ZS5yb2hpcmFnYW5hPTEyNDI5O2Uucm9rYXRha2FuYT0xMjUyNTtlLnJva2F0YWthbmFoYWxmd2lkdGg9NjU0MzU7ZS5yb3J1YXRoYWk9MzYxOTtlLnJwYXJlbj05Mzg5O2UucnJhYmVuZ2FsaT0yNTI0O2UucnJhZGV2YT0yMzUzO2UucnJhZ3VybXVraGk9MjY1MjtlLnJyZWhhcmFiaWM9MTY4MTtlLnJyZWhmaW5hbGFyYWJpYz02NDM5NztlLnJydm9jYWxpY2JlbmdhbGk9MjUyODtlLnJydm9jYWxpY2RldmE9MjQwMDtlLnJydm9jYWxpY2d1amFyYXRpPTI3ODQ7ZS5ycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MDA7ZS5ycnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzI7ZS5ycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU2O2UucnN1cGVyaW9yPTYzMjE3O2UucnRibG9jaz05NjE2O2UucnR1cm5lZD02MzM7ZS5ydHVybmVkc3VwZXJpb3I9NjkyO2UucnVoaXJhZ2FuYT0xMjQyNztlLnJ1a2F0YWthbmE9MTI1MjM7ZS5ydWthdGFrYW5haGFsZndpZHRoPTY1NDMzO2UucnVwZWVtYXJrYmVuZ2FsaT0yNTQ2O2UucnVwZWVzaWduYmVuZ2FsaT0yNTQ3O2UucnVwaWFoPTYzMTk3O2UucnV0aGFpPTM2MjA7ZS5ydm9jYWxpY2JlbmdhbGk9MjQ0MztlLnJ2b2NhbGljZGV2YT0yMzE1O2UucnZvY2FsaWNndWphcmF0aT0yNjk5O2UucnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI0OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MTtlLnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NTtlLnM9MTE1O2Uuc2FiZW5nYWxpPTI0ODg7ZS5zYWN1dGU9MzQ3O2Uuc2FjdXRlZG90YWNjZW50PTc3ODE7ZS5zYWRhcmFiaWM9MTU4OTtlLnNhZGV2YT0yMzYwO2Uuc2FkZmluYWxhcmFiaWM9NjUyMTA7ZS5zYWRpbml0aWFsYXJhYmljPTY1MjExO2Uuc2FkbWVkaWFsYXJhYmljPTY1MjEyO2Uuc2FndWphcmF0aT0yNzQ0O2Uuc2FndXJtdWtoaT0yNjE2O2Uuc2FoaXJhZ2FuYT0xMjM3MztlLnNha2F0YWthbmE9MTI0Njk7ZS5zYWthdGFrYW5haGFsZndpZHRoPTY1NDAzO2Uuc2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYz02NTAxODtlLnNhbWVraD0xNTA1O2Uuc2FtZWtoZGFnZXNoPTY0MzIxO2Uuc2FtZWtoZGFnZXNoaGVicmV3PTY0MzIxO2Uuc2FtZWtoaGVicmV3PTE1MDU7ZS5zYXJhYWF0aGFpPTM2MzQ7ZS5zYXJhYWV0aGFpPTM2NDk7ZS5zYXJhYWltYWltYWxhaXRoYWk9MzY1MjtlLnNhcmFhaW1haW11YW50aGFpPTM2NTE7ZS5zYXJhYW10aGFpPTM2MzU7ZS5zYXJhYXRoYWk9MzYzMjtlLnNhcmFldGhhaT0zNjQ4O2Uuc2FyYWlpbGVmdHRoYWk9NjM2MjI7ZS5zYXJhaWl0aGFpPTM2Mzc7ZS5zYXJhaWxlZnR0aGFpPTYzNjIxO2Uuc2FyYWl0aGFpPTM2MzY7ZS5zYXJhb3RoYWk9MzY1MDtlLnNhcmF1ZWVsZWZ0dGhhaT02MzYyNDtlLnNhcmF1ZWV0aGFpPTM2Mzk7ZS5zYXJhdWVsZWZ0dGhhaT02MzYyMztlLnNhcmF1ZXRoYWk9MzYzODtlLnNhcmF1dGhhaT0zNjQwO2Uuc2FyYXV1dGhhaT0zNjQxO2Uuc2JvcG9tb2ZvPTEyNTY5O2Uuc2Nhcm9uPTM1MztlLnNjYXJvbmRvdGFjY2VudD03NzgzO2Uuc2NlZGlsbGE9MzUxO2Uuc2Nod2E9NjAxO2Uuc2Nod2FjeXJpbGxpYz0xMjQxO2Uuc2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDM7ZS5zY2h3YWhvb2s9NjAyO2Uuc2NpcmNsZT05NDQyO2Uuc2NpcmN1bWZsZXg9MzQ5O2Uuc2NvbW1hYWNjZW50PTUzNztlLnNkb3RhY2NlbnQ9Nzc3NztlLnNkb3RiZWxvdz03Nzc5O2Uuc2RvdGJlbG93ZG90YWNjZW50PTc3ODU7ZS5zZWFndWxsYmVsb3djbWI9ODI4O2Uuc2Vjb25kPTgyNDM7ZS5zZWNvbmR0b25lY2hpbmVzZT03MTQ7ZS5zZWN0aW9uPTE2NztlLnNlZW5hcmFiaWM9MTU4NztlLnNlZW5maW5hbGFyYWJpYz02NTIwMjtlLnNlZW5pbml0aWFsYXJhYmljPTY1MjAzO2Uuc2Vlbm1lZGlhbGFyYWJpYz02NTIwNDtlLnNlZ29sPTE0NjI7ZS5zZWdvbDEzPTE0NjI7ZS5zZWdvbDFmPTE0NjI7ZS5zZWdvbDJjPTE0NjI7ZS5zZWdvbGhlYnJldz0xNDYyO2Uuc2Vnb2xuYXJyb3doZWJyZXc9MTQ2MjtlLnNlZ29scXVhcnRlcmhlYnJldz0xNDYyO2Uuc2Vnb2x0YWhlYnJldz0xNDI2O2Uuc2Vnb2x3aWRlaGVicmV3PTE0NjI7ZS5zZWhhcm1lbmlhbj0xNDA1O2Uuc2VoaXJhZ2FuYT0xMjM3OTtlLnNla2F0YWthbmE9MTI0NzU7ZS5zZWthdGFrYW5haGFsZndpZHRoPTY1NDA2O2Uuc2VtaWNvbG9uPTU5O2Uuc2VtaWNvbG9uYXJhYmljPTE1NjM7ZS5zZW1pY29sb25tb25vc3BhY2U9NjUzMDc7ZS5zZW1pY29sb25zbWFsbD02NTEwODtlLnNlbWl2b2ljZWRtYXJra2FuYT0xMjQ0NDtlLnNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzOTtlLnNlbnRpc3F1YXJlPTEzMDkwO2Uuc2VudG9zcXVhcmU9MTMwOTE7ZS5zZXZlbj01NTtlLnNldmVuYXJhYmljPTE2Mzk7ZS5zZXZlbmJlbmdhbGk9MjU0MTtlLnNldmVuY2lyY2xlPTkzMTg7ZS5zZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjg7ZS5zZXZlbmRldmE9MjQxMztlLnNldmVuZWlnaHRocz04NTQyO2Uuc2V2ZW5ndWphcmF0aT0yNzk3O2Uuc2V2ZW5ndXJtdWtoaT0yNjY5O2Uuc2V2ZW5oYWNrYXJhYmljPTE2Mzk7ZS5zZXZlbmhhbmd6aG91PTEyMzI3O2Uuc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODM4O2Uuc2V2ZW5pbmZlcmlvcj04MzI3O2Uuc2V2ZW5tb25vc3BhY2U9NjUzMDM7ZS5zZXZlbm9sZHN0eWxlPTYzMjg3O2Uuc2V2ZW5wYXJlbj05MzM4O2Uuc2V2ZW5wZXJpb2Q9OTM1ODtlLnNldmVucGVyc2lhbj0xNzgzO2Uuc2V2ZW5yb21hbj04NTY2O2Uuc2V2ZW5zdXBlcmlvcj04MzExO2Uuc2V2ZW50ZWVuY2lyY2xlPTkzMjg7ZS5zZXZlbnRlZW5wYXJlbj05MzQ4O2Uuc2V2ZW50ZWVucGVyaW9kPTkzNjg7ZS5zZXZlbnRoYWk9MzY3MTtlLnNmdGh5cGhlbj0xNzM7ZS5zaGFhcm1lbmlhbj0xMzk5O2Uuc2hhYmVuZ2FsaT0yNDg2O2Uuc2hhY3lyaWxsaWM9MTA5NjtlLnNoYWRkYWFyYWJpYz0xNjE3O2Uuc2hhZGRhZGFtbWFhcmFiaWM9NjQ2MDk7ZS5zaGFkZGFkYW1tYXRhbmFyYWJpYz02NDYwNjtlLnNoYWRkYWZhdGhhYXJhYmljPTY0NjA4O2Uuc2hhZGRha2FzcmFhcmFiaWM9NjQ2MTA7ZS5zaGFkZGFrYXNyYXRhbmFyYWJpYz02NDYwNztlLnNoYWRlPTk2MTg7ZS5zaGFkZWRhcms9OTYxOTtlLnNoYWRlbGlnaHQ9OTYxNztlLnNoYWRlbWVkaXVtPTk2MTg7ZS5zaGFkZXZhPTIzNTg7ZS5zaGFndWphcmF0aT0yNzQyO2Uuc2hhZ3VybXVraGk9MjYxNDtlLnNoYWxzaGVsZXRoZWJyZXc9MTQyNztlLnNoYm9wb21vZm89MTI1NjU7ZS5zaGNoYWN5cmlsbGljPTEwOTc7ZS5zaGVlbmFyYWJpYz0xNTg4O2Uuc2hlZW5maW5hbGFyYWJpYz02NTIwNjtlLnNoZWVuaW5pdGlhbGFyYWJpYz02NTIwNztlLnNoZWVubWVkaWFsYXJhYmljPTY1MjA4O2Uuc2hlaWNvcHRpYz05OTU7ZS5zaGVxZWw9ODM2MjtlLnNoZXFlbGhlYnJldz04MzYyO2Uuc2hldmE9MTQ1NjtlLnNoZXZhMTE1PTE0NTY7ZS5zaGV2YTE1PTE0NTY7ZS5zaGV2YTIyPTE0NTY7ZS5zaGV2YTJlPTE0NTY7ZS5zaGV2YWhlYnJldz0xNDU2O2Uuc2hldmFuYXJyb3doZWJyZXc9MTQ1NjtlLnNoZXZhcXVhcnRlcmhlYnJldz0xNDU2O2Uuc2hldmF3aWRlaGVicmV3PTE0NTY7ZS5zaGhhY3lyaWxsaWM9MTIxMTtlLnNoaW1hY29wdGljPTEwMDU7ZS5zaGluPTE1MTM7ZS5zaGluZGFnZXNoPTY0MzI5O2Uuc2hpbmRhZ2VzaGhlYnJldz02NDMyOTtlLnNoaW5kYWdlc2hzaGluZG90PTY0MzAwO2Uuc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc9NjQzMDA7ZS5zaGluZGFnZXNoc2luZG90PTY0MzAxO2Uuc2hpbmRhZ2VzaHNpbmRvdGhlYnJldz02NDMwMTtlLnNoaW5kb3RoZWJyZXc9MTQ3MztlLnNoaW5oZWJyZXc9MTUxMztlLnNoaW5zaGluZG90PTY0Mjk4O2Uuc2hpbnNoaW5kb3RoZWJyZXc9NjQyOTg7ZS5zaGluc2luZG90PTY0Mjk5O2Uuc2hpbnNpbmRvdGhlYnJldz02NDI5OTtlLnNob29rPTY0MjtlLnNpZ21hPTk2MztlLnNpZ21hMT05NjI7ZS5zaWdtYWZpbmFsPTk2MjtlLnNpZ21hbHVuYXRlc3ltYm9sZ3JlZWs9MTAxMDtlLnNpaGlyYWdhbmE9MTIzNzU7ZS5zaWthdGFrYW5hPTEyNDcxO2Uuc2lrYXRha2FuYWhhbGZ3aWR0aD02NTQwNDtlLnNpbHVxaGVicmV3PTE0Njk7ZS5zaWx1cWxlZnRoZWJyZXc9MTQ2OTtlLnNpbWlsYXI9ODc2NDtlLnNpbmRvdGhlYnJldz0xNDc0O2Uuc2lvc2FjaXJjbGVrb3JlYW49MTI5MTY7ZS5zaW9zYXBhcmVua29yZWFuPTEyODIwO2Uuc2lvc2NpZXVja29yZWFuPTEyNjcwO2Uuc2lvc2NpcmNsZWtvcmVhbj0xMjkwMjtlLnNpb3NraXllb2trb3JlYW49MTI2NjY7ZS5zaW9za29yZWFuPTEyNjEzO2Uuc2lvc25pZXVua29yZWFuPTEyNjY3O2Uuc2lvc3BhcmVua29yZWFuPTEyODA2O2Uuc2lvc3BpZXVwa29yZWFuPTEyNjY5O2Uuc2lvc3Rpa2V1dGtvcmVhbj0xMjY2ODtlLnNpeD01NDtlLnNpeGFyYWJpYz0xNjM4O2Uuc2l4YmVuZ2FsaT0yNTQwO2Uuc2l4Y2lyY2xlPTkzMTc7ZS5zaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI3O2Uuc2l4ZGV2YT0yNDEyO2Uuc2l4Z3VqYXJhdGk9Mjc5NjtlLnNpeGd1cm11a2hpPTI2Njg7ZS5zaXhoYWNrYXJhYmljPTE2Mzg7ZS5zaXhoYW5nemhvdT0xMjMyNjtlLnNpeGlkZW9ncmFwaGljcGFyZW49MTI4Mzc7ZS5zaXhpbmZlcmlvcj04MzI2O2Uuc2l4bW9ub3NwYWNlPTY1MzAyO2Uuc2l4b2xkc3R5bGU9NjMyODY7ZS5zaXhwYXJlbj05MzM3O2Uuc2l4cGVyaW9kPTkzNTc7ZS5zaXhwZXJzaWFuPTE3ODI7ZS5zaXhyb21hbj04NTY1O2Uuc2l4c3VwZXJpb3I9ODMxMDtlLnNpeHRlZW5jaXJjbGU9OTMyNztlLnNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaT0yNTUzO2Uuc2l4dGVlbnBhcmVuPTkzNDc7ZS5zaXh0ZWVucGVyaW9kPTkzNjc7ZS5zaXh0aGFpPTM2NzA7ZS5zbGFzaD00NztlLnNsYXNobW9ub3NwYWNlPTY1Mjk1O2Uuc2xvbmc9MzgzO2Uuc2xvbmdkb3RhY2NlbnQ9NzgzNTtlLnNtaWxlZmFjZT05Nzg2O2Uuc21vbm9zcGFjZT02NTM2MztlLnNvZnBhc3VxaGVicmV3PTE0NzU7ZS5zb2Z0aHlwaGVuPTE3MztlLnNvZnRzaWduY3lyaWxsaWM9MTEwMDtlLnNvaGlyYWdhbmE9MTIzODE7ZS5zb2thdGFrYW5hPTEyNDc3O2Uuc29rYXRha2FuYWhhbGZ3aWR0aD02NTQwNztlLnNvbGlkdXNsb25nb3ZlcmxheWNtYj04MjQ7ZS5zb2xpZHVzc2hvcnRvdmVybGF5Y21iPTgyMztlLnNvcnVzaXRoYWk9MzYyNTtlLnNvc2FsYXRoYWk9MzYyNDtlLnNvc290aGFpPTM1OTU7ZS5zb3N1YXRoYWk9MzYyNjtlLnNwYWNlPTMyO2Uuc3BhY2VoYWNrYXJhYmljPTMyO2Uuc3BhZGU9OTgyNDtlLnNwYWRlc3VpdGJsYWNrPTk4MjQ7ZS5zcGFkZXN1aXR3aGl0ZT05ODI4O2Uuc3BhcmVuPTkzOTA7ZS5zcXVhcmViZWxvd2NtYj04Mjc7ZS5zcXVhcmVjYz0xMzI1MjtlLnNxdWFyZWNtPTEzMjEzO2Uuc3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbD05NjQxO2Uuc3F1YXJlaG9yaXpvbnRhbGZpbGw9OTYzNjtlLnNxdWFyZWtnPTEzMTk5O2Uuc3F1YXJla209MTMyMTQ7ZS5zcXVhcmVrbWNhcGl0YWw9MTMyNjI7ZS5zcXVhcmVsbj0xMzI2NTtlLnNxdWFyZWxvZz0xMzI2NjtlLnNxdWFyZW1nPTEzMTk4O2Uuc3F1YXJlbWlsPTEzMjY5O2Uuc3F1YXJlbW09MTMyMTI7ZS5zcXVhcmVtc3F1YXJlZD0xMzIxNztlLnNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbD05NjM4O2Uuc3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbD05NjM5O2Uuc3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbD05NjQwO2Uuc3F1YXJldmVydGljYWxmaWxsPTk2Mzc7ZS5zcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrPTk2MzU7ZS5zcnNxdWFyZT0xMzI3NTtlLnNzYWJlbmdhbGk9MjQ4NztlLnNzYWRldmE9MjM1OTtlLnNzYWd1amFyYXRpPTI3NDM7ZS5zc2FuZ2NpZXVja29yZWFuPTEyNjE3O2Uuc3NhbmdoaWV1aGtvcmVhbj0xMjY3NztlLnNzYW5naWV1bmdrb3JlYW49MTI2NzI7ZS5zc2FuZ2tpeWVva2tvcmVhbj0xMjU5NDtlLnNzYW5nbmlldW5rb3JlYW49MTI2NDU7ZS5zc2FuZ3BpZXVwa29yZWFuPTEyNjExO2Uuc3NhbmdzaW9za29yZWFuPTEyNjE0O2Uuc3Nhbmd0aWtldXRrb3JlYW49MTI2MDA7ZS5zc3VwZXJpb3I9NjMyMTg7ZS5zdGVybGluZz0xNjM7ZS5zdGVybGluZ21vbm9zcGFjZT02NTUwNTtlLnN0cm9rZWxvbmdvdmVybGF5Y21iPTgyMjtlLnN0cm9rZXNob3J0b3ZlcmxheWNtYj04MjE7ZS5zdWJzZXQ9ODgzNDtlLnN1YnNldG5vdGVxdWFsPTg4NDI7ZS5zdWJzZXRvcmVxdWFsPTg4Mzg7ZS5zdWNjZWVkcz04ODI3O2Uuc3VjaHRoYXQ9ODcxNTtlLnN1aGlyYWdhbmE9MTIzNzc7ZS5zdWthdGFrYW5hPTEyNDczO2Uuc3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNTtlLnN1a3VuYXJhYmljPTE2MTg7ZS5zdW1tYXRpb249ODcyMTtlLnN1bj05Nzg4O2Uuc3VwZXJzZXQ9ODgzNTtlLnN1cGVyc2V0bm90ZXF1YWw9ODg0MztlLnN1cGVyc2V0b3JlcXVhbD04ODM5O2Uuc3ZzcXVhcmU9MTMyNzY7ZS5zeW91d2FlcmFzcXVhcmU9MTMxODA7ZS50PTExNjtlLnRhYmVuZ2FsaT0yNDY4O2UudGFja2Rvd249ODg2ODtlLnRhY2tsZWZ0PTg4Njc7ZS50YWRldmE9MjM0MDtlLnRhZ3VqYXJhdGk9MjcyNDtlLnRhZ3VybXVraGk9MjU5NjtlLnRhaGFyYWJpYz0xNTkxO2UudGFoZmluYWxhcmFiaWM9NjUyMTg7ZS50YWhpbml0aWFsYXJhYmljPTY1MjE5O2UudGFoaXJhZ2FuYT0xMjM4MztlLnRhaG1lZGlhbGFyYWJpYz02NTIyMDtlLnRhaXN5b3VlcmFzcXVhcmU9MTMxODE7ZS50YWthdGFrYW5hPTEyNDc5O2UudGFrYXRha2FuYWhhbGZ3aWR0aD02NTQwODtlLnRhdHdlZWxhcmFiaWM9MTYwMDtlLnRhdT05NjQ7ZS50YXY9MTUxNDtlLnRhdmRhZ2VzPTY0MzMwO2UudGF2ZGFnZXNoPTY0MzMwO2UudGF2ZGFnZXNoaGVicmV3PTY0MzMwO2UudGF2aGVicmV3PTE1MTQ7ZS50YmFyPTM1OTtlLnRib3BvbW9mbz0xMjU1NDtlLnRjYXJvbj0zNTc7ZS50Y2N1cmw9NjgwO2UudGNlZGlsbGE9MzU1O2UudGNoZWhhcmFiaWM9MTY3MDtlLnRjaGVoZmluYWxhcmFiaWM9NjQzNzk7ZS50Y2hlaGluaXRpYWxhcmFiaWM9NjQzODA7ZS50Y2hlaG1lZGlhbGFyYWJpYz02NDM4MTtlLnRjaXJjbGU9OTQ0MztlLnRjaXJjdW1mbGV4YmVsb3c9Nzc5MztlLnRjb21tYWFjY2VudD0zNTU7ZS50ZGllcmVzaXM9NzgzMTtlLnRkb3RhY2NlbnQ9Nzc4NztlLnRkb3RiZWxvdz03Nzg5O2UudGVjeXJpbGxpYz0xMDkwO2UudGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk3O2UudGVoYXJhYmljPTE1Nzg7ZS50ZWhmaW5hbGFyYWJpYz02NTE3NDtlLnRlaGhhaGluaXRpYWxhcmFiaWM9NjQ2NzQ7ZS50ZWhoYWhpc29sYXRlZGFyYWJpYz02NDUyNDtlLnRlaGluaXRpYWxhcmFiaWM9NjUxNzU7ZS50ZWhpcmFnYW5hPTEyMzkwO2UudGVoamVlbWluaXRpYWxhcmFiaWM9NjQ2NzM7ZS50ZWhqZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjM7ZS50ZWhtYXJidXRhYXJhYmljPTE1Nzc7ZS50ZWhtYXJidXRhZmluYWxhcmFiaWM9NjUxNzI7ZS50ZWhtZWRpYWxhcmFiaWM9NjUxNzY7ZS50ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3NjtlLnRlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyNjtlLnRlaG5vb25maW5hbGFyYWJpYz02NDYyNztlLnRla2F0YWthbmE9MTI0ODY7ZS50ZWthdGFrYW5haGFsZndpZHRoPTY1NDExO2UudGVsZXBob25lPTg0ODE7ZS50ZWxlcGhvbmVibGFjaz05NzQyO2UudGVsaXNoYWdlZG9sYWhlYnJldz0xNDQwO2UudGVsaXNoYXFldGFuYWhlYnJldz0xNDQ5O2UudGVuY2lyY2xlPTkzMjE7ZS50ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODQxO2UudGVucGFyZW49OTM0MTtlLnRlbnBlcmlvZD05MzYxO2UudGVucm9tYW49ODU2OTtlLnRlc2g9Njc5O2UudGV0PTE0OTY7ZS50ZXRkYWdlc2g9NjQzMTI7ZS50ZXRkYWdlc2hoZWJyZXc9NjQzMTI7ZS50ZXRoZWJyZXc9MTQ5NjtlLnRldHNlY3lyaWxsaWM9MTIwNTtlLnRldmlyaGVicmV3PTE0MzU7ZS50ZXZpcmxlZnRoZWJyZXc9MTQzNTtlLnRoYWJlbmdhbGk9MjQ2OTtlLnRoYWRldmE9MjM0MTtlLnRoYWd1amFyYXRpPTI3MjU7ZS50aGFndXJtdWtoaT0yNTk3O2UudGhhbGFyYWJpYz0xNTg0O2UudGhhbGZpbmFsYXJhYmljPTY1MTk2O2UudGhhbnRoYWtoYXRsb3dsZWZ0dGhhaT02MzY0MDtlLnRoYW50aGFraGF0bG93cmlnaHR0aGFpPTYzNjM5O2UudGhhbnRoYWtoYXR0aGFpPTM2NjA7ZS50aGFudGhha2hhdHVwcGVybGVmdHRoYWk9NjM2Mzg7ZS50aGVoYXJhYmljPTE1Nzk7ZS50aGVoZmluYWxhcmFiaWM9NjUxNzg7ZS50aGVoaW5pdGlhbGFyYWJpYz02NTE3OTtlLnRoZWhtZWRpYWxhcmFiaWM9NjUxODA7ZS50aGVyZWV4aXN0cz04NzA3O2UudGhlcmVmb3JlPTg3NTY7ZS50aGV0YT05NTI7ZS50aGV0YTE9OTc3O2UudGhldGFzeW1ib2xncmVlaz05Nzc7ZS50aGlldXRoYWNpcmNsZWtvcmVhbj0xMjkyMTtlLnRoaWV1dGhhcGFyZW5rb3JlYW49MTI4MjU7ZS50aGlldXRoY2lyY2xla29yZWFuPTEyOTA3O2UudGhpZXV0aGtvcmVhbj0xMjYyMDtlLnRoaWV1dGhwYXJlbmtvcmVhbj0xMjgxMTtlLnRoaXJ0ZWVuY2lyY2xlPTkzMjQ7ZS50aGlydGVlbnBhcmVuPTkzNDQ7ZS50aGlydGVlbnBlcmlvZD05MzY0O2UudGhvbmFuZ21vbnRob3RoYWk9MzYwMTtlLnRob29rPTQyOTtlLnRob3BodXRoYW90aGFpPTM2MDI7ZS50aG9ybj0yNTQ7ZS50aG90aGFoYW50aGFpPTM2MDc7ZS50aG90aGFudGhhaT0zNjAwO2UudGhvdGhvbmd0aGFpPTM2MDg7ZS50aG90aHVuZ3RoYWk9MzYwNjtlLnRob3VzYW5kY3lyaWxsaWM9MTE1NDtlLnRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYz0xNjQ0O2UudGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbj0xNjQ0O2UudGhyZWU9NTE7ZS50aHJlZWFyYWJpYz0xNjM1O2UudGhyZWViZW5nYWxpPTI1Mzc7ZS50aHJlZWNpcmNsZT05MzE0O2UudGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI0O2UudGhyZWVkZXZhPTI0MDk7ZS50aHJlZWVpZ2h0aHM9ODU0MDtlLnRocmVlZ3VqYXJhdGk9Mjc5MztlLnRocmVlZ3VybXVraGk9MjY2NTtlLnRocmVlaGFja2FyYWJpYz0xNjM1O2UudGhyZWVoYW5nemhvdT0xMjMyMztlLnRocmVlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNDtlLnRocmVlaW5mZXJpb3I9ODMyMztlLnRocmVlbW9ub3NwYWNlPTY1Mjk5O2UudGhyZWVudW1lcmF0b3JiZW5nYWxpPTI1NTA7ZS50aHJlZW9sZHN0eWxlPTYzMjgzO2UudGhyZWVwYXJlbj05MzM0O2UudGhyZWVwZXJpb2Q9OTM1NDtlLnRocmVlcGVyc2lhbj0xNzc5O2UudGhyZWVxdWFydGVycz0xOTA7ZS50aHJlZXF1YXJ0ZXJzZW1kYXNoPTYzMTk4O2UudGhyZWVyb21hbj04NTYyO2UudGhyZWVzdXBlcmlvcj0xNzk7ZS50aHJlZXRoYWk9MzY2NztlLnRoenNxdWFyZT0xMzIwNDtlLnRpaGlyYWdhbmE9MTIzODU7ZS50aWthdGFrYW5hPTEyNDgxO2UudGlrYXRha2FuYWhhbGZ3aWR0aD02NTQwOTtlLnRpa2V1dGFjaXJjbGVrb3JlYW49MTI5MTI7ZS50aWtldXRhcGFyZW5rb3JlYW49MTI4MTY7ZS50aWtldXRjaXJjbGVrb3JlYW49MTI4OTg7ZS50aWtldXRrb3JlYW49MTI1OTk7ZS50aWtldXRwYXJlbmtvcmVhbj0xMjgwMjtlLnRpbGRlPTczMjtlLnRpbGRlYmVsb3djbWI9ODE2O2UudGlsZGVjbWI9NzcxO2UudGlsZGVjb21iPTc3MTtlLnRpbGRlZG91YmxlY21iPTg2NDtlLnRpbGRlb3BlcmF0b3I9ODc2NDtlLnRpbGRlb3ZlcmxheWNtYj04MjA7ZS50aWxkZXZlcnRpY2FsY21iPTgzMDtlLnRpbWVzY2lyY2xlPTg4NTU7ZS50aXBlaGFoZWJyZXc9MTQzMDtlLnRpcGVoYWxlZnRoZWJyZXc9MTQzMDtlLnRpcHBpZ3VybXVraGk9MjY3MjtlLnRpdGxvY3lyaWxsaWNjbWI9MTE1NTtlLnRpd25hcm1lbmlhbj0xNDA3O2UudGxpbmViZWxvdz03NzkxO2UudG1vbm9zcGFjZT02NTM2NDtlLnRvYXJtZW5pYW49MTM4NTtlLnRvaGlyYWdhbmE9MTIzOTI7ZS50b2thdGFrYW5hPTEyNDg4O2UudG9rYXRha2FuYWhhbGZ3aWR0aD02NTQxMjtlLnRvbmViYXJleHRyYWhpZ2htb2Q9NzQxO2UudG9uZWJhcmV4dHJhbG93bW9kPTc0NTtlLnRvbmViYXJoaWdobW9kPTc0MjtlLnRvbmViYXJsb3dtb2Q9NzQ0O2UudG9uZWJhcm1pZG1vZD03NDM7ZS50b25lZml2ZT00NDU7ZS50b25lc2l4PTM4OTtlLnRvbmV0d289NDI0O2UudG9ub3M9OTAwO2UudG9uc3F1YXJlPTEzMDk1O2UudG9wYXRha3RoYWk9MzU5OTtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMwODtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsPTY1MTE3O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODE7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzA5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsPTY1MTE4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDgyO2UudG90YW90aGFpPTM2MDU7ZS50cGFsYXRhbGhvb2s9NDI3O2UudHBhcmVuPTkzOTE7ZS50cmFkZW1hcms9ODQ4MjtlLnRyYWRlbWFya3NhbnM9NjM3MjI7ZS50cmFkZW1hcmtzZXJpZj02MzE5NTtlLnRyZXRyb2ZsZXhob29rPTY0ODtlLnRyaWFnZG49OTY2MDtlLnRyaWFnbGY9OTY2ODtlLnRyaWFncnQ9OTY1ODtlLnRyaWFndXA9OTY1MDtlLnRzPTY3ODtlLnRzYWRpPTE1MTA7ZS50c2FkaWRhZ2VzaD02NDMyNjtlLnRzYWRpZGFnZXNoaGVicmV3PTY0MzI2O2UudHNhZGloZWJyZXc9MTUxMDtlLnRzZWN5cmlsbGljPTEwOTQ7ZS50c2VyZT0xNDYxO2UudHNlcmUxMj0xNDYxO2UudHNlcmUxZT0xNDYxO2UudHNlcmUyYj0xNDYxO2UudHNlcmVoZWJyZXc9MTQ2MTtlLnRzZXJlbmFycm93aGVicmV3PTE0NjE7ZS50c2VyZXF1YXJ0ZXJoZWJyZXc9MTQ2MTtlLnRzZXJld2lkZWhlYnJldz0xNDYxO2UudHNoZWN5cmlsbGljPTExMTU7ZS50c3VwZXJpb3I9NjMyMTk7ZS50dGFiZW5nYWxpPTI0NjM7ZS50dGFkZXZhPTIzMzU7ZS50dGFndWphcmF0aT0yNzE5O2UudHRhZ3VybXVraGk9MjU5MTtlLnR0ZWhhcmFiaWM9MTY1NztlLnR0ZWhmaW5hbGFyYWJpYz02NDM1OTtlLnR0ZWhpbml0aWFsYXJhYmljPTY0MzYwO2UudHRlaG1lZGlhbGFyYWJpYz02NDM2MTtlLnR0aGFiZW5nYWxpPTI0NjQ7ZS50dGhhZGV2YT0yMzM2O2UudHRoYWd1amFyYXRpPTI3MjA7ZS50dGhhZ3VybXVraGk9MjU5MjtlLnR0dXJuZWQ9NjQ3O2UudHVoaXJhZ2FuYT0xMjM4ODtlLnR1a2F0YWthbmE9MTI0ODQ7ZS50dWthdGFrYW5haGFsZndpZHRoPTY1NDEwO2UudHVzbWFsbGhpcmFnYW5hPTEyMzg3O2UudHVzbWFsbGthdGFrYW5hPTEyNDgzO2UudHVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkxO2UudHdlbHZlY2lyY2xlPTkzMjM7ZS50d2VsdmVwYXJlbj05MzQzO2UudHdlbHZlcGVyaW9kPTkzNjM7ZS50d2VsdmVyb21hbj04NTcxO2UudHdlbnR5Y2lyY2xlPTkzMzE7ZS50d2VudHloYW5nemhvdT0yMTMxNjtlLnR3ZW50eXBhcmVuPTkzNTE7ZS50d2VudHlwZXJpb2Q9OTM3MTtlLnR3bz01MDtlLnR3b2FyYWJpYz0xNjM0O2UudHdvYmVuZ2FsaT0yNTM2O2UudHdvY2lyY2xlPTkzMTM7ZS50d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIzO2UudHdvZGV2YT0yNDA4O2UudHdvZG90ZW5sZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVydmVydGljYWw9NjUwNzI7ZS50d29ndWphcmF0aT0yNzkyO2UudHdvZ3VybXVraGk9MjY2NDtlLnR3b2hhY2thcmFiaWM9MTYzNDtlLnR3b2hhbmd6aG91PTEyMzIyO2UudHdvaWRlb2dyYXBoaWNwYXJlbj0xMjgzMztlLnR3b2luZmVyaW9yPTgzMjI7ZS50d29tb25vc3BhY2U9NjUyOTg7ZS50d29udW1lcmF0b3JiZW5nYWxpPTI1NDk7ZS50d29vbGRzdHlsZT02MzI4MjtlLnR3b3BhcmVuPTkzMzM7ZS50d29wZXJpb2Q9OTM1MztlLnR3b3BlcnNpYW49MTc3ODtlLnR3b3JvbWFuPTg1NjE7ZS50d29zdHJva2U9NDQzO2UudHdvc3VwZXJpb3I9MTc4O2UudHdvdGhhaT0zNjY2O2UudHdvdGhpcmRzPTg1MzI7ZS51PTExNztlLnVhY3V0ZT0yNTA7ZS51YmFyPTY0OTtlLnViZW5nYWxpPTI0NDE7ZS51Ym9wb21vZm89MTI1ODQ7ZS51YnJldmU9MzY1O2UudWNhcm9uPTQ2ODtlLnVjaXJjbGU9OTQ0NDtlLnVjaXJjdW1mbGV4PTI1MTtlLnVjaXJjdW1mbGV4YmVsb3c9Nzc5OTtlLnVjeXJpbGxpYz0xMDkxO2UudWRhdHRhZGV2YT0yMzg1O2UudWRibGFjdXRlPTM2OTtlLnVkYmxncmF2ZT01MzM7ZS51ZGV2YT0yMzEzO2UudWRpZXJlc2lzPTI1MjtlLnVkaWVyZXNpc2FjdXRlPTQ3MjtlLnVkaWVyZXNpc2JlbG93PTc3OTU7ZS51ZGllcmVzaXNjYXJvbj00NzQ7ZS51ZGllcmVzaXNjeXJpbGxpYz0xMjY1O2UudWRpZXJlc2lzZ3JhdmU9NDc2O2UudWRpZXJlc2lzbWFjcm9uPTQ3MDtlLnVkb3RiZWxvdz03OTA5O2UudWdyYXZlPTI0OTtlLnVndWphcmF0aT0yNjk3O2UudWd1cm11a2hpPTI1Njk7ZS51aGlyYWdhbmE9MTIzNTg7ZS51aG9va2Fib3ZlPTc5MTE7ZS51aG9ybj00MzI7ZS51aG9ybmFjdXRlPTc5MTM7ZS51aG9ybmRvdGJlbG93PTc5MjE7ZS51aG9ybmdyYXZlPTc5MTU7ZS51aG9ybmhvb2thYm92ZT03OTE3O2UudWhvcm50aWxkZT03OTE5O2UudWh1bmdhcnVtbGF1dD0zNjk7ZS51aHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NztlLnVpbnZlcnRlZGJyZXZlPTUzNTtlLnVrYXRha2FuYT0xMjQ1NDtlLnVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NTtlLnVrY3lyaWxsaWM9MTE0NTtlLnVrb3JlYW49MTI2MzY7ZS51bWFjcm9uPTM2MztlLnVtYWNyb25jeXJpbGxpYz0xMjYzO2UudW1hY3JvbmRpZXJlc2lzPTc4MDM7ZS51bWF0cmFndXJtdWtoaT0yNjI1O2UudW1vbm9zcGFjZT02NTM2NTtlLnVuZGVyc2NvcmU9OTU7ZS51bmRlcnNjb3JlZGJsPTgyMTU7ZS51bmRlcnNjb3JlbW9ub3NwYWNlPTY1MzQzO2UudW5kZXJzY29yZXZlcnRpY2FsPTY1MDc1O2UudW5kZXJzY29yZXdhdnk9NjUxMDM7ZS51bmlvbj04NzQ2O2UudW5pdmVyc2FsPTg3MDQ7ZS51b2dvbmVrPTM3MTtlLnVwYXJlbj05MzkyO2UudXBibG9jaz05NjAwO2UudXBwZXJkb3RoZWJyZXc9MTQ3NjtlLnVwc2lsb249OTY1O2UudXBzaWxvbmRpZXJlc2lzPTk3MTtlLnVwc2lsb25kaWVyZXNpc3Rvbm9zPTk0NDtlLnVwc2lsb25sYXRpbj02NTA7ZS51cHNpbG9udG9ub3M9OTczO2UudXB0YWNrYmVsb3djbWI9Nzk3O2UudXB0YWNrbW9kPTcyNDtlLnVyYWd1cm11a2hpPTI2NzU7ZS51cmluZz0zNjc7ZS51c2hvcnRjeXJpbGxpYz0xMTE4O2UudXNtYWxsaGlyYWdhbmE9MTIzNTc7ZS51c21hbGxrYXRha2FuYT0xMjQ1MztlLnVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg1O2UudXN0cmFpZ2h0Y3lyaWxsaWM9MTE5OTtlLnVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDE7ZS51dGlsZGU9MzYxO2UudXRpbGRlYWN1dGU9NzgwMTtlLnV0aWxkZWJlbG93PTc3OTc7ZS51dWJlbmdhbGk9MjQ0MjtlLnV1ZGV2YT0yMzE0O2UudXVndWphcmF0aT0yNjk4O2UudXVndXJtdWtoaT0yNTcwO2UudXVtYXRyYWd1cm11a2hpPTI2MjY7ZS51dXZvd2Vsc2lnbmJlbmdhbGk9MjQ5ODtlLnV1dm93ZWxzaWduZGV2YT0yMzcwO2UudXV2b3dlbHNpZ25ndWphcmF0aT0yNzU0O2UudXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NztlLnV2b3dlbHNpZ25kZXZhPTIzNjk7ZS51dm93ZWxzaWduZ3VqYXJhdGk9Mjc1MztlLnY9MTE4O2UudmFkZXZhPTIzNTc7ZS52YWd1amFyYXRpPTI3NDE7ZS52YWd1cm11a2hpPTI2MTM7ZS52YWthdGFrYW5hPTEyNTM1O2UudmF2PTE0OTM7ZS52YXZkYWdlc2g9NjQzMDk7ZS52YXZkYWdlc2g2NT02NDMwOTtlLnZhdmRhZ2VzaGhlYnJldz02NDMwOTtlLnZhdmhlYnJldz0xNDkzO2UudmF2aG9sYW09NjQzMzE7ZS52YXZob2xhbWhlYnJldz02NDMzMTtlLnZhdnZhdmhlYnJldz0xNTIwO2UudmF2eW9kaGVicmV3PTE1MjE7ZS52Y2lyY2xlPTk0NDU7ZS52ZG90YmVsb3c9NzgwNztlLnZlY3lyaWxsaWM9MTA3NDtlLnZlaGFyYWJpYz0xNzAwO2UudmVoZmluYWxhcmFiaWM9NjQzNjM7ZS52ZWhpbml0aWFsYXJhYmljPTY0MzY0O2UudmVobWVkaWFsYXJhYmljPTY0MzY1O2UudmVrYXRha2FuYT0xMjUzNztlLnZlbnVzPTk3OTI7ZS52ZXJ0aWNhbGJhcj0xMjQ7ZS52ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODE7ZS52ZXJ0aWNhbGxpbmViZWxvd2NtYj04MDk7ZS52ZXJ0aWNhbGxpbmVsb3dtb2Q9NzE2O2UudmVydGljYWxsaW5lbW9kPTcxMjtlLnZld2FybWVuaWFuPTE0MDY7ZS52aG9vaz02NTE7ZS52aWthdGFrYW5hPTEyNTM2O2UudmlyYW1hYmVuZ2FsaT0yNTA5O2UudmlyYW1hZGV2YT0yMzgxO2UudmlyYW1hZ3VqYXJhdGk9Mjc2NTtlLnZpc2FyZ2FiZW5nYWxpPTI0MzU7ZS52aXNhcmdhZGV2YT0yMzA3O2UudmlzYXJnYWd1amFyYXRpPTI2OTE7ZS52bW9ub3NwYWNlPTY1MzY2O2Uudm9hcm1lbmlhbj0xNDAwO2Uudm9pY2VkaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDY7ZS52b2ljZWRpdGVyYXRpb25rYXRha2FuYT0xMjU0MjtlLnZvaWNlZG1hcmtrYW5hPTEyNDQzO2Uudm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzg7ZS52b2thdGFrYW5hPTEyNTM4O2UudnBhcmVuPTkzOTM7ZS52dGlsZGU9NzgwNTtlLnZ0dXJuZWQ9NjUyO2UudnVoaXJhZ2FuYT0xMjQzNjtlLnZ1a2F0YWthbmE9MTI1MzI7ZS53PTExOTtlLndhY3V0ZT03ODExO2Uud2Fla29yZWFuPTEyNjMzO2Uud2FoaXJhZ2FuYT0xMjQzMTtlLndha2F0YWthbmE9MTI1Mjc7ZS53YWthdGFrYW5haGFsZndpZHRoPTY1NDM2O2Uud2Frb3JlYW49MTI2MzI7ZS53YXNtYWxsaGlyYWdhbmE9MTI0MzA7ZS53YXNtYWxsa2F0YWthbmE9MTI1MjY7ZS53YXR0b3NxdWFyZT0xMzE0MztlLndhdmVkYXNoPTEyMzE2O2Uud2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NjtlLndhd2FyYWJpYz0xNjA4O2Uud2F3ZmluYWxhcmFiaWM9NjUyNjI7ZS53YXdoYW16YWFib3ZlYXJhYmljPTE1NzI7ZS53YXdoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTg7ZS53YnNxdWFyZT0xMzI3NztlLndjaXJjbGU9OTQ0NjtlLndjaXJjdW1mbGV4PTM3MztlLndkaWVyZXNpcz03ODEzO2Uud2RvdGFjY2VudD03ODE1O2Uud2RvdGJlbG93PTc4MTc7ZS53ZWhpcmFnYW5hPTEyNDMzO2Uud2VpZXJzdHJhc3M9ODQ3MjtlLndla2F0YWthbmE9MTI1Mjk7ZS53ZWtvcmVhbj0xMjYzODtlLndlb2tvcmVhbj0xMjYzNztlLndncmF2ZT03ODA5O2Uud2hpdGVidWxsZXQ9OTcwMjtlLndoaXRlY2lyY2xlPTk2NzU7ZS53aGl0ZWNpcmNsZWludmVyc2U9OTY4OTtlLndoaXRlY29ybmVyYnJhY2tldGxlZnQ9MTIzMDI7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwOTE7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMztlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTI7ZS53aGl0ZWRpYW1vbmQ9OTY3MTtlLndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZD05NjcyO2Uud2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NjM7ZS53aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjE7ZS53aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2NztlLndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NTtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzEwO2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzExO2Uud2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjU3O2Uud2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NTtlLndoaXRlc21hbGxzcXVhcmU9OTY0MztlLndoaXRlc21pbGluZ2ZhY2U9OTc4NjtlLndoaXRlc3F1YXJlPTk2MzM7ZS53aGl0ZXN0YXI9OTczNDtlLndoaXRldGVsZXBob25lPTk3NDM7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMxMjtlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMxMztlLndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MztlLndoaXRldXBwb2ludGluZ3RyaWFuZ2xlPTk2NTE7ZS53aWhpcmFnYW5hPTEyNDMyO2Uud2lrYXRha2FuYT0xMjUyODtlLndpa29yZWFuPTEyNjM5O2Uud21vbm9zcGFjZT02NTM2NztlLndvaGlyYWdhbmE9MTI0MzQ7ZS53b2thdGFrYW5hPTEyNTMwO2Uud29rYXRha2FuYWhhbGZ3aWR0aD02NTM4MjtlLndvbj04MzYxO2Uud29ubW9ub3NwYWNlPTY1NTEwO2Uud293YWVudGhhaT0zNjIzO2Uud3BhcmVuPTkzOTQ7ZS53cmluZz03ODMyO2Uud3N1cGVyaW9yPTY5NTtlLnd0dXJuZWQ9NjUzO2Uud3lubj00NDc7ZS54PTEyMDtlLnhhYm92ZWNtYj04Mjk7ZS54Ym9wb21vZm89MTI1NjI7ZS54Y2lyY2xlPTk0NDc7ZS54ZGllcmVzaXM9NzgyMTtlLnhkb3RhY2NlbnQ9NzgxOTtlLnhlaGFybWVuaWFuPTEzODk7ZS54aT05NTg7ZS54bW9ub3NwYWNlPTY1MzY4O2UueHBhcmVuPTkzOTU7ZS54c3VwZXJpb3I9NzM5O2UueT0xMjE7ZS55YWFkb3NxdWFyZT0xMzEzNDtlLnlhYmVuZ2FsaT0yNDc5O2UueWFjdXRlPTI1MztlLnlhZGV2YT0yMzUxO2UueWFla29yZWFuPTEyNjI2O2UueWFndWphcmF0aT0yNzM1O2UueWFndXJtdWtoaT0yNjA3O2UueWFoaXJhZ2FuYT0xMjQyMDtlLnlha2F0YWthbmE9MTI1MTY7ZS55YWthdGFrYW5haGFsZndpZHRoPTY1NDI4O2UueWFrb3JlYW49MTI2MjU7ZS55YW1ha2thbnRoYWk9MzY2MjtlLnlhc21hbGxoaXJhZ2FuYT0xMjQxOTtlLnlhc21hbGxrYXRha2FuYT0xMjUxNTtlLnlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4ODtlLnlhdGN5cmlsbGljPTExMjM7ZS55Y2lyY2xlPTk0NDg7ZS55Y2lyY3VtZmxleD0zNzU7ZS55ZGllcmVzaXM9MjU1O2UueWRvdGFjY2VudD03ODIzO2UueWRvdGJlbG93PTc5MjU7ZS55ZWhhcmFiaWM9MTYxMDtlLnllaGJhcnJlZWFyYWJpYz0xNzQ2O2UueWVoYmFycmVlZmluYWxhcmFiaWM9NjQ0MzE7ZS55ZWhmaW5hbGFyYWJpYz02NTI2NjtlLnllaGhhbXphYWJvdmVhcmFiaWM9MTU3NDtlLnllaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE2MjtlLnllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljPTY1MTYzO2UueWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYz02NTE2NDtlLnllaGluaXRpYWxhcmFiaWM9NjUyNjc7ZS55ZWhtZWRpYWxhcmFiaWM9NjUyNjg7ZS55ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDczMztlLnllaG1lZW1pc29sYXRlZGFyYWJpYz02NDYwMDtlLnllaG5vb25maW5hbGFyYWJpYz02NDY2MDtlLnllaHRocmVlZG90c2JlbG93YXJhYmljPTE3NDU7ZS55ZWtvcmVhbj0xMjYzMDtlLnllbj0xNjU7ZS55ZW5tb25vc3BhY2U9NjU1MDk7ZS55ZW9rb3JlYW49MTI2Mjk7ZS55ZW9yaW5oaWV1aGtvcmVhbj0xMjY3ODtlLnllcmFoYmVueW9tb2hlYnJldz0xNDUwO2UueWVyYWhiZW55b21vbGVmdGhlYnJldz0xNDUwO2UueWVyaWN5cmlsbGljPTEwOTk7ZS55ZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjczO2UueWVzaWV1bmdrb3JlYW49MTI2NzM7ZS55ZXNpZXVuZ3BhbnNpb3Nrb3JlYW49MTI2NzU7ZS55ZXNpZXVuZ3Npb3Nrb3JlYW49MTI2NzQ7ZS55ZXRpdmhlYnJldz0xNDM0O2UueWdyYXZlPTc5MjM7ZS55aG9vaz00MzY7ZS55aG9va2Fib3ZlPTc5Mjc7ZS55aWFybWVuaWFuPTEzOTc7ZS55aWN5cmlsbGljPTExMTE7ZS55aWtvcmVhbj0xMjY0MjtlLnlpbnlhbmc9OTc3NTtlLnlpd25hcm1lbmlhbj0xNDEwO2UueW1vbm9zcGFjZT02NTM2OTtlLnlvZD0xNDk3O2UueW9kZGFnZXNoPTY0MzEzO2UueW9kZGFnZXNoaGVicmV3PTY0MzEzO2UueW9kaGVicmV3PTE0OTc7ZS55b2R5b2RoZWJyZXc9MTUyMjtlLnlvZHlvZHBhdGFoaGVicmV3PTY0Mjg3O2UueW9oaXJhZ2FuYT0xMjQyNDtlLnlvaWtvcmVhbj0xMjY4MTtlLnlva2F0YWthbmE9MTI1MjA7ZS55b2thdGFrYW5haGFsZndpZHRoPTY1NDMwO2UueW9rb3JlYW49MTI2MzU7ZS55b3NtYWxsaGlyYWdhbmE9MTI0MjM7ZS55b3NtYWxsa2F0YWthbmE9MTI1MTk7ZS55b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTA7ZS55b3RncmVlaz0xMDExO2UueW95YWVrb3JlYW49MTI2ODA7ZS55b3lha29yZWFuPTEyNjc5O2UueW95YWt0aGFpPTM2MTg7ZS55b3lpbmd0aGFpPTM1OTc7ZS55cGFyZW49OTM5NjtlLnlwb2dlZ3JhbW1lbmk9ODkwO2UueXBvZ2VncmFtbWVuaWdyZWVrY21iPTgzNztlLnlyPTQyMjtlLnlyaW5nPTc4MzM7ZS55c3VwZXJpb3I9Njk2O2UueXRpbGRlPTc5Mjk7ZS55dHVybmVkPTY1NDtlLnl1aGlyYWdhbmE9MTI0MjI7ZS55dWlrb3JlYW49MTI2ODQ7ZS55dWthdGFrYW5hPTEyNTE4O2UueXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyOTtlLnl1a29yZWFuPTEyNjQwO2UueXVzYmlnY3lyaWxsaWM9MTEzMTtlLnl1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMztlLnl1c2xpdHRsZWN5cmlsbGljPTExMjc7ZS55dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjk7ZS55dXNtYWxsaGlyYWdhbmE9MTI0MjE7ZS55dXNtYWxsa2F0YWthbmE9MTI1MTc7ZS55dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODk7ZS55dXlla29yZWFuPTEyNjgzO2UueXV5ZW9rb3JlYW49MTI2ODI7ZS55eWFiZW5nYWxpPTI1Mjc7ZS55eWFkZXZhPTIzOTk7ZS56PTEyMjtlLnphYXJtZW5pYW49MTM4MjtlLnphY3V0ZT0zNzg7ZS56YWRldmE9MjM5NTtlLnphZ3VybXVraGk9MjY1MTtlLnphaGFyYWJpYz0xNTkyO2UuemFoZmluYWxhcmFiaWM9NjUyMjI7ZS56YWhpbml0aWFsYXJhYmljPTY1MjIzO2UuemFoaXJhZ2FuYT0xMjM3NDtlLnphaG1lZGlhbGFyYWJpYz02NTIyNDtlLnphaW5hcmFiaWM9MTU4NjtlLnphaW5maW5hbGFyYWJpYz02NTIwMDtlLnpha2F0YWthbmE9MTI0NzA7ZS56YXFlZmdhZG9saGVicmV3PTE0Mjk7ZS56YXFlZnFhdGFuaGVicmV3PTE0Mjg7ZS56YXJxYWhlYnJldz0xNDMyO2UuemF5aW49MTQ5NDtlLnpheWluZGFnZXNoPTY0MzEwO2UuemF5aW5kYWdlc2hoZWJyZXc9NjQzMTA7ZS56YXlpbmhlYnJldz0xNDk0O2UuemJvcG9tb2ZvPTEyNTY3O2UuemNhcm9uPTM4MjtlLnpjaXJjbGU9OTQ0OTtlLnpjaXJjdW1mbGV4PTc4MjU7ZS56Y3VybD02NTc7ZS56ZG90PTM4MDtlLnpkb3RhY2NlbnQ9MzgwO2UuemRvdGJlbG93PTc4Mjc7ZS56ZWN5cmlsbGljPTEwNzk7ZS56ZWRlc2NlbmRlcmN5cmlsbGljPTExNzc7ZS56ZWRpZXJlc2lzY3lyaWxsaWM9MTI0NztlLnplaGlyYWdhbmE9MTIzODA7ZS56ZWthdGFrYW5hPTEyNDc2O2UuemVybz00ODtlLnplcm9hcmFiaWM9MTYzMjtlLnplcm9iZW5nYWxpPTI1MzQ7ZS56ZXJvZGV2YT0yNDA2O2UuemVyb2d1amFyYXRpPTI3OTA7ZS56ZXJvZ3VybXVraGk9MjY2MjtlLnplcm9oYWNrYXJhYmljPTE2MzI7ZS56ZXJvaW5mZXJpb3I9ODMyMDtlLnplcm9tb25vc3BhY2U9NjUyOTY7ZS56ZXJvb2xkc3R5bGU9NjMyODA7ZS56ZXJvcGVyc2lhbj0xNzc2O2UuemVyb3N1cGVyaW9yPTgzMDQ7ZS56ZXJvdGhhaT0zNjY0O2UuemVyb3dpZHRoam9pbmVyPTY1Mjc5O2UuemVyb3dpZHRobm9uam9pbmVyPTgyMDQ7ZS56ZXJvd2lkdGhzcGFjZT04MjAzO2UuemV0YT05NTA7ZS56aGJvcG9tb2ZvPTEyNTYzO2UuemhlYXJtZW5pYW49MTM4NjtlLnpoZWJyZXZlY3lyaWxsaWM9MTIxODtlLnpoZWN5cmlsbGljPTEwNzg7ZS56aGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc1O2UuemhlZGllcmVzaXNjeXJpbGxpYz0xMjQ1O2UuemloaXJhZ2FuYT0xMjM3NjtlLnppa2F0YWthbmE9MTI0NzI7ZS56aW5vcmhlYnJldz0xNDU0O2UuemxpbmViZWxvdz03ODI5O2Uuem1vbm9zcGFjZT02NTM3MDtlLnpvaGlyYWdhbmE9MTIzODI7ZS56b2thdGFrYW5hPTEyNDc4O2UuenBhcmVuPTkzOTc7ZS56cmV0cm9mbGV4aG9vaz02NTY7ZS56c3Ryb2tlPTQzODtlLnp1aGlyYWdhbmE9MTIzNzg7ZS56dWthdGFrYW5hPTEyNDc0O2VbIi5ub3RkZWYiXT0wO2UuYW5nYnJhY2tldGxlZnRiaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdGJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnZz05MDAxO2UuYW5nYnJhY2tldHJpZ2h0QmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodEJpZ2c9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZ2c9OTAwMjtlLmFycm93aG9va2xlZnQ9ODYxODtlLmFycm93aG9va3JpZ2h0PTg2MTc7ZS5hcnJvd2xlZnR0b3BoYWxmPTg2MzY7ZS5hcnJvd2xlZnRib3RoYWxmPTg2Mzc7ZS5hcnJvd25vcnRoZWFzdD04NTk5O2UuYXJyb3dub3J0aHdlc3Q9ODU5ODtlLmFycm93cmlnaHR0b3BoYWxmPTg2NDA7ZS5hcnJvd3JpZ2h0Ym90aGFsZj04NjQxO2UuYXJyb3dzb3V0aGVhc3Q9ODYwMDtlLmFycm93c291dGh3ZXN0PTg2MDE7ZS5iYWNrc2xhc2hiaWc9ODcyNjtlLmJhY2tzbGFzaEJpZz04NzI2O2UuYmFja3NsYXNoQmlnZz04NzI2O2UuYmFja3NsYXNoYmlnZz04NzI2O2UuYmFyZGJsPTgyMTQ7ZS5icmFjZWh0aXBkb3dubGVmdD02NTA3OTtlLmJyYWNlaHRpcGRvd25yaWdodD02NTA3OTtlLmJyYWNlaHRpcHVwbGVmdD02NTA4MDtlLmJyYWNlaHRpcHVwcmlnaHQ9NjUwODA7ZS5icmFjZWxlZnRCaWc9MTIzO2UuYnJhY2VsZWZ0YmlnPTEyMztlLmJyYWNlbGVmdGJpZ2c9MTIzO2UuYnJhY2VsZWZ0QmlnZz0xMjM7ZS5icmFjZXJpZ2h0QmlnPTEyNTtlLmJyYWNlcmlnaHRiaWc9MTI1O2UuYnJhY2VyaWdodGJpZ2c9MTI1O2UuYnJhY2VyaWdodEJpZ2c9MTI1O2UuYnJhY2tldGxlZnRiaWc9OTE7ZS5icmFja2V0bGVmdEJpZz05MTtlLmJyYWNrZXRsZWZ0YmlnZz05MTtlLmJyYWNrZXRsZWZ0QmlnZz05MTtlLmJyYWNrZXRyaWdodEJpZz05MztlLmJyYWNrZXRyaWdodGJpZz05MztlLmJyYWNrZXRyaWdodGJpZ2c9OTM7ZS5icmFja2V0cmlnaHRCaWdnPTkzO2UuY2VpbGluZ2xlZnRiaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZ2c9ODk2ODtlLmNlaWxpbmdsZWZ0YmlnZz04OTY4O2UuY2VpbGluZ3JpZ2h0YmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWc9ODk2OTtlLmNlaWxpbmdyaWdodGJpZ2c9ODk2OTtlLmNlaWxpbmdyaWdodEJpZ2c9ODk2OTtlLmNpcmNsZWRvdGRpc3BsYXk9ODg1NztlLmNpcmNsZWRvdHRleHQ9ODg1NztlLmNpcmNsZW11bHRpcGx5ZGlzcGxheT04ODU1O2UuY2lyY2xlbXVsdGlwbHl0ZXh0PTg4NTU7ZS5jaXJjbGVwbHVzZGlzcGxheT04ODUzO2UuY2lyY2xlcGx1c3RleHQ9ODg1MztlLmNvbnRpbnRlZ3JhbGRpc3BsYXk9ODc1MDtlLmNvbnRpbnRlZ3JhbHRleHQ9ODc1MDtlLmNvcHJvZHVjdGRpc3BsYXk9ODcyMDtlLmNvcHJvZHVjdHRleHQ9ODcyMDtlLmZsb29ybGVmdEJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWdnPTg5NzA7ZS5mbG9vcmxlZnRCaWdnPTg5NzA7ZS5mbG9vcnJpZ2h0YmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnZz04OTcxO2UuZmxvb3JyaWdodGJpZ2c9ODk3MTtlLmhhdHdpZGU9NzcwO2UuaGF0d2lkZXI9NzcwO2UuaGF0d2lkZXN0PTc3MDtlLmludGVyY2FsPTc0ODg7ZS5pbnRlZ3JhbGRpc3BsYXk9ODc0NztlLmludGVncmFsdGV4dD04NzQ3O2UuaW50ZXJzZWN0aW9uZGlzcGxheT04ODk4O2UuaW50ZXJzZWN0aW9udGV4dD04ODk4O2UubG9naWNhbGFuZGRpc3BsYXk9ODc0MztlLmxvZ2ljYWxhbmR0ZXh0PTg3NDM7ZS5sb2dpY2Fsb3JkaXNwbGF5PTg3NDQ7ZS5sb2dpY2Fsb3J0ZXh0PTg3NDQ7ZS5wYXJlbmxlZnRCaWc9NDA7ZS5wYXJlbmxlZnRiaWc9NDA7ZS5wYXJlbmxlZnRCaWdnPTQwO2UucGFyZW5sZWZ0YmlnZz00MDtlLnBhcmVucmlnaHRCaWc9NDE7ZS5wYXJlbnJpZ2h0YmlnPTQxO2UucGFyZW5yaWdodEJpZ2c9NDE7ZS5wYXJlbnJpZ2h0YmlnZz00MTtlLnByaW1lPTgyNDI7ZS5wcm9kdWN0ZGlzcGxheT04NzE5O2UucHJvZHVjdHRleHQ9ODcxOTtlLnJhZGljYWxiaWc9ODczMDtlLnJhZGljYWxCaWc9ODczMDtlLnJhZGljYWxCaWdnPTg3MzA7ZS5yYWRpY2FsYmlnZz04NzMwO2UucmFkaWNhbGJ0PTg3MzA7ZS5yYWRpY2FsdHA9ODczMDtlLnJhZGljYWx2ZXJ0ZXg9ODczMDtlLnNsYXNoYmlnPTQ3O2Uuc2xhc2hCaWc9NDc7ZS5zbGFzaEJpZ2c9NDc7ZS5zbGFzaGJpZ2c9NDc7ZS5zdW1tYXRpb25kaXNwbGF5PTg3MjE7ZS5zdW1tYXRpb250ZXh0PTg3MjE7ZS50aWxkZXdpZGU9NzMyO2UudGlsZGV3aWRlcj03MzI7ZS50aWxkZXdpZGVzdD03MzI7ZS51bmlvbmRpc3BsYXk9ODg5OTtlLnVuaW9ubXVsdGlkaXNwbGF5PTg4NDY7ZS51bmlvbm11bHRpdGV4dD04ODQ2O2UudW5pb25zcWRpc3BsYXk9ODg1MjtlLnVuaW9uc3F0ZXh0PTg4NTI7ZS51bmlvbnRleHQ9ODg5OTtlLnZleHRlbmRkb3VibGU9ODc0MTtlLnZleHRlbmRzaW5nbGU9ODczOX0pLGdyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMTUyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSxwcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5O2VbNjMxOTNdPTE2OTtlWzYzNzIwXT0xNzQ7ZVs2MzE5NF09MTc0O2VbNjM3MjJdPTg0ODI7ZVs2MzE5NV09ODQ4MjtlWzYzNzI5XT05MTI3O2VbNjM3MzBdPTkxMjg7ZVs2MzczMV09OTEyOTtlWzYzNzQwXT05MTMxO2VbNjM3NDFdPTkxMzI7ZVs2Mzc0Ml09OTEzMztlWzYzNzI2XT05MTIxO2VbNjM3MjddPTkxMjI7ZVs2MzcyOF09OTEyMztlWzYzNzM3XT05MTI0O2VbNjM3MzhdPTkxMjU7ZVs2MzczOV09OTEyNjtlWzYzNzIzXT05MTE1O2VbNjM3MjRdPTkxMTY7ZVs2MzcyNV09OTExNztlWzYzNzM0XT05MTE4O2VbNjM3MzVdPTkxMTk7ZVs2MzczNl09OTEyMH0pO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBtcj1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBhPW1yW3RdO2ZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrPTIpaWYoZT49YVtyXSYmZTw9YVtyKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGE9bXIubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9bXJbdF07Zm9yKGxldCByPTAsaT1hLmxlbmd0aDtyPGk7cis9MilpZihlPj1hW3JdJiZlPD1hW3IrMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgYnI9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLHlyPW5ldyBNYXA7Y29uc3Qgd3I9ITAseHI9MSxTcj0yLEFyPTQsa3I9MzIsQ3I9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGE9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1hKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWEpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaSxuLHM7Y29uc3Qgbz0hIShlLmZsYWdzJkFyKTtpZihlLmlzSW50ZXJuYWxGb250KXtzPXQ7Zm9yKG49MDtuPHMubGVuZ3RoO24rKyl7aT1hLmluZGV4T2Yoc1tuXSk7cltuXT1pPj0wP2k6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe3M9Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iobj0wO248cy5sZW5ndGg7bisrKXtpPWEuaW5kZXhPZihzW25dKTtyW25dPWk+PTA/aTowfX1lbHNlIGlmKG8pZm9yKG4gaW4gdClyW25dPXRbbl07ZWxzZXtzPWxyO2ZvcihuPTA7bjxzLmxlbmd0aDtuKyspe2k9YS5pbmRleE9mKHNbbl0pO3Jbbl09aT49MD9pOjB9fWNvbnN0IGM9ZS5kaWZmZXJlbmNlcztsZXQgbDtpZihjKWZvcihuIGluIGMpe2NvbnN0IGU9Y1tuXTtpPWEuaW5kZXhPZihlKTtpZigtMT09PWkpe2x8fChsPWZyKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGwpO3QhPT1lJiYoaT1hLmluZGV4T2YodCkpfXJbbl09aT49MD9pOjB9cmV0dXJuIHJ9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgdnI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGU9PntlWzgyMTFdPTY1MDc0O2VbODIxMl09NjUwNzM7ZVs4MjI5XT02NTA3MjtlWzgyMzBdPTY1MDQ5O2VbMTIyODldPTY1MDQxO2VbMTIyOTBdPTY1MDQyO2VbMTIyOTZdPTY1MDg3O2VbMTIyOTddPTY1MDg4O2VbMTIyOThdPTY1MDg1O2VbMTIyOTldPTY1MDg2O2VbMTIzMDBdPTY1MDg5O2VbMTIzMDFdPTY1MDkwO2VbMTIzMDJdPTY1MDkxO2VbMTIzMDNdPTY1MDkyO2VbMTIzMDRdPTY1MDgzO2VbMTIzMDVdPTY1MDg0O2VbMTIzMDhdPTY1MDgxO2VbMTIzMDldPTY1MDgyO2VbMTIzMTBdPTY1MDQ3O2VbMTIzMTFdPTY1MDQ4O2VbNjUxMDNdPTY1MDc2O2VbNjUyODFdPTY1MDQ1O2VbNjUyODhdPTY1MDc3O2VbNjUyODldPTY1MDc4O2VbNjUyOTJdPTY1MDQwO2VbNjUzMDZdPTY1MDQzO2VbNjUzMDddPTY1MDQ0O2VbNjUzMTFdPTY1MDQ2O2VbNjUzMzldPTY1MDk1O2VbNjUzNDFdPTY1MDk2O2VbNjUzNDNdPTY1MDc1O2VbNjUzNzFdPTY1MDc5O2VbNjUzNzNdPTY1MDgwfSk7Y29uc3QgRnI9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iXSxJcj1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxUcj1bIi5ub3RkZWYiLCJzcGFjZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJoeXBoZW5zdXBlcmlvciIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJjZW50b2xkc3R5bGUiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiXSxPcj1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXSxEcj0zOTEsTXI9W251bGwse2lkOiJoc3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSxudWxsLHtpZDoidnN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJ2bW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJsaW5ldG8iLG1pbjoyLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJ2bGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InJyY3VydmV0byIsbWluOjYscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InJldHVybiIsbWluOjAsdW5kZWZTdGFjazohMH0sbnVsbCxudWxsLHtpZDoiZW5kY2hhciIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0sbnVsbCxudWxsLG51bGwse2lkOiJoc3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoiaGludG1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiY250cm1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicm1vdmV0byIsbWluOjIsc3RhY2tDbGVhcmluZzohMH0se2lkOiJobW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InZzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJyY3VydmVsaW5lIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InJsaW5lY3VydmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoidnZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6ImhoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxnc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJ2aGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaHZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfV0sUnI9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLGk9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgobi5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3QoaS5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgobi5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmosdT1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO3UmJihlLmZvbnRNYXRyaXg9dSk7Y29uc3QgZD1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihkKXtlLmFzY2VudD1NYXRoLm1heChkWzNdLGRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihkWzFdLGRbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBmLGc7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKSxpPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KHIpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KGkpO3QuZmRBcnJheS5wdXNoKGkpfWc9bnVsbDtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChjLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxoLmNvdW50KX1lbHNle2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITEpO2c9dGhpcy5wYXJzZUVuY29kaW5nKGMuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGYuY2hhcnNldCl9dC5jaGFyc2V0PWY7dC5lbmNvZGluZz1nO2NvbnN0IHA9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpoLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6cy5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz1wLmNoYXJTdHJpbmdzO3Quc2VhY3M9cC5zZWFjczt0LndpZHRocz1wLndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIENGRiBoZWFkZXIiKTtpZigwIT09YSl7aW5mbygiY2ZmIGRhdGEgaXMgc2hpZnRlZCIpO2U9ZS5zdWJhcnJheShhKTt0aGlzLmJ5dGVzPWV9Y29uc3Qgcj1lWzBdLGk9ZVsxXSxuPWVbMl0scz1lWzNdO3JldHVybntvYmo6bmV3IENGRkhlYWRlcihyLGksbixzKSxlbmRQb3M6bn19cGFyc2VEaWN0KGUpe2xldCB0PTA7ZnVuY3Rpb24gcGFyc2VPcGVyYW5kKCl7bGV0IGE9ZVt0KytdO2lmKDMwPT09YSlyZXR1cm4gZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQoKXtsZXQgYT0iIjtjb25zdCByPTE1LGk9WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLG49ZS5sZW5ndGg7Zm9yKDt0PG47KXtjb25zdCBuPWVbdCsrXSxzPW4+PjQsbz0xNSZuO2lmKHM9PT1yKWJyZWFrO2ErPWlbc107aWYobz09PXIpYnJlYWs7YSs9aVtvXX1yZXR1cm4gcGFyc2VGbG9hdChhKX0oKTtpZigyOD09PWEpe2E9cmVhZEludDE2KGUsdCk7dCs9MjtyZXR1cm4gYX1pZigyOT09PWEpe2E9ZVt0KytdO2E9YTw8OHxlW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO3JldHVybiBhfWlmKGE+PTMyJiZhPD0yNDYpcmV0dXJuIGEtMTM5O2lmKGE+PTI0NyYmYTw9MjUwKXJldHVybiAyNTYqKGEtMjQ3KStlW3QrK10rMTA4O2lmKGE+PTI1MSYmYTw9MjU0KXJldHVybi0yNTYqKGEtMjUxKS1lW3QrK10tMTA4O3dhcm4oJ0NGRlBhcnNlcl9wYXJzZURpY3Q6ICInK2ErJyIgaXMgYSByZXNlcnZlZCBjb21tYW5kLicpO3JldHVybiBOYU59bGV0IGE9W107Y29uc3Qgcj1bXTt0PTA7Y29uc3QgaT1lLmxlbmd0aDtmb3IoO3Q8aTspe2xldCBpPWVbdF07aWYoaTw9MjEpezEyPT09aSYmKGk9aTw8OHxlWysrdF0pO3IucHVzaChbaSxhXSk7YT1bXTsrK3R9ZWxzZSBhLnB1c2gocGFyc2VPcGVyYW5kKCkpfXJldHVybiByfXBhcnNlSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXgsYT10aGlzLmJ5dGVzLHI9YVtlKytdPDw4fGFbZSsrXSxpPVtdO2xldCBuLHMsbz1lO2lmKDAhPT1yKXtjb25zdCB0PWFbZSsrXSxjPWUrKHIrMSkqdC0xO2ZvcihuPTAscz1yKzE7bjxzOysrbil7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7KytpKXtyPDw9ODtyKz1hW2UrK119aS5wdXNoKGMrcil9bz1pW3JdfWZvcihuPTAscz1pLmxlbmd0aC0xO248czsrK24pe2NvbnN0IGU9aVtuXSxyPWlbbisxXTt0LmFkZChhLnN1YmFycmF5KGUscikpfXJldHVybntvYmo6dCxlbmRQb3M6b319cGFyc2VOYW1lSW5kZXgoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKTt0LnB1c2goYnl0ZXNUb1N0cmluZyhyKSl9cmV0dXJuIHR9cGFyc2VTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZTdHJpbmdzO2ZvcihsZXQgYT0wLHI9ZS5jb3VudDthPHI7KythKXtjb25zdCByPWUuZ2V0KGEpO3QuYWRkKGJ5dGVzVG9TdHJpbmcocikpfXJldHVybiB0fWNyZWF0ZURpY3QoZSx0LGEpe2NvbnN0IHI9bmV3IGUoYSk7Zm9yKGNvbnN0W2UsYV1vZiB0KXIuc2V0QnlLZXkoZSxhKTtyZXR1cm4gcn1wYXJzZUNoYXJTdHJpbmcoZSx0LGEscil7aWYoIXR8fGUuY2FsbERlcHRoPjEwKXJldHVybiExO2xldCBpPWUuc3RhY2tTaXplO2NvbnN0IG49ZS5zdGFjaztsZXQgcz10Lmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KXtjb25zdCBjPXRbbysrXTtsZXQgbD1udWxsO2lmKDEyPT09Yyl7Y29uc3QgZT10W28rK107aWYoMD09PWUpe3Rbby0yXT0xMzk7dFtvLTFdPTIyO2k9MH1lbHNlIGw9UnJbZV19ZWxzZSBpZigyOD09PWMpe25baV09cmVhZEludDE2KHQsbyk7bys9MjtpKyt9ZWxzZSBpZigxND09PWMpe2lmKGk+PTQpe2ktPTQ7aWYodGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKXtlLnNlYWM9bi5zbGljZShpLGkrNCk7cmV0dXJuITF9fWw9TXJbY119ZWxzZSBpZihjPj0zMiYmYzw9MjQ2KXtuW2ldPWMtMTM5O2krK31lbHNlIGlmKGM+PTI0NyYmYzw9MjU0KXtuW2ldPWM8MjUxPyhjLTI0Nzw8OCkrdFtvXSsxMDg6LShjLTI1MTw8OCktdFtvXS0xMDg7bysrO2krK31lbHNlIGlmKDI1NT09PWMpe25baV09KHRbb108PDI0fHRbbysxXTw8MTZ8dFtvKzJdPDw4fHRbbyszXSkvNjU1MzY7bys9NDtpKyt9ZWxzZSBpZigxOT09PWN8fDIwPT09Yyl7ZS5oaW50cys9aT4+MTtpZigwPT09ZS5oaW50cyl7dC5jb3B5V2l0aGluKG8tMSxvLC0xKTtvLT0xO3MtPTE7Y29udGludWV9bys9ZS5oaW50cys3Pj4zO2klPTI7bD1NcltjXX1lbHNle2lmKDEwPT09Y3x8Mjk9PT1jKXtjb25zdCB0PTEwPT09Yz9hOnI7aWYoIXQpe2w9TXJbY107d2FybigiTWlzc2luZyBzdWJyc0luZGV4IGZvciAiK2wuaWQpO3JldHVybiExfWxldCBzPTMyNzY4O3QuY291bnQ8MTI0MD9zPTEwNzp0LmNvdW50PDMzOTAwJiYocz0xMTMxKTtjb25zdCBvPW5bLS1pXStzO2lmKG88MHx8bz49dC5jb3VudHx8aXNOYU4obykpe2w9TXJbY107d2FybigiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrbC5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KG8pLGEscikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09Yyl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09YyYmbz09PXQubGVuZ3RoKXt0W28tMV09MTQ7bD1NclsxNF19ZWxzZXtpZig5PT09Yyl7dC5jb3B5V2l0aGluKG8tMSxvLC0xKTtvLT0xO3MtPTE7Y29udGludWV9bD1NcltjXX19aWYobCl7aWYobC5zdGVtKXtlLmhpbnRzKz1pPj4xO2lmKDM9PT1jfHwyMz09PWMpZS5oYXNWU3RlbXM9ITA7ZWxzZSBpZihlLmhhc1ZTdGVtcyYmKDE9PT1jfHwxOD09PWMpKXt3YXJuKCJDRkYgc3RlbSBoaW50cyBhcmUgaW4gd3Jvbmcgb3JkZXIiKTt0W28tMV09MT09PWM/MzoyM319aWYoIm1pbiJpbiBsJiYhZS51bmRlZlN0YWNrJiZpPGwubWluKXt3YXJuKCJOb3QgZW5vdWdoIHBhcmFtZXRlcnMgZm9yICIrbC5pZCsiOyBhY3R1YWw6ICIraSsiLCBleHBlY3RlZDogIitsLm1pbik7aWYoMD09PWkpe3Rbby0xXT0xNDtyZXR1cm4hMH1yZXR1cm4hMX1pZihlLmZpcnN0U3RhY2tDbGVhcmluZyYmbC5zdGFja0NsZWFyaW5nKXtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMTtpLT1sLm1pbjtpPj0yJiZsLnN0ZW0/aSU9MjppPjEmJndhcm4oIkZvdW5kIHRvbyBtYW55IHBhcmFtZXRlcnMgZm9yIHN0YWNrLWNsZWFyaW5nIGNvbW1hbmQiKTtpPjAmJihlLndpZHRoPW5baS0xXSl9aWYoInN0YWNrRGVsdGEiaW4gbCl7InN0YWNrRm4iaW4gbCYmbC5zdGFja0ZuKG4saSk7aSs9bC5zdGFja0RlbHRhfWVsc2UgaWYobC5zdGFja0NsZWFyaW5nKWk9MDtlbHNlIGlmKGwucmVzZXRTdGFjayl7aT0wO2UudW5kZWZTdGFjaz0hMX1lbHNlIGlmKGwudW5kZWZTdGFjayl7aT0wO2UudW5kZWZTdGFjaz0hMDtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMX19fXM8dC5sZW5ndGgmJnQuZmlsbCgxNCxzKTtlLnN0YWNrU2l6ZT1pO3JldHVybiEwfXBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmUsbG9jYWxTdWJySW5kZXg6dCxnbG9iYWxTdWJySW5kZXg6YSxmZFNlbGVjdDpyLGZkQXJyYXk6aSxwcml2YXRlRGljdDpufSl7Y29uc3Qgcz1bXSxvPVtdLGM9ZS5jb3VudDtmb3IobGV0IGw9MDtsPGM7bCsrKXtjb25zdCBjPWUuZ2V0KGwpLGg9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLHVuZGVmU3RhY2s6ITAsaGludHM6MCxmaXJzdFN0YWNrQ2xlYXJpbmc6ITAsc2VhYzpudWxsLHdpZHRoOm51bGwsaGFzVlN0ZW1zOiExfTtsZXQgdT0hMCxkPW51bGwsZj1uO2lmKHImJmkubGVuZ3RoKXtjb25zdCBlPXIuZ2V0RkRJbmRleChsKTtpZigtMT09PWUpe3dhcm4oIkdseXBoIGluZGV4IGlzIG5vdCBpbiBmZCBzZWxlY3QuIik7dT0hMX1pZihlPj1pLmxlbmd0aCl7d2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIik7dT0hMX1pZih1KXtmPWlbZV0ucHJpdmF0ZURpY3Q7ZD1mLnN1YnJzSW5kZXh9fWVsc2UgdCYmKGQ9dCk7dSYmKHU9dGhpcy5wYXJzZUNoYXJTdHJpbmcoaCxjLGQsYSkpO2lmKG51bGwhPT1oLndpZHRoKXtjb25zdCBlPWYuZ2V0QnlOYW1lKCJub21pbmFsV2lkdGhYIik7b1tsXT1lK2gud2lkdGh9ZWxzZXtjb25zdCBlPWYuZ2V0QnlOYW1lKCJkZWZhdWx0V2lkdGhYIik7b1tsXT1lfW51bGwhPT1oLnNlYWMmJihzW2xdPWguc2VhYyk7dXx8ZS5zZXQobCxuZXcgVWludDhBcnJheShbMTRdKSl9cmV0dXJue2NoYXJTdHJpbmdzOmUsc2VhY3M6cyx3aWR0aHM6b319ZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKXtjb25zdCB0PXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxbXSxlLnN0cmluZ3MpO2Uuc2V0QnlLZXkoMTgsWzAsMF0pO2UucHJpdmF0ZURpY3Q9dH1wYXJzZVByaXZhdGVEaWN0KGUpe2lmKCFlLmhhc05hbWUoIlByaXZhdGUiKSl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aCl7ZS5yZW1vdmVCeU5hbWUoIlByaXZhdGUiKTtyZXR1cm59Y29uc3QgYT10WzBdLHI9dFsxXTtpZigwPT09YXx8cj49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgaT1yK2Esbj10aGlzLmJ5dGVzLnN1YmFycmF5KHIsaSkscz10aGlzLnBhcnNlRGljdChuKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxzLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vOzA9PT1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIikmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNik7aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCBjPW8uZ2V0QnlOYW1lKCJTdWJycyIpLGw9citjO2lmKDA9PT1jfHxsPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBoPXRoaXMucGFyc2VJbmRleChsKTtvLnN1YnJzSW5kZXg9aC5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsYSxyKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRXIuSVNPX0FET0JFLEZyKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRXIuRVhQRVJULElyKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRXIuRVhQRVJUX1NVQlNFVCxUcik7Y29uc3QgaT10aGlzLmJ5dGVzLG49ZSxzPWlbZSsrXSxvPVtyPzA6Ii5ub3RkZWYiXTtsZXQgYyxsLGg7dC09MTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihoPTA7aDx0O2grKyl7Yz1pW2UrK108PDh8aVtlKytdO28ucHVzaChyP2M6YS5nZXQoYykpfWJyZWFrO2Nhc2UgMTpmb3IoO28ubGVuZ3RoPD10Oyl7Yz1pW2UrK108PDh8aVtlKytdO2w9aVtlKytdO2ZvcihoPTA7aDw9bDtoKyspby5wdXNoKHI/YysrOmEuZ2V0KGMrKykpfWJyZWFrO2Nhc2UgMjpmb3IoO28ubGVuZ3RoPD10Oyl7Yz1pW2UrK108PDh8aVtlKytdO2w9aVtlKytdPDw4fGlbZSsrXTtmb3IoaD0wO2g8PWw7aCsrKW8ucHVzaChyP2MrKzphLmdldChjKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IHU9ZSxkPWkuc3ViYXJyYXkobix1KTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEscyxvLGQpfXBhcnNlRW5jb2RpbmcoZSx0LGEscil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLG49dGhpcy5ieXRlcztsZXQgcyxvLGMsbD0hMSxoPW51bGw7aWYoMD09PWV8fDE9PT1lKXtsPSEwO3M9ZTtjb25zdCB0PWU/c3I6bHI7Zm9yKG89MCxjPXIubGVuZ3RoO288YztvKyspe2NvbnN0IGU9dC5pbmRleE9mKHJbb10pOy0xIT09ZSYmKGlbZV09byl9fWVsc2V7Y29uc3QgdD1lO3M9bltlKytdO3N3aXRjaCgxMjcmcyl7Y2FzZSAwOmNvbnN0IHQ9bltlKytdO2ZvcihvPTE7bzw9dDtvKyspaVtuW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IGE9bltlKytdO2xldCByPTE7Zm9yKG89MDtvPGE7bysrKXtjb25zdCB0PW5bZSsrXSxhPW5bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKWlbZV09cisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtzfSBpbiBDRkZgKX1jb25zdCBjPWU7aWYoMTI4JnMpe25bdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PW5bZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9bltlKytdLHM9KG5bZSsrXTw8OCkrKDI1NSZuW2UrK10pO2lbdF09ci5pbmRleE9mKGEuZ2V0KHMpKX19KCl9aD1uLnN1YmFycmF5KHQsYyl9cyY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcobCxzLGksaCl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IGE9dGhpcy5ieXRlcyxyPWFbZSsrXSxpPVtdO2xldCBuO3N3aXRjaChyKXtjYXNlIDA6Zm9yKG49MDtuPHQ7KytuKXtjb25zdCB0PWFbZSsrXTtpLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IHM9YVtlKytdPDw4fGFbZSsrXTtmb3Iobj0wO248czsrK24pe2xldCB0PWFbZSsrXTw8OHxhW2UrK107aWYoMD09PW4mJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IHI9YVtlKytdLHM9YVtlXTw8OHxhW2UrMV07Zm9yKGxldCBlPXQ7ZTxzOysrZSlpLnB1c2gocil9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7cn0iLmApfWlmKGkubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QocixpKX19Y2xhc3MgQ0ZGe2NvbnN0cnVjdG9yKCl7dGhpcy5oZWFkZXI9bnVsbDt0aGlzLm5hbWVzPVtdO3RoaXMudG9wRGljdD1udWxsO3RoaXMuc3RyaW5ncz1uZXcgQ0ZGU3RyaW5nczt0aGlzLmdsb2JhbFN1YnJJbmRleD1udWxsO3RoaXMuZW5jb2Rpbmc9bnVsbDt0aGlzLmNoYXJzZXQ9bnVsbDt0aGlzLmNoYXJTdHJpbmdzPW51bGw7dGhpcy5mZEFycmF5PVtdO3RoaXMuZmRTZWxlY3Q9bnVsbDt0aGlzLmlzQ0lERm9udD0hMX1kdXBsaWNhdGVGaXJzdEdseXBoKCl7aWYodGhpcy5jaGFyU3RyaW5ncy5jb3VudD49NjU1MzUpe3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gY2hhcnN0cmluZ3MgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpO3JldHVybn1jb25zdCBlPXRoaXMuY2hhclN0cmluZ3MuZ2V0KDApO3RoaXMuY2hhclN0cmluZ3MuYWRkKGUpO3RoaXMuaXNDSURGb250JiZ0aGlzLmZkU2VsZWN0LmZkU2VsZWN0LnB1c2godGhpcy5mZFNlbGVjdC5mZFNlbGVjdFswXSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMuY2hhclN0cmluZ3MuY291bnQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY2hhclN0cmluZ3MuZ2V0KGUpLmxlbmd0aD4wfX1jbGFzcyBDRkZIZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5tYWpvcj1lO3RoaXMubWlub3I9dDt0aGlzLmhkclNpemU9YTt0aGlzLm9mZlNpemU9cn19Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9PcltlXTplLURyPD10aGlzLnN0cmluZ3MubGVuZ3RoP3RoaXMuc3RyaW5nc1tlLURyXTpPclswXX1nZXRTSUQoZSl7bGV0IHQ9T3IuaW5kZXhPZihlKTtpZigtMSE9PXQpcmV0dXJuIHQ7dD10aGlzLnN0cmluZ3MuaW5kZXhPZihlKTtyZXR1cm4tMSE9PXQ/dCtEcjotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fWNsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19Y2xhc3MgQ0ZGRGljdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMua2V5VG9OYW1lTWFwPWUua2V5VG9OYW1lTWFwO3RoaXMubmFtZVRvS2V5TWFwPWUubmFtZVRvS2V5TWFwO3RoaXMuZGVmYXVsdHM9ZS5kZWZhdWx0czt0aGlzLnR5cGVzPWUudHlwZXM7dGhpcy5vcGNvZGVzPWUub3Bjb2Rlczt0aGlzLm9yZGVyPWUub3JkZXI7dGhpcy5zdHJpbmdzPXQ7dGhpcy52YWx1ZXM9T2JqZWN0LmNyZWF0ZShudWxsKX1zZXRCeUtleShlLHQpe2lmKCEoZSBpbiB0aGlzLmtleVRvTmFtZU1hcCkpcmV0dXJuITE7aWYoMD09PXQubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdCBhIG9mIHQpaWYoaXNOYU4oYSkpe3dhcm4oYEludmFsaWQgQ0ZGRGljdCB2YWx1ZTogIiR7dH0iIGZvciBrZXkgIiR7ZX0iLmApO3JldHVybiEwfWNvbnN0IGE9dGhpcy50eXBlc1tlXTsibnVtIiE9PWEmJiJzaWQiIT09YSYmIm9mZnNldCIhPT1hfHwodD10WzBdKTt0aGlzLnZhbHVlc1tlXT10O3JldHVybiEwfXNldEJ5TmFtZShlLHQpe2lmKCEoZSBpbiB0aGlzLm5hbWVUb0tleU1hcCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiJHtlfSJgKTt0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV09dH1oYXNOYW1lKGUpe3JldHVybiB0aGlzLm5hbWVUb0tleU1hcFtlXWluIHRoaXMudmFsdWVzfWdldEJ5TmFtZShlKXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgTnI9W1tbMTIsMzBdLCJST1MiLFsic2lkIiwic2lkIiwibnVtIl0sbnVsbF0sW1sxMiwyMF0sIlN5bnRoZXRpY0Jhc2UiLCJudW0iLG51bGxdLFswLCJ2ZXJzaW9uIiwic2lkIixudWxsXSxbMSwiTm90aWNlIiwic2lkIixudWxsXSxbWzEyLDBdLCJDb3B5cmlnaHQiLCJzaWQiLG51bGxdLFsyLCJGdWxsTmFtZSIsInNpZCIsbnVsbF0sWzMsIkZhbWlseU5hbWUiLCJzaWQiLG51bGxdLFs0LCJXZWlnaHQiLCJzaWQiLG51bGxdLFtbMTIsMV0sImlzRml4ZWRQaXRjaCIsIm51bSIsMF0sW1sxMiwyXSwiSXRhbGljQW5nbGUiLCJudW0iLDBdLFtbMTIsM10sIlVuZGVybGluZVBvc2l0aW9uIiwibnVtIiwtMTAwXSxbWzEyLDRdLCJVbmRlcmxpbmVUaGlja25lc3MiLCJudW0iLDUwXSxbWzEyLDVdLCJQYWludFR5cGUiLCJudW0iLDBdLFtbMTIsNl0sIkNoYXJzdHJpbmdUeXBlIiwibnVtIiwyXSxbWzEyLDddLCJGb250TWF0cml4IixbIm51bSIsIm51bSIsIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFsuMDAxLDAsMCwuMDAxLDAsMF1dLFsxMywiVW5pcXVlSUQiLCJudW0iLG51bGxdLFs1LCJGb250QkJveCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbMCwwLDAsMF1dLFtbMTIsOF0sIlN0cm9rZVdpZHRoIiwibnVtIiwwXSxbMTQsIlhVSUQiLCJhcnJheSIsbnVsbF0sWzE1LCJjaGFyc2V0Iiwib2Zmc2V0IiwwXSxbMTYsIkVuY29kaW5nIiwib2Zmc2V0IiwwXSxbMTcsIkNoYXJTdHJpbmdzIiwib2Zmc2V0IiwwXSxbMTgsIlByaXZhdGUiLFsib2Zmc2V0Iiwib2Zmc2V0Il0sbnVsbF0sW1sxMiwyMV0sIlBvc3RTY3JpcHQiLCJzaWQiLG51bGxdLFtbMTIsMjJdLCJCYXNlRm9udE5hbWUiLCJzaWQiLG51bGxdLFtbMTIsMjNdLCJCYXNlRm9udEJsZW5kIiwiZGVsdGEiLG51bGxdLFtbMTIsMzFdLCJDSURGb250VmVyc2lvbiIsIm51bSIsMF0sW1sxMiwzMl0sIkNJREZvbnRSZXZpc2lvbiIsIm51bSIsMF0sW1sxMiwzM10sIkNJREZvbnRUeXBlIiwibnVtIiwwXSxbWzEyLDM0XSwiQ0lEQ291bnQiLCJudW0iLDg3MjBdLFtbMTIsMzVdLCJVSURCYXNlIiwibnVtIixudWxsXSxbWzEyLDM3XSwiRkRTZWxlY3QiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzZdLCJGREFycmF5Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM4XSwiRm9udE5hbWUiLCJzaWQiLG51bGxdXTtjbGFzcyBDRkZUb3BEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhOcikpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19Y29uc3QgUHI9W1s2LCJCbHVlVmFsdWVzIiwiZGVsdGEiLG51bGxdLFs3LCJPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFs4LCJGYW1pbHlCbHVlcyIsImRlbHRhIixudWxsXSxbOSwiRmFtaWx5T3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbWzEyLDldLCJCbHVlU2NhbGUiLCJudW0iLC4wMzk2MjVdLFtbMTIsMTBdLCJCbHVlU2hpZnQiLCJudW0iLDddLFtbMTIsMTFdLCJCbHVlRnV6eiIsIm51bSIsMV0sWzEwLCJTdGRIVyIsIm51bSIsbnVsbF0sWzExLCJTdGRWVyIsIm51bSIsbnVsbF0sW1sxMiwxMl0sIlN0ZW1TbmFwSCIsImRlbHRhIixudWxsXSxbWzEyLDEzXSwiU3RlbVNuYXBWIiwiZGVsdGEiLG51bGxdLFtbMTIsMTRdLCJGb3JjZUJvbGQiLCJudW0iLDBdLFtbMTIsMTddLCJMYW5ndWFnZUdyb3VwIiwibnVtIiwwXSxbWzEyLDE4XSwiRXhwYW5zaW9uRmFjdG9yIiwibnVtIiwuMDZdLFtbMTIsMTldLCJpbml0aWFsUmFuZG9tU2VlZCIsIm51bSIsMF0sWzIwLCJkZWZhdWx0V2lkdGhYIiwibnVtIiwwXSxbMjEsIm5vbWluYWxXaWR0aFgiLCJudW0iLDBdLFsxOSwiU3VicnMiLCJvZmZzZXQiLG51bGxdXTtjbGFzcyBDRkZQcml2YXRlRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoUHIpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fWNvbnN0IEVyPXtJU09fQURPQkU6MCxFWFBFUlQ6MSxFWFBFUlRfU1VCU0VUOjJ9O2NsYXNzIENGRkNoYXJzZXR7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmNoYXJzZXQ9YTt0aGlzLnJhdz1yfX1jbGFzcyBDRkZFbmNvZGluZ3tjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnByZWRlZmluZWQ9ZTt0aGlzLmZvcm1hdD10O3RoaXMuZW5jb2Rpbmc9YTt0aGlzLnJhdz1yfX1jbGFzcyBDRkZGRFNlbGVjdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZm9ybWF0PWU7dGhpcy5mZFNlbGVjdD10fWdldEZESW5kZXgoZSl7cmV0dXJuIGU8MHx8ZT49dGhpcy5mZFNlbGVjdC5sZW5ndGg/LTE6dGhpcy5mZFNlbGVjdFtlXX19Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTt0aGlzLm9mZnNldHNbZV09dH1vZmZzZXQoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vZmZzZXRzKXRoaXMub2Zmc2V0c1t0XSs9ZX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxhKXtpZighKGUgaW4gdGhpcy5vZmZzZXRzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYE5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7Y29uc3Qgcj1hLmRhdGEsaT10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7KytlKXtjb25zdCBhPTUqZStpLG49YSsxLHM9YSsyLG89YSszLGM9YSs0O2lmKDI5IT09clthXXx8MCE9PXJbbl18fDAhPT1yW3NdfHwwIT09cltvXXx8MCE9PXJbY10pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGw9dFtlXTtyW2FdPTI5O3Jbbl09bD4+MjQmMjU1O3Jbc109bD4+MTYmMjU1O3Jbb109bD4+OCYyNTU7cltjXT0yNTUmbH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dHJ5e3RoaXMuZGF0YS5wdXNoKC4uLmUpfWNhdGNoe3RoaXMuZGF0YT10aGlzLmRhdGEuY29uY2F0KGUpfXRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGh9fSxhPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5hZGQoYSk7Y29uc3Qgcj10aGlzLmNvbXBpbGVOYW1lSW5kZXgoZS5uYW1lcyk7dC5hZGQocik7aWYoZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe2NvbnN0IHQ9ZS50b3BEaWN0LmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2UudG9wRGljdC5yZW1vdmVCeU5hbWUoIkZvbnRNYXRyaXgiKTtmb3IoY29uc3QgYSBvZiBlLmZkQXJyYXkpe2xldCBlPXQuc2xpY2UoMCk7YS5oYXNOYW1lKCJGb250TWF0cml4IikmJihlPVV0aWwudHJhbnNmb3JtKGUsYS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKSkpO2Euc2V0QnlOYW1lKCJGb250TWF0cml4IixlKX19Y29uc3QgaT1lLnRvcERpY3QuZ2V0QnlOYW1lKCJYVUlEIik7aT8ubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IG49dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKG4ub3V0cHV0KTtjb25zdCBzPW4udHJhY2tlcnNbMF0sbz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQobyk7Y29uc3QgYz10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQoYyk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKXMuc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO3Muc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYSl9Y29uc3QgbD10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7cy5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGwpO2NvbnN0IGg9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7cy5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZChoKTtpZihlLmlzQ0lERm9udCl7cy5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGEpO249dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtzLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQobi5vdXRwdXQpO2NvbnN0IHI9bi50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHIsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtzXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVuY29kZUZsb2F0UmVnRXhwIiwvXC4oXGQqPykoPzo5ezUsMjB9fDB7NSwyMH0pXGR7MCwyfSg/OmUoLispfCQpLyl9ZW5jb2RlRmxvYXQoZSl7bGV0IHQ9ZS50b1N0cmluZygpO2NvbnN0IGE9Q0ZGQ29tcGlsZXIuRW5jb2RlRmxvYXRSZWdFeHAuZXhlYyh0KTtpZihhKXtjb25zdCByPXBhcnNlRmxvYXQoIjFlIisoKGFbMl0/K2FbMl06MCkrYVsxXS5sZW5ndGgpKTt0PShNYXRoLnJvdW5kKGUqcikvcikudG9TdHJpbmcoKX1sZXQgcixpLG49IiI7Zm9yKHI9MCxpPXQubGVuZ3RoO3I8aTsrK3Ipe2NvbnN0IGU9dFtyXTtuKz0iZSI9PT1lPyItIj09PXRbKytyXT8iYyI6ImIiOiIuIj09PWU/ImEiOiItIj09PWU/ImUiOmV9bis9MSZuLmxlbmd0aD8iZiI6ImZmIjtjb25zdCBzPVszMF07Zm9yKHI9MCxpPW4ubGVuZ3RoO3I8aTtyKz0yKXMucHVzaChwYXJzZUludChuLnN1YnN0cmluZyhyLHIrMiksMTYpKTtyZXR1cm4gc31lbmNvZGVJbnRlZ2VyKGUpe2xldCB0O3Q9ZT49LTEwNyYmZTw9MTA3P1tlKzEzOV06ZT49MTA4JiZlPD0xMTMxP1syNDcrKChlLT0xMDgpPj44KSwyNTUmZV06ZT49LTExMzEmJmU8PS0xMDg/WzI1MSsoKGU9LWUtMTA4KT4+OCksMjU1JmVdOmU+PS0zMjc2OCYmZTw9MzI3Njc/WzI4LGU+PjgmMjU1LDI1NSZlXTpbMjksZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV07cmV0dXJuIHR9Y29tcGlsZUhlYWRlcihlKXtyZXR1cm5bZS5tYWpvcixlLm1pbm9yLDQsZS5vZmZTaXplXX1jb21waWxlTmFtZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9TWF0aC5taW4oYS5sZW5ndGgsMTI3KTtsZXQgcj1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9YVt0XTsoZTwiISJ8fGU+In4ifHwiWyI9PT1lfHwiXSI9PT1lfHwiKCI9PT1lfHwiKSI9PT1lfHwieyI9PT1lfHwifSI9PT1lfHwiPCI9PT1lfHwiPiI9PT1lfHwiLyI9PT1lfHwiJSI9PT1lKSYmKGU9Il8iKTtyW3RdPWV9cj1yLmpvaW4oIiIpOyIiPT09ciYmKHI9IkJhZF9Gb250X05hbWUiKTt0LmFkZChzdHJpbmdUb0J5dGVzKHIpKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZVRvcERpY3RzKGUsdCxhKXtjb25zdCByPVtdO2xldCBpPW5ldyBDRkZJbmRleDtmb3IoY29uc3QgbiBvZiBlKXtpZihhKXtuLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFZlcnNpb24iKTtuLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFJldmlzaW9uIik7bi5yZW1vdmVCeU5hbWUoIkNJREZvbnRUeXBlIik7bi5yZW1vdmVCeU5hbWUoIkNJRENvdW50Iik7bi5yZW1vdmVCeU5hbWUoIlVJREJhc2UiKX1jb25zdCBlPW5ldyBDRkZPZmZzZXRUcmFja2VyLHM9dGhpcy5jb21waWxlRGljdChuLGUpO3IucHVzaChlKTtpLmFkZChzKTtlLm9mZnNldCh0KX1pPXRoaXMuY29tcGlsZUluZGV4KGkscik7cmV0dXJue3RyYWNrZXJzOnIsb3V0cHV0Oml9fWNvbXBpbGVQcml2YXRlRGljdHMoZSx0LGEpe2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpOysrcil7Y29uc3QgaT1lW3JdLG49aS5wcml2YXRlRGljdDtpZighbnx8IWkuaGFzTmFtZSgiUHJpdmF0ZSIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBzPW5ldyBDRkZPZmZzZXRUcmFja2VyLG89dGhpcy5jb21waWxlRGljdChuLHMpO2xldCBjPWEubGVuZ3RoO3Mub2Zmc2V0KGMpO28ubGVuZ3RofHwoYz0wKTt0W3JdLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtvLmxlbmd0aCxjXSxhKTthLmFkZChvKTtpZihuLnN1YnJzSW5kZXgmJm4uaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChuLnN1YnJzSW5kZXgpO3Muc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtvLmxlbmd0aF0sYSk7YS5hZGQoZSl9fX1jb21waWxlRGljdChlLHQpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZS5vcmRlcil7aWYoIShyIGluIGUudmFsdWVzKSljb250aW51ZTtsZXQgaT1lLnZhbHVlc1tyXSxuPWUudHlwZXNbcl07QXJyYXkuaXNBcnJheShuKXx8KG49W25dKTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2lmKDAhPT1pLmxlbmd0aCl7Zm9yKGxldCBzPTAsbz1uLmxlbmd0aDtzPG87KytzKXtjb25zdCBvPW5bc10sYz1pW3NdO3N3aXRjaChvKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihjKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IG49ZS5rZXlUb05hbWVNYXBbcl07dC5pc1RyYWNraW5nKG4pfHx0LnRyYWNrKG4sYS5sZW5ndGgpO2EucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoYykpO2ZvcihsZXQgZT0xLHQ9aS5sZW5ndGg7ZTx0OysrZSlhLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoaVtlXSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke299YCl9fWEucHVzaCguLi5lLm9wY29kZXNbcl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZChzdHJpbmdUb0J5dGVzKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJTdHJpbmdzKGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2ZvcihsZXQgYT0wO2E8ZS5jb3VudDthKyspe2NvbnN0IHI9ZS5nZXQoYSk7MCE9PXIubGVuZ3RoP3QuYWRkKHIpOnQuYWRkKG5ldyBVaW50OEFycmF5KFsxMzksMTRdKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyc2V0KGUsdCxhLHIpe2xldCBpO2NvbnN0IG49dC0xO2lmKHIpe2NvbnN0IGU9bi0xO2k9bmV3IFVpbnQ4QXJyYXkoWzIsMCwxLGU+PjgmMjU1LDI1NSZlXSl9ZWxzZXtpPW5ldyBVaW50OEFycmF5KDErMipuKTtpWzBdPTA7bGV0IHQ9MDtjb25zdCByPWUuY2hhcnNldC5sZW5ndGg7bGV0IHM9ITE7Zm9yKGxldCBuPTE7bjxpLmxlbmd0aDtuKz0yKXtsZXQgbz0wO2lmKHQ8cil7Y29uc3Qgcj1lLmNoYXJzZXRbdCsrXTtvPWEuZ2V0U0lEKHIpO2lmKC0xPT09byl7bz0wO2lmKCFzKXtzPSEwO3dhcm4oYENvdWxkbid0IGZpbmQgJHtyfSBpbiBDRkYgc3RyaW5nc2ApfX19aVtuXT1vPj44JjI1NTtpW24rMV09MjU1Jm99fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfWNvbXBpbGVFbmNvZGluZyhlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9Y29tcGlsZUZEU2VsZWN0KGUpe2NvbnN0IHQ9ZS5mb3JtYXQ7bGV0IGEscjtzd2l0Y2godCl7Y2FzZSAwOmE9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCk7YVswXT10O2ZvcihyPTA7cjxlLmZkU2VsZWN0Lmxlbmd0aDtyKyspYVtyKzFdPWUuZmRTZWxlY3Rbcl07YnJlYWs7Y2FzZSAzOmNvbnN0IGk9MDtsZXQgbj1lLmZkU2VsZWN0WzBdO2NvbnN0IHM9W3QsMCwwLGk+PjgmMjU1LDI1NSZpLG5dO2ZvcihyPTE7cjxlLmZkU2VsZWN0Lmxlbmd0aDtyKyspe2NvbnN0IHQ9ZS5mZFNlbGVjdFtyXTtpZih0IT09bil7cy5wdXNoKHI+PjgmMjU1LDI1NSZyLHQpO249dH19Y29uc3Qgbz0ocy5sZW5ndGgtMykvMztzWzFdPW8+PjgmMjU1O3NbMl09MjU1Jm87cy5wdXNoKHI+PjgmMjU1LDI1NSZyKTthPW5ldyBVaW50OEFycmF5KHMpfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGEpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlLHQ9W10pe2NvbnN0IGE9ZS5vYmplY3RzLHI9YS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuWzAsMF07Y29uc3QgaT1bcj4+OCYyNTUsMjU1JnJdO2xldCBuLHMsbz0xO2ZvcihuPTA7bjxyOysrbilvKz1hW25dLmxlbmd0aDtzPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O2kucHVzaChzKTtsZXQgYz0xO2ZvcihuPTA7bjxyKzE7bisrKXsxPT09cz9pLnB1c2goMjU1JmMpOjI9PT1zP2kucHVzaChjPj44JjI1NSwyNTUmYyk6Mz09PXM/aS5wdXNoKGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyk6aS5wdXNoKGM+Pj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTthW25dJiYoYys9YVtuXS5sZW5ndGgpfWZvcihuPTA7bjxyO24rKyl7dFtuXSYmdFtuXS5vZmZzZXQoaS5sZW5ndGgpO2kucHVzaCguLi5hW25dKX1yZXR1cm4gaX19Y29uc3QgTHI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSksX3I9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pLFVyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNhbGlicmk9IkhlbHZldGljYSI7ZVsiQ2FsaWJyaS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDYWxpYnJpLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5DZW50dXJ5R290aGljPSJIZWx2ZXRpY2EiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2VudHVyeUdvdGhpYy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ29taWNTYW5zTVM9IkNvbWljIFNhbnMgTVMiO2VbIkNvbWljU2Fuc01TLUJvbGQiXT0iQ29taWMgU2FucyBNUy1Cb2xkIjtlWyJDb21pY1NhbnNNUy1Cb2xkSXRhbGljIl09IkNvbWljIFNhbnMgTVMtQm9sZEl0YWxpYyI7ZVsiQ29taWNTYW5zTVMtSXRhbGljIl09IkNvbWljIFNhbnMgTVMtSXRhbGljIjtlLkdpbGxTYW5zTVQ9IkhlbHZldGljYSI7ZVsiR2lsbFNhbnNNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJHaWxsU2Fuc01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJHaWxsU2Fuc01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSJ9KSxqcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSxYcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5EaW5nYmF0cz0hMDtlLlN5bWJvbD0hMDtlLlphcGZEaW5nYmF0cz0hMDtlLldpbmdkaW5ncz0hMDtlWyJXaW5nZGluZ3MtQm9sZCJdPSEwO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09ITB9KSxxcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsyXT0xMDtlWzNdPTMyO2VbNF09MzM7ZVs1XT0zNDtlWzZdPTM1O2VbN109MzY7ZVs4XT0zNztlWzldPTM4O2VbMTBdPTM5O2VbMTFdPTQwO2VbMTJdPTQxO2VbMTNdPTQyO2VbMTRdPTQzO2VbMTVdPTQ0O2VbMTZdPTQ1O2VbMTddPTQ2O2VbMThdPTQ3O2VbMTldPTQ4O2VbMjBdPTQ5O2VbMjFdPTUwO2VbMjJdPTUxO2VbMjNdPTUyO2VbMjRdPTUzO2VbMjVdPTU0O2VbMjZdPTU1O2VbMjddPTU2O2VbMjhdPTU3O2VbMjldPTU4O2VbMzBdPTg5NDtlWzMxXT02MDtlWzMyXT02MTtlWzMzXT02MjtlWzM0XT02MztlWzM1XT02NDtlWzM2XT02NTtlWzM3XT02NjtlWzM4XT02NztlWzM5XT02ODtlWzQwXT02OTtlWzQxXT03MDtlWzQyXT03MTtlWzQzXT03MjtlWzQ0XT03MztlWzQ1XT03NDtlWzQ2XT03NTtlWzQ3XT03NjtlWzQ4XT03NztlWzQ5XT03ODtlWzUwXT03OTtlWzUxXT04MDtlWzUyXT04MTtlWzUzXT04MjtlWzU0XT04MztlWzU1XT04NDtlWzU2XT04NTtlWzU3XT04NjtlWzU4XT04NztlWzU5XT04ODtlWzYwXT04OTtlWzYxXT05MDtlWzYyXT05MTtlWzYzXT05MjtlWzY0XT05MztlWzY1XT05NDtlWzY2XT05NTtlWzY3XT05NjtlWzY4XT05NztlWzY5XT05ODtlWzcwXT05OTtlWzcxXT0xMDA7ZVs3Ml09MTAxO2VbNzNdPTEwMjtlWzc0XT0xMDM7ZVs3NV09MTA0O2VbNzZdPTEwNTtlWzc3XT0xMDY7ZVs3OF09MTA3O2VbNzldPTEwODtlWzgwXT0xMDk7ZVs4MV09MTEwO2VbODJdPTExMTtlWzgzXT0xMTI7ZVs4NF09MTEzO2VbODVdPTExNDtlWzg2XT0xMTU7ZVs4N109MTE2O2VbODhdPTExNztlWzg5XT0xMTg7ZVs5MF09MTE5O2VbOTFdPTEyMDtlWzkyXT0xMjE7ZVs5M109MTIyO2VbOTRdPTEyMztlWzk1XT0xMjQ7ZVs5Nl09MTI1O2VbOTddPTEyNjtlWzk4XT0xOTY7ZVs5OV09MTk3O2VbMTAwXT0xOTk7ZVsxMDFdPTIwMTtlWzEwMl09MjA5O2VbMTAzXT0yMTQ7ZVsxMDRdPTIyMDtlWzEwNV09MjI1O2VbMTA2XT0yMjQ7ZVsxMDddPTIyNjtlWzEwOF09MjI4O2VbMTA5XT0yMjc7ZVsxMTBdPTIyOTtlWzExMV09MjMxO2VbMTEyXT0yMzM7ZVsxMTNdPTIzMjtlWzExNF09MjM0O2VbMTE1XT0yMzU7ZVsxMTZdPTIzNztlWzExN109MjM2O2VbMTE4XT0yMzg7ZVsxMTldPTIzOTtlWzEyMF09MjQxO2VbMTIxXT0yNDM7ZVsxMjJdPTI0MjtlWzEyM109MjQ0O2VbMTI0XT0yNDY7ZVsxMjVdPTI0NTtlWzEyNl09MjUwO2VbMTI3XT0yNDk7ZVsxMjhdPTI1MTtlWzEyOV09MjUyO2VbMTMwXT04MjI0O2VbMTMxXT0xNzY7ZVsxMzJdPTE2MjtlWzEzM109MTYzO2VbMTM0XT0xNjc7ZVsxMzVdPTgyMjY7ZVsxMzZdPTE4MjtlWzEzN109MjIzO2VbMTM4XT0xNzQ7ZVsxMzldPTE2OTtlWzE0MF09ODQ4MjtlWzE0MV09MTgwO2VbMTQyXT0xNjg7ZVsxNDNdPTg4MDA7ZVsxNDRdPTE5ODtlWzE0NV09MjE2O2VbMTQ2XT04NzM0O2VbMTQ3XT0xNzc7ZVsxNDhdPTg4MDQ7ZVsxNDldPTg4MDU7ZVsxNTBdPTE2NTtlWzE1MV09MTgxO2VbMTUyXT04NzA2O2VbMTUzXT04NzIxO2VbMTU0XT04NzE5O2VbMTU2XT04NzQ3O2VbMTU3XT0xNzA7ZVsxNThdPTE4NjtlWzE1OV09ODQ4NjtlWzE2MF09MjMwO2VbMTYxXT0yNDg7ZVsxNjJdPTE5MTtlWzE2M109MTYxO2VbMTY0XT0xNzI7ZVsxNjVdPTg3MzA7ZVsxNjZdPTQwMjtlWzE2N109ODc3NjtlWzE2OF09ODcxMDtlWzE2OV09MTcxO2VbMTcwXT0xODc7ZVsxNzFdPTgyMzA7ZVsxNzldPTgyMjA7ZVsxODBdPTgyMjE7ZVsxODFdPTgyMTY7ZVsxODJdPTgyMTc7ZVsyMDBdPTE5MztlWzIwM109MjA1O2VbMjA3XT0yMTE7ZVsyMTBdPTIxODtlWzIyM109NzExO2VbMjI0XT0zMjE7ZVsyMjVdPTMyMjtlWzIyNl09MzUyO2VbMjI3XT0zNTM7ZVsyMjhdPTM4MTtlWzIyOV09MzgyO2VbMjMzXT0yMjE7ZVsyMzRdPTI1MztlWzI1Ml09MjYzO2VbMjUzXT0yNjg7ZVsyNTRdPTI2OTtlWzI1OF09MjU4O2VbMjYwXT0yNjA7ZVsyNjFdPTI2MTtlWzI2NV09MjgwO2VbMjY2XT0yODE7ZVsyNjddPTI4MjtlWzI2OF09MjgzO2VbMjY5XT0zMTM7ZVsyNzVdPTMyMztlWzI3Nl09MzI0O2VbMjc4XT0zMjg7ZVsyODNdPTM0NDtlWzI4NF09MzQ1O2VbMjg1XT0zNDY7ZVsyODZdPTM0NztlWzI5Ml09MzY3O2VbMjk1XT0zNzc7ZVsyOTZdPTM3ODtlWzI5OF09MzgwO2VbMzA1XT05NjM7ZVszMDZdPTk2NDtlWzMwN109OTY2O2VbMzA4XT04MjE1O2VbMzA5XT04MjUyO2VbMzEwXT04MzE5O2VbMzExXT04MzU5O2VbMzEyXT04NTkyO2VbMzEzXT04NTkzO2VbMzM3XT05NTUyO2VbNDkzXT0xMDM5O2VbNDk0XT0xMDQwO2VbNTcwXT0xMDQwO2VbNTcxXT0xMDQxO2VbNTcyXT0xMDQyO2VbNTczXT0xMDQzO2VbNTc0XT0xMDQ0O2VbNTc1XT0xMDQ1O2VbNTc2XT0xMDQ2O2VbNTc3XT0xMDQ3O2VbNTc4XT0xMDQ4O2VbNTc5XT0xMDQ5O2VbNTgwXT0xMDUwO2VbNTgxXT0xMDUxO2VbNTgyXT0xMDUyO2VbNTgzXT0xMDUzO2VbNTg0XT0xMDU0O2VbNTg1XT0xMDU1O2VbNTg2XT0xMDU2O2VbNTg3XT0xMDU3O2VbNTg4XT0xMDU4O2VbNTg5XT0xMDU5O2VbNTkwXT0xMDYwO2VbNTkxXT0xMDYxO2VbNTkyXT0xMDYyO2VbNTkzXT0xMDYzO2VbNTk0XT0xMDY0O2VbNTk1XT0xMDY1O2VbNTk2XT0xMDY2O2VbNTk3XT0xMDY3O2VbNTk4XT0xMDY4O2VbNTk5XT0xMDY5O2VbNjAwXT0xMDcwO2VbNjcyXT0xNDg4O2VbNjczXT0xNDg5O2VbNjc0XT0xNDkwO2VbNjc1XT0xNDkxO2VbNjc2XT0xNDkyO2VbNjc3XT0xNDkzO2VbNjc4XT0xNDk0O2VbNjc5XT0xNDk1O2VbNjgwXT0xNDk2O2VbNjgxXT0xNDk3O2VbNjgyXT0xNDk4O2VbNjgzXT0xNDk5O2VbNjg0XT0xNTAwO2VbNjg1XT0xNTAxO2VbNjg2XT0xNTAyO2VbNjg3XT0xNTAzO2VbNjg4XT0xNTA0O2VbNjg5XT0xNTA1O2VbNjkwXT0xNTA2O2VbNjkxXT0xNTA3O2VbNjkyXT0xNTA4O2VbNjkzXT0xNTA5O2VbNjk0XT0xNTEwO2VbNjk1XT0xNTExO2VbNjk2XT0xNTEyO2VbNjk3XT0xNTEzO2VbNjk4XT0xNTE0O2VbNzA1XT0xNTI0O2VbNzA2XT04MzYyO2VbNzEwXT02NDI4ODtlWzcxMV09NjQyOTg7ZVs3NTldPTE2MTc7ZVs3NjFdPTE3NzY7ZVs3NjNdPTE3Nzg7ZVs3NzVdPTE2NTI7ZVs3NzddPTE3NjQ7ZVs3NzhdPTE3ODA7ZVs3NzldPTE3ODE7ZVs3ODBdPTE3ODI7ZVs3ODJdPTc3MTtlWzc4M109NjQ3MjY7ZVs3ODZdPTgzNjM7ZVs3ODhdPTg1MzI7ZVs3OTBdPTc2ODtlWzc5MV09NzY5O2VbNzkyXT03Njg7ZVs3OTVdPTgwMztlWzc5N109NjQzMzY7ZVs3OThdPTY0MzM3O2VbNzk5XT02NDM0MjtlWzgwMF09NjQzNDM7ZVs4MDFdPTY0MzQ0O2VbODAyXT02NDM0NTtlWzgwM109NjQzNjI7ZVs4MDRdPTY0MzYzO2VbODA1XT02NDM2NDtlWzI0MjRdPTc4MjE7ZVsyNDI1XT03ODIyO2VbMjQyNl09NzgyMztlWzI0MjddPTc4MjQ7ZVsyNDI4XT03ODI1O2VbMjQyOV09NzgyNjtlWzI0MzBdPTc4Mjc7ZVsyNDMzXT03NjgyO2VbMjY3OF09ODA0NTtlWzI2NzldPTgwNDY7ZVsyODMwXT0xNTUyO2VbMjgzOF09Njg2O2VbMjg0MF09NzUxO2VbMjg0Ml09NzUzO2VbMjg0M109NzU0O2VbMjg0NF09NzU1O2VbMjg0Nl09NzU3O2VbMjg1Nl09NzY3O2VbMjg1N109ODQ4O2VbMjg1OF09ODQ5O2VbMjg2Ml09ODUzO2VbMjg2M109ODU0O2VbMjg2NF09ODU1O2VbMjg2NV09ODYxO2VbMjg2Nl09ODYyO2VbMjkwNl09NzQ2MDtlWzI5MDhdPTc0NjI7ZVsyOTA5XT03NDYzO2VbMjkxMF09NzQ2NDtlWzI5MTJdPTc0NjY7ZVsyOTEzXT03NDY3O2VbMjkxNF09NzQ2ODtlWzI5MTZdPTc0NzA7ZVsyOTE3XT03NDcxO2VbMjkxOF09NzQ3MjtlWzI5MjBdPTc0NzQ7ZVsyOTIxXT03NDc1O2VbMjkyMl09NzQ3NjtlWzI5MjRdPTc0Nzg7ZVsyOTI1XT03NDc5O2VbMjkyNl09NzQ4MDtlWzI5MjhdPTc0ODI7ZVsyOTI5XT03NDgzO2VbMjkzMF09NzQ4NDtlWzI5MzJdPTc0ODY7ZVsyOTMzXT03NDg3O2VbMjkzNF09NzQ4ODtlWzI5MzZdPTc0OTA7ZVsyOTM3XT03NDkxO2VbMjkzOF09NzQ5MjtlWzI5NDBdPTc0OTQ7ZVsyOTQxXT03NDk1O2VbMjk0Ml09NzQ5NjtlWzI5NDRdPTc0OTg7ZVsyOTQ2XT03NTAwO2VbMjk0OF09NzUwMjtlWzI5NTBdPTc1MDQ7ZVsyOTUxXT03NTA1O2VbMjk1Ml09NzUwNjtlWzI5NTRdPTc1MDg7ZVsyOTU1XT03NTA5O2VbMjk1Nl09NzUxMDtlWzI5NThdPTc1MTI7ZVsyOTU5XT03NTEzO2VbMjk2MF09NzUxNDtlWzI5NjJdPTc1MTY7ZVsyOTYzXT03NTE3O2VbMjk2NF09NzUxODtlWzI5NjZdPTc1MjA7ZVsyOTY3XT03NTIxO2VbMjk2OF09NzUyMjtlWzI5NzBdPTc1MjQ7ZVsyOTcxXT03NTI1O2VbMjk3Ml09NzUyNjtlWzI5NzRdPTc1Mjg7ZVsyOTc1XT03NTI5O2VbMjk3Nl09NzUzMDtlWzI5NzhdPTE1Mzc7ZVsyOTc5XT0xNTM4O2VbMjk4MF09MTUzOTtlWzI5ODJdPTE1NDk7ZVsyOTgzXT0xNTUxO2VbMjk4NF09MTU1MjtlWzI5ODZdPTE1NTQ7ZVsyOTg3XT0xNTU1O2VbMjk4OF09MTU1NjtlWzI5OTBdPTE2MjM7ZVsyOTkxXT0xNjI0O2VbMjk5NV09MTc3NTtlWzI5OTldPTE3OTE7ZVszMDAyXT02NDI5MDtlWzMwMDNdPTY0MjkxO2VbMzAwNF09NjQyOTI7ZVszMDA2XT02NDI5NDtlWzMwMDddPTY0Mjk1O2VbMzAwOF09NjQyOTY7ZVszMDExXT0xOTAwO2VbMzAxNF09ODIyMztlWzMwMTVdPTgyNDQ7ZVszMDE3XT03NTMyO2VbMzAxOF09NzUzMztlWzMwMTldPTc1MzQ7ZVszMDc1XT03NTkwO2VbMzA3Nl09NzU5MTtlWzMwNzldPTc1OTQ7ZVszMDgwXT03NTk1O2VbMzA4M109NzU5ODtlWzMwODRdPTc1OTk7ZVszMDg3XT03NjAyO2VbMzA4OF09NzYwMztlWzMwOTFdPTc2MDY7ZVszMDkyXT03NjA3O2VbMzA5NV09NzYxMDtlWzMwOTZdPTc2MTE7ZVszMDk5XT03NjE0O2VbMzEwMF09NzYxNTtlWzMxMDNdPTc2MTg7ZVszMTA0XT03NjE5O2VbMzEwN109ODMzNztlWzMxMDhdPTgzMzg7ZVszMTE2XT0xODg0O2VbMzExOV09MTg4NTtlWzMxMjBdPTE4ODU7ZVszMTIzXT0xODg2O2VbMzEyNF09MTg4NjtlWzMxMjddPTE4ODc7ZVszMTI4XT0xODg3O2VbMzEzMV09MTg4ODtlWzMxMzJdPTE4ODg7ZVszMTM1XT0xODg5O2VbMzEzNl09MTg4OTtlWzMxMzldPTE4OTA7ZVszMTQwXT0xODkwO2VbMzE0M109MTg5MTtlWzMxNDRdPTE4OTE7ZVszMTQ3XT0xODkyO2VbMzE0OF09MTg5MjtlWzMxNTNdPTU4MDtlWzMxNTRdPTU4MTtlWzMxNTddPTU4NDtlWzMxNThdPTU4NTtlWzMxNjFdPTU4ODtlWzMxNjJdPTU4OTtlWzMxNjVdPTg5MTtlWzMxNjZdPTg5MjtlWzMxNjldPTEyNzQ7ZVszMTcwXT0xMjc1O2VbMzE3M109MTI3ODtlWzMxNzRdPTEyNzk7ZVszMTgxXT03NjIyO2VbMzE4Ml09NzYyMztlWzMyODJdPTExNzk5O2VbMzMxNl09NTc4O2VbMzM3OV09NDI3ODU7ZVszMzkzXT0xMTU5O2VbMzQxNl09ODM3N30pLEhyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWzIyN109MzIyO2VbMjY0XT0yNjE7ZVsyOTFdPTM0Nn0pLFdyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWzFdPTMyO2VbNF09NjU7ZVs1XT0xOTI7ZVs2XT0xOTM7ZVs5XT0xOTY7ZVsxN109NjY7ZVsxOF09Njc7ZVsyMV09MjY4O2VbMjRdPTY4O2VbMjhdPTY5O2VbMjldPTIwMDtlWzMwXT0yMDE7ZVszMl09MjgyO2VbMzhdPTcwO2VbMzldPTcxO2VbNDRdPTcyO2VbNDddPTczO2VbNDhdPTIwNDtlWzQ5XT0yMDU7ZVs1OF09NzQ7ZVs2MF09NzU7ZVs2Ml09NzY7ZVs2OF09Nzc7ZVs2OV09Nzg7ZVs3NV09Nzk7ZVs3Nl09MjEwO2VbODBdPTIxNDtlWzg3XT04MDtlWzg5XT04MTtlWzkwXT04MjtlWzkyXT0zNDQ7ZVs5NF09ODM7ZVs5N109MzUyO2VbMTAwXT04NDtlWzEwNF09ODU7ZVsxMDldPTIyMDtlWzExNV09ODY7ZVsxMTZdPTg3O2VbMTIxXT04ODtlWzEyMl09ODk7ZVsxMjRdPTIyMTtlWzEyN109OTA7ZVsxMjldPTM4MTtlWzI1OF09OTc7ZVsyNTldPTIyNDtlWzI2MF09MjI1O2VbMjYzXT0yMjg7ZVsyNjhdPTI2MTtlWzI3MV09OTg7ZVsyNzJdPTk5O2VbMjczXT0yNjM7ZVsyNzVdPTI2OTtlWzI4Ml09MTAwO2VbMjg2XT0xMDE7ZVsyODddPTIzMjtlWzI4OF09MjMzO2VbMjkwXT0yODM7ZVsyOTVdPTI4MTtlWzI5Nl09MTAyO2VbMzM2XT0xMDM7ZVszNDZdPTEwNDtlWzM0OV09MTA1O2VbMzUwXT0yMzY7ZVszNTFdPTIzNztlWzM2MV09MTA2O2VbMzY0XT0xMDc7ZVszNjddPTEwODtlWzM3MV09MzIyO2VbMzczXT0xMDk7ZVszNzRdPTExMDtlWzM4MV09MTExO2VbMzgyXT0yNDI7ZVszODNdPTI0MztlWzM4Nl09MjQ2O2VbMzkzXT0xMTI7ZVszOTVdPTExMztlWzM5Nl09MTE0O2VbMzk4XT0zNDU7ZVs0MDBdPTExNTtlWzQwMV09MzQ3O2VbNDAzXT0zNTM7ZVs0MTBdPTExNjtlWzQzN109MTE3O2VbNDQyXT0yNTI7ZVs0NDhdPTExODtlWzQ0OV09MTE5O2VbNDU0XT0xMjA7ZVs0NTVdPTEyMTtlWzQ1N109MjUzO2VbNDYwXT0xMjI7ZVs0NjJdPTM4MjtlWzQ2M109MzgwO2VbODUzXT00NDtlWzg1NV09NTg7ZVs4NTZdPTQ2O2VbODc2XT00NztlWzg3OF09NDU7ZVs4ODJdPTQ1O2VbODk0XT00MDtlWzg5NV09NDE7ZVs4OTZdPTkxO2VbODk3XT05MztlWzkyM109NjQ7ZVs5NDBdPTE2MztlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSk7ZnVuY3Rpb24gZ2V0U3RhbmRhcmRGb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiBMcigpW3RdfWZ1bmN0aW9uIGlzS25vd25Gb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiEhKExyKClbdF18fFVyKClbdF18fGpyKClbdF18fFhyKClbdF0pfWNsYXNzIFRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLl9tYXA9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Zm9yRWFjaChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuX21hcFt0XS5jb2RlUG9pbnRBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fWNsYXNzIENGRkZvbnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnByb3BlcnRpZXM9dDtjb25zdCBhPW5ldyBDRkZQYXJzZXIoZSx0LHdyKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHI9bmV3IENGRkNvbXBpbGVyKHRoaXMuY2ZmKTt0aGlzLnNlYWNzPXRoaXMuY2ZmLnNlYWNzO3RyeXt0aGlzLmRhdGE9ci5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK3QubG9hZGVkTmFtZSk7dGhpcy5kYXRhPWV9dGhpcy5fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudH1nZXRDaGFyc2V0KCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJzZXQuY2hhcnNldH1nZXRHbHlwaE1hcHBpbmcoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9dGhpcy5wcm9wZXJ0aWVzLHtjaWRUb0dpZE1hcDphLGNNYXA6cn09dCxpPWUuY2hhcnNldC5jaGFyc2V0O2xldCBuLHM7aWYodC5jb21wb3NpdGUpe2xldCB0LG87aWYoYT8ubGVuZ3RoPjApe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MCxyPWEubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9YVtlXTt2b2lkIDAhPT1yJiYodFtyXT1lKX19bj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUuaXNDSURGb250KWZvcihzPTA7czxpLmxlbmd0aDtzKyspe2NvbnN0IGU9aVtzXTtvPXIuY2hhckNvZGVPZihlKTt2b2lkIDAhPT10Py5bb10mJihvPXRbb10pO25bb109c31lbHNlIGZvcihzPTA7czxlLmNoYXJTdHJpbmdzLmNvdW50O3MrKyl7bz1yLmNoYXJDb2RlT2Yocyk7bltvXT1zfXJldHVybiBufWxldCBvPWUuZW5jb2Rpbmc/ZS5lbmNvZGluZy5lbmNvZGluZzpudWxsO3QuaXNJbnRlcm5hbEZvbnQmJihvPXQuZGVmYXVsdEVuY29kaW5nKTtuPXR5cGUxRm9udEdseXBoTWFwcGluZyh0LG8saSk7cmV0dXJuIG59aGFzR2x5cGhJZChlKXtyZXR1cm4gdGhpcy5jZmYuaGFzR2x5cGhJZChlKX1fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl7Y29uc3R7Y2hhcnNldDplLGVuY29kaW5nOnR9PXRoaXMuY2ZmO2lmKCFlfHwhdClyZXR1cm47Y29uc3QgYT1lLmNoYXJzZXQscj10LmVuY29kaW5nLGk9W107Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQ+PTApe2NvbnN0IHI9YVt0XTtyJiYoaVtlXT1yKX19aS5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9aSl9fWZ1bmN0aW9uIGdldEZsb2F0MjE0KGUsdCl7cmV0dXJuIHJlYWRJbnQxNihlLHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MzI3Njg7dDwxMjQwP2E9MTA3OnQ8MzM5MDAmJihhPTExMzEpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsYSl7Y29uc3Qgcj0xPT09cmVhZFVpbnQxNihlLHQrMik/cmVhZFVpbnQzMihlLHQrOCk6cmVhZFVpbnQzMihlLHQrMTYpLGk9cmVhZFVpbnQxNihlLHQrcik7bGV0IG4scyxvO2lmKDQ9PT1pKXtyZWFkVWludDE2KGUsdCtyKzIpO2NvbnN0IGE9cmVhZFVpbnQxNihlLHQrcis2KT4+MTtzPXQrcisxNDtuPVtdO2ZvcihvPTA7bzxhO28rKyxzKz0yKW5bb109e2VuZDpyZWFkVWludDE2KGUscyl9O3MrPTI7Zm9yKG89MDtvPGE7bysrLHMrPTIpbltvXS5zdGFydD1yZWFkVWludDE2KGUscyk7Zm9yKG89MDtvPGE7bysrLHMrPTIpbltvXS5pZERlbHRhPXJlYWRVaW50MTYoZSxzKTtmb3Iobz0wO288YTtvKysscys9Mil7bGV0IHQ9cmVhZFVpbnQxNihlLHMpO2lmKDAhPT10KXtuW29dLmlkcz1bXTtmb3IobGV0IGE9MCxyPW5bb10uZW5kLW5bb10uc3RhcnQrMTthPHI7YSsrKXtuW29dLmlkc1thXT1yZWFkVWludDE2KGUscyt0KTt0Kz0yfX19cmV0dXJuIG59aWYoMTI9PT1pKXtjb25zdCBhPXJlYWRVaW50MzIoZSx0K3IrMTIpO3M9dCtyKzE2O249W107Zm9yKG89MDtvPGE7bysrKXt0PXJlYWRVaW50MzIoZSxzKTtuLnB1c2goe3N0YXJ0OnQsZW5kOnJlYWRVaW50MzIoZSxzKzQpLGlkRGVsdGE6cmVhZFVpbnQzMihlLHMrOCktdH0pO3MrPTEyfXJldHVybiBufXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtpfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IGk9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxhLXQpLHt9LHIpLnBhcnNlKCk7cmV0dXJue2dseXBoczppLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6aS50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczppLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6aS5pc0NJREZvbnQsZmRTZWxlY3Q6aS5mZFNlbGVjdCxmZEFycmF5OmkuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGE9dC5jb2RlUG9pbnRBdCgwKTtsZXQgcj0wLGk9MCxuPWUubGVuZ3RoLTE7Zm9yKDtpPG47KXtjb25zdCB0PWkrbisxPj4xO2E8ZVt0XS5zdGFydD9uPXQtMTppPXR9ZVtpXS5zdGFydDw9YSYmYTw9ZVtpXS5lbmQmJihyPWVbaV0uaWREZWx0YSsoZVtpXS5pZHM/ZVtpXS5pZHNbYS1lW2ldLnN0YXJ0XTphKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmEsZ2x5cGhJZDpyfX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsYSl7ZnVuY3Rpb24gbW92ZVRvKGUsYSl7cyYmdC5hZGQoR3Qscyk7cz1bZSxhXTt0LmFkZCgkdCxbZSxhXSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5hZGQoR3QsW2UsYV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsaSl7dC5hZGQoS3QsW2UsYSxyLGldKX1sZXQgcj0wO2NvbnN0IGk9cmVhZEludDE2KGUscik7bGV0IG4scz1udWxsLG89MCxjPTA7cis9MTA7aWYoaTwwKWRve249cmVhZFVpbnQxNihlLHIpO2NvbnN0IGk9cmVhZFVpbnQxNihlLHIrMik7cis9NDtsZXQgcyxsO2lmKDEmbil7aWYoMiZuKXtzPXJlYWRJbnQxNihlLHIpO2w9cmVhZEludDE2KGUscisyKX1lbHNle3M9cmVhZFVpbnQxNihlLHIpO2w9cmVhZFVpbnQxNihlLHIrMil9cis9NH1lbHNlIGlmKDImbil7cz1yZWFkSW50OChlLHIrKyk7bD1yZWFkSW50OChlLHIrKyl9ZWxzZXtzPWVbcisrXTtsPWVbcisrXX1pZigyJm4pe289cztjPWx9ZWxzZXtvPTA7Yz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZuKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmbil7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmbil7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tpXTtpZihnKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbaCxkLGYsdSxvLGNdKTtjb21waWxlR2x5ZihnLHQsYSk7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJm4pO2Vsc2V7Y29uc3QgdD1bXTtsZXQgYSxzO2ZvcihhPTA7YTxpO2ErKyl7dC5wdXNoKHJlYWRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK3JlYWRVaW50MTYoZSxyKTtjb25zdCBsPXQuYXQoLTEpKzEsaD1bXTtmb3IoO2gubGVuZ3RoPGw7KXtuPWVbcisrXTtsZXQgdD0xOzgmbiYmKHQrPWVbcisrXSk7Zm9yKDt0LS0gPjA7KWgucHVzaCh7ZmxhZ3M6bn0pfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDE4JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1yZWFkSW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgMjpvLT1lW3IrK107YnJlYWs7Y2FzZSAxODpvKz1lW3IrK119aFthXS54PW99Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMzYmaFthXS5mbGFncyl7Y2FzZSAwOmMrPXJlYWRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0OmMtPWVbcisrXTticmVhaztjYXNlIDM2OmMrPWVbcisrXX1oW2FdLnk9Y31sZXQgdT0wO2ZvcihyPTA7cjxpO3IrKyl7Y29uc3QgZT10W3JdLGk9aC5zbGljZSh1LGUrMSk7aWYoMSZpWzBdLmZsYWdzKWkucHVzaChpWzBdKTtlbHNlIGlmKDEmaS5hdCgtMSkuZmxhZ3MpaS51bnNoaWZ0KGkuYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooaVswXS54K2kuYXQoLTEpLngpLzIseTooaVswXS55K2kuYXQoLTEpLnkpLzJ9O2kudW5zaGlmdChlKTtpLnB1c2goZSl9bW92ZVRvKGlbMF0ueCxpWzBdLnkpO2ZvcihhPTEscz1pLmxlbmd0aDthPHM7YSsrKWlmKDEmaVthXS5mbGFncylsaW5lVG8oaVthXS54LGlbYV0ueSk7ZWxzZSBpZigxJmlbYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhpW2FdLngsaVthXS55LGlbYSsxXS54LGlbYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKGlbYV0ueCxpW2FdLnksKGlbYV0ueCtpW2ErMV0ueCkvMiwoaVthXS55K2lbYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLHIpe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe2MmJnQuYWRkKEd0LGMpO2M9W2UsYV07dC5hZGQoJHQsW2UsYV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGEpe3QuYWRkKEd0LFtlLGFdKX1mdW5jdGlvbiBiZXppZXJDdXJ2ZVRvKGUsYSxyLGksbixzKXt0LmFkZChWdCxbZSxhLHIsaSxuLHNdKX1jb25zdCBpPVtdO2xldCBuPTAscz0wLG89MCxjPW51bGw7IWZ1bmN0aW9uIHBhcnNlKGUpe2xldCBjPTA7Zm9yKDtjPGUubGVuZ3RoOyl7bGV0IGwsaCx1LGQsZixnLHAsbSxiLHk9ITEsdz1lW2MrK107c3dpdGNoKHcpe2Nhc2UgMTpjYXNlIDM6Y2FzZSAxODpjYXNlIDIzOm8rPWkubGVuZ3RoPj4xO3k9ITA7YnJlYWs7Y2FzZSA0OnMrPWkucG9wKCk7bW92ZVRvKG4scyk7eT0hMDticmVhaztjYXNlIDU6Zm9yKDtpLmxlbmd0aD4wOyl7bis9aS5zaGlmdCgpO3MrPWkuc2hpZnQoKTtsaW5lVG8obixzKX1icmVhaztjYXNlIDY6Zm9yKDtpLmxlbmd0aD4wOyl7bis9aS5zaGlmdCgpO2xpbmVUbyhuLHMpO2lmKDA9PT1pLmxlbmd0aClicmVhaztzKz1pLnNoaWZ0KCk7bGluZVRvKG4scyl9YnJlYWs7Y2FzZSA3OmZvcig7aS5sZW5ndGg+MDspe3MrPWkuc2hpZnQoKTtsaW5lVG8obixzKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7bis9aS5zaGlmdCgpO2xpbmVUbyhuLHMpfWJyZWFrO2Nhc2UgODpmb3IoO2kubGVuZ3RoPjA7KXtsPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKX1icmVhaztjYXNlIDEwOm09aS5wb3AoKTtiPW51bGw7aWYoYS5pc0NGRkNJREZvbnQpe2NvbnN0IGU9YS5mZFNlbGVjdC5nZXRGREluZGV4KHIpO2lmKGU+PTAmJmU8YS5mZEFycmF5Lmxlbmd0aCl7Y29uc3QgdD1hLmZkQXJyYXlbZV07bGV0IHI7dC5wcml2YXRlRGljdD8uc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe20rPWdldFN1YnJvdXRpbmVCaWFzKHIpO2I9clttXX19ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1lbHNlIGI9YS5zdWJyc1ttK2Euc3VicnNCaWFzXTtiJiZwYXJzZShiKTticmVhaztjYXNlIDExOnJldHVybjtjYXNlIDEyOnc9ZVtjKytdO3N3aXRjaCh3KXtjYXNlIDM0Omw9bitpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtmPXMraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHMsaCxmLG4sZik7bD1uK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLGYsaCxzLG4scyk7YnJlYWs7Y2FzZSAzNTpsPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTtsPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTtpLnBvcCgpO2JyZWFrO2Nhc2UgMzY6bD1uK2kuc2hpZnQoKTtmPXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCxmLGgsZyxuLGcpO2w9bitpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtwPWcraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLGcsaCxwLG4scyk7YnJlYWs7Y2FzZSAzNzpjb25zdCBlPW4sdD1zO2w9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2w9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oO3M9ZDtNYXRoLmFicyhuLWUpPk1hdGguYWJzKHMtdCk/bis9aS5zaGlmdCgpOnMrPWkuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5rbm93biBvcGVyYXRvcjogMTIgJHt3fWApfWJyZWFrO2Nhc2UgMTQ6aWYoaS5sZW5ndGg+PTQpe2NvbnN0IGU9aS5wb3AoKSxyPWkucG9wKCk7cz1pLnBvcCgpO249aS5wb3AoKTt0LnNhdmUoKTt0LnRyYW5zbGF0ZShuLHMpO2xldCBvPWxvb2t1cENtYXAoYS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoYS5nbHlwaE5hbWVNYXBbbHJbZV1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbby5nbHlwaElkXSx0LGEsby5nbHlwaElkKTt0LnJlc3RvcmUoKTtvPWxvb2t1cENtYXAoYS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoYS5nbHlwaE5hbWVNYXBbbHJbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbby5nbHlwaElkXSx0LGEsby5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOm8rPWkubGVuZ3RoPj4xO2MrPW8rNz4+Mzt5PSEwO2JyZWFrO2Nhc2UgMjE6cys9aS5wb3AoKTtuKz1pLnBvcCgpO21vdmVUbyhuLHMpO3k9ITA7YnJlYWs7Y2FzZSAyMjpuKz1pLnBvcCgpO21vdmVUbyhuLHMpO3k9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2kubGVuZ3RoPjI7KXtsPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKX1uKz1pLnNoaWZ0KCk7cys9aS5zaGlmdCgpO2xpbmVUbyhuLHMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtpLmxlbmd0aD42Oyl7bis9aS5zaGlmdCgpO3MrPWkuc2hpZnQoKTtsaW5lVG8obixzKX1sPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTticmVhaztjYXNlIDI2OmkubGVuZ3RoJTImJihuKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe2w9bjt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWg7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKX1icmVhaztjYXNlIDI3OmkubGVuZ3RoJTImJihzKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe2w9bitpLnNoaWZ0KCk7dT1zO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZDtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKX1icmVhaztjYXNlIDI4OmkucHVzaChyZWFkSW50MTYoZSxjKSk7Yys9MjticmVhaztjYXNlIDI5Om09aS5wb3AoKSthLmdzdWJyc0JpYXM7Yj1hLmdzdWJyc1ttXTtiJiZwYXJzZShiKTticmVhaztjYXNlIDMwOmZvcig7aS5sZW5ndGg+MDspe2w9bjt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCsoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7bD1uK2kuc2hpZnQoKTt1PXM7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7bj1oKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpfWJyZWFrO2Nhc2UgMzE6Zm9yKDtpLmxlbmd0aD4wOyl7bD1uK2kuc2hpZnQoKTt1PXM7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7bj1oKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2lmKDA9PT1pLmxlbmd0aClicmVhaztsPW47dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyl9YnJlYWs7ZGVmYXVsdDppZih3PDMyKXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5rbm93biBvcGVyYXRvcjogJHt3fWApO2lmKHc8MjQ3KWkucHVzaCh3LTEzOSk7ZWxzZSBpZih3PDI1MSlpLnB1c2goMjU2Kih3LTI0NykrZVtjKytdKzEwOCk7ZWxzZSBpZih3PDI1NSlpLnB1c2goMjU2Ki0ody0yNTEpLWVbYysrXS0xMDgpO2Vsc2V7aS5wdXNoKChlW2NdPDwyNHxlW2MrMV08PDE2fGVbYysyXTw8OHxlW2MrM10pLzY1NTM2KTtjKz00fX15JiYoaS5sZW5ndGg9MCl9fShlKX1jbGFzcyBDb21tYW5kc3tjbWRzPVtdO3RyYW5zZm9ybVN0YWNrPVtdO2N1cnJlbnRUcmFuc2Zvcm09WzEsMCwwLDEsMCwwXTthZGQoZSx0KXtpZih0KXtjb25zdHtjdXJyZW50VHJhbnNmb3JtOmF9PXRoaXM7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9MilVdGlsLmFwcGx5VHJhbnNmb3JtKHQsYSxlKTt0aGlzLmNtZHMucHVzaChlLC4uLnQpfWVsc2UgdGhpcy5jbWRzLnB1c2goZSl9dHJhbnNmb3JtKGUpe3RoaXMuY3VycmVudFRyYW5zZm9ybT1VdGlsLnRyYW5zZm9ybSh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0sZSl9dHJhbnNsYXRlKGUsdCl7dGhpcy50cmFuc2Zvcm0oWzEsMCwwLDEsZSx0XSl9c2F2ZSgpe3RoaXMudHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0uc2xpY2UoKSl9cmVzdG9yZSgpe3RoaXMuY3VycmVudFRyYW5zZm9ybT10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpfHxbMSwwLDAsMSwwLDBdfWdldFBhdGgoKXtyZXR1cm4gbmV3KEZlYXR1cmVUZXN0LmlzRmxvYXQxNkFycmF5U3VwcG9ydGVkP0Zsb2F0MTZBcnJheTpGbG9hdDMyQXJyYXkpKHRoaXMuY21kcyl9fWNsYXNzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcixpPXRoaXMuY29tcGlsZWRHbHlwaHNbYV07aWYodm9pZCAwPT09aSl7dHJ5e2k9dGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbYV0sYSl9Y2F0Y2goZSl7aT0iIjtyPWV9dGhpcy5jb21waWxlZEdseXBoc1thXT1pfXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XT8/PWE7aWYocil0aHJvdyByO3JldHVybiBpfWNvbXBpbGVHbHlwaChlLGEpe2lmKCFlPy5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4iIjtsZXQgcj10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KGEpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7cj10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHR9ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1hc3NlcnQoaXNOdW1iZXJBcnJheShyLDYpLCJFeHBlY3RlZCBhIHZhbGlkIGZvbnRNYXRyaXguIik7Y29uc3QgaT1uZXcgQ29tbWFuZHM7aS50cmFuc2Zvcm0oci5zbGljZSgpKTt0aGlzLmNvbXBpbGVHbHlwaEltcGwoZSxpLGEpO2kuYWRkKEp0KTtyZXR1cm4gaS5nZXRQYXRoKCl9Y29tcGlsZUdseXBoSW1wbCgpe3VucmVhY2hhYmxlKCJDaGlsZHJlbiBjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgdGhpcy4iKX1oYXNCdWlsdFBhdGgoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOmF9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO3JldHVybiB2b2lkIDAhPT10aGlzLmNvbXBpbGVkR2x5cGhzW2FdJiZ2b2lkIDAhPT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF19fWNsYXNzIFRydWVUeXBlQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKTt0aGlzLmdseXBocz1lO3RoaXMuY21hcD10fWNvbXBpbGVHbHlwaEltcGwoZSx0KXtjb21waWxlR2x5ZihlLHQsdGhpcyl9fWNsYXNzIFR5cGUyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFsuMDAxLDAsMCwuMDAxLDAsMF0pO3RoaXMuZ2x5cGhzPWUuZ2x5cGhzO3RoaXMuZ3N1YnJzPWUuZ3N1YnJzfHxbXTt0aGlzLnN1YnJzPWUuc3VicnN8fFtdO3RoaXMuY21hcD10O3RoaXMuZ2x5cGhOYW1lTWFwPWZyKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19Y2xhc3MgRm9udFJlbmRlcmVyRmFjdG9yeXtzdGF0aWMgY3JlYXRlKGUsdCl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmRhdGEpO2xldCByLGksbixzLG8sYztjb25zdCBsPXJlYWRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCxoPTEyO2U8bDtlKyssaCs9MTYpe2NvbnN0IGU9Ynl0ZXNUb1N0cmluZyhhLnN1YmFycmF5KGgsaCs0KSksbD1yZWFkVWludDMyKGEsaCs4KSx1PXJlYWRVaW50MzIoYSxoKzEyKTtzd2l0Y2goZSl7Y2FzZSJjbWFwIjpyPXBhcnNlQ21hcChhLGwpO2JyZWFrO2Nhc2UiZ2x5ZiI6aT1hLnN1YmFycmF5KGwsbCt1KTticmVhaztjYXNlImxvY2EiOm49YS5zdWJhcnJheShsLGwrdSk7YnJlYWs7Y2FzZSJoZWFkIjpjPXJlYWRVaW50MTYoYSxsKzE4KTtvPXJlYWRVaW50MTYoYSxsKzUwKTticmVhaztjYXNlIkNGRiAiOnM9cGFyc2VDZmYoYSxsLGwrdSx0KX19aWYoaSl7Y29uc3QgdD1jP1sxL2MsMCwwLDEvYywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGEpe2xldCByLGk7aWYoYSl7cj00O2k9cmVhZFVpbnQzMn1lbHNle3I9MjtpPShlLHQpPT4yKnJlYWRVaW50MTYoZSx0KX1jb25zdCBuPVtdO2xldCBzPWkodCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9aSh0LGEpO24ucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gbn0oaSxuLG8pLHIsdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKHMscixlLmZvbnRNYXRyaXgpfX1jb25zdCB6cj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2VbIkhlbHZldGljYS1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZS5TeW1ib2w9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2VbIlRpbWVzLUJvbGQiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZS5aYXBmRGluZ2JhdHM9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KX0pLCRyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IGk9bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLG49bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9pLmdldFVpbnQzMigwKToyKmkuZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9pLmdldFVpbnQzMihjKToyKmkuZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxuKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiBNYXRoLnN1bVByZWNpc2UodGhpcy5nbHlwaHMubWFwKGU9PmUuZ2V0U2l6ZSgpKzMmLTQpKX13cml0ZSgpe2NvbnN0IGU9dGhpcy5nZXRTaXplKCksdD1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKGUpKSxhPWU+MTMxMDcwLHI9YT80OjIsaT1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKCh0aGlzLmdseXBocy5sZW5ndGgrMSkqcikpO2E/aS5zZXRVaW50MzIoMCwwKTppLnNldFVpbnQxNigwLDApO2xldCBuPTAscz0wO2Zvcihjb25zdCBlIG9mIHRoaXMuZ2x5cGhzKXtuKz1lLndyaXRlKG4sdCk7bj1uKzMmLTQ7cys9cjthP2kuc2V0VWludDMyKHMsbik6aS5zZXRVaW50MTYocyxuPj4xKX1yZXR1cm57aXNMb2NhdGlvbkxvbmc6YSxsb2NhOm5ldyBVaW50OEFycmF5KGkuYnVmZmVyKSxnbHlmOm5ldyBVaW50OEFycmF5KHQuYnVmZmVyKX19c2NhbGUoZSl7Zm9yKGxldCB0PTAsYT10aGlzLmdseXBocy5sZW5ndGg7dDxhO3QrKyl0aGlzLmdseXBoc1t0XS5zY2FsZShlW3RdKX19Y2xhc3MgR2x5cGh7Y29uc3RydWN0b3Ioe2hlYWRlcjplPW51bGwsc2ltcGxlOnQ9bnVsbCxjb21wb3NpdGVzOmE9bnVsbH0pe3RoaXMuaGVhZGVyPWU7dGhpcy5zaW1wbGU9dDt0aGlzLmNvbXBvc2l0ZXM9YX1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdFthLHJdPUdseXBoSGVhZGVyLnBhcnNlKGUsdCk7ZSs9YTtpZihyLm51bWJlck9mQ29udG91cnM8MCl7Y29uc3QgYT1bXTtmb3IoOzspe2NvbnN0W3IsaV09Q29tcG9zaXRlR2x5cGgucGFyc2UoZSx0KTtlKz1yO2EucHVzaChpKTtpZighKDMyJmkuZmxhZ3MpKWJyZWFrfXJldHVybiBuZXcgR2x5cGgoe2hlYWRlcjpyLGNvbXBvc2l0ZXM6YX0pfWNvbnN0IGk9U2ltcGxlR2x5cGgucGFyc2UoZSx0LHIubnVtYmVyT2ZDb250b3Vycyk7cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsc2ltcGxlOml9KX1nZXRTaXplKCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGU9dGhpcy5zaW1wbGU/dGhpcy5zaW1wbGUuZ2V0U2l6ZSgpOk1hdGguc3VtUHJlY2lzZSh0aGlzLmNvbXBvc2l0ZXMubWFwKGU9PmUuZ2V0U2l6ZSgpKSk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfXdyaXRlKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGE9ZTtlKz10aGlzLmhlYWRlci53cml0ZShlLHQpO2lmKHRoaXMuc2ltcGxlKWUrPXRoaXMuc2ltcGxlLndyaXRlKGUsdCk7ZWxzZSBmb3IoY29uc3QgYSBvZiB0aGlzLmNvbXBvc2l0ZXMpZSs9YS53cml0ZShlLHQpO3JldHVybiBlLWF9c2NhbGUoZSl7aWYoIXRoaXMuaGVhZGVyKXJldHVybjtjb25zdCB0PSh0aGlzLmhlYWRlci54TWluK3RoaXMuaGVhZGVyLnhNYXgpLzI7dGhpcy5oZWFkZXIuc2NhbGUodCxlKTtpZih0aGlzLnNpbXBsZSl0aGlzLnNpbXBsZS5zY2FsZSh0LGUpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWEuc2NhbGUodCxlKX19Y2xhc3MgR2x5cGhIZWFkZXJ7Y29uc3RydWN0b3Ioe251bWJlck9mQ29udG91cnM6ZSx4TWluOnQseU1pbjphLHhNYXg6cix5TWF4Oml9KXt0aGlzLm51bWJlck9mQ29udG91cnM9ZTt0aGlzLnhNaW49dDt0aGlzLnlNaW49YTt0aGlzLnhNYXg9cjt0aGlzLnlNYXg9aX1zdGF0aWMgcGFyc2UoZSx0KXtyZXR1cm5bMTAsbmV3IEdseXBoSGVhZGVyKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiAxMH13cml0ZShlLHQpe3Quc2V0SW50MTYoZSx0aGlzLm51bWJlck9mQ29udG91cnMpO3Quc2V0SW50MTYoZSsyLHRoaXMueE1pbik7dC5zZXRJbnQxNihlKzQsdGhpcy55TWluKTt0LnNldEludDE2KGUrNix0aGlzLnhNYXgpO3Quc2V0SW50MTYoZSs4LHRoaXMueU1heCk7cmV0dXJuIDEwfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpO3RoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgQ29udG91cntjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSx4Q29vcmRpbmF0ZXM6dCx5Q29vcmRpbmF0ZXM6YX0pe3RoaXMueENvb3JkaW5hdGVzPXQ7dGhpcy55Q29vcmRpbmF0ZXM9YTt0aGlzLmZsYWdzPWV9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKHtjb250b3VyczplLGluc3RydWN0aW9uczp0fSl7dGhpcy5jb250b3Vycz1lO3RoaXMuaW5zdHJ1Y3Rpb25zPXR9c3RhdGljIHBhcnNlKGUsdCxhKXtjb25zdCByPVtdO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoZSk7ZSs9MjtyLnB1c2goYSl9Y29uc3QgaT1yW2EtMV0rMSxuPXQuZ2V0VWludDE2KGUpO2UrPTI7Y29uc3Qgcz1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrbik7ZSs9bjtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8aTtlKyssYSsrKXtsZXQgcj10LmdldFVpbnQ4KGUpO28ucHVzaChyKTtpZig4JnIpe2NvbnN0IGk9dC5nZXRVaW50OCgrK2UpO3JePTg7Zm9yKGxldCBlPTA7ZTxpO2UrKylvLnB1c2gocik7YSs9aX19Y29uc3QgYz1bXTtsZXQgbD1bXSxoPVtdLHU9W107Y29uc3QgZD1bXTtsZXQgZj0wLGc9MDtmb3IobGV0IGE9MDthPGk7YSsrKXtjb25zdCBpPW9bYV07aWYoMiZpKXtjb25zdCBhPXQuZ2V0VWludDgoZSsrKTtnKz0xNiZpP2E6LWE7bC5wdXNoKGcpfWVsc2UgaWYoMTYmaSlsLnB1c2goZyk7ZWxzZXtnKz10LmdldEludDE2KGUpO2UrPTI7bC5wdXNoKGcpfWlmKHJbZl09PT1hKXtmKys7Yy5wdXNoKGwpO2w9W119fWc9MDtmPTA7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1vW2FdO2lmKDQmaSl7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MzImaT9hOi1hO2gucHVzaChnKX1lbHNlIGlmKDMyJmkpaC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2gucHVzaChnKX11LnB1c2goMSZpfDY0JmkpO2lmKHJbZl09PT1hKXtsPWNbZl07ZisrO2QucHVzaChuZXcgQ29udG91cih7ZmxhZ3M6dSx4Q29vcmRpbmF0ZXM6bCx5Q29vcmRpbmF0ZXM6aH0pKTtoPVtdO3U9W119fXJldHVybiBuZXcgU2ltcGxlR2x5cGgoe2NvbnRvdXJzOmQsaW5zdHJ1Y3Rpb25zOnN9KX1nZXRTaXplKCl7bGV0IGU9Mip0aGlzLmNvbnRvdXJzLmxlbmd0aCsyK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCx0PTAsYT0wO2Zvcihjb25zdCByIG9mIHRoaXMuY29udG91cnMpe2UrPXIuZmxhZ3MubGVuZ3RoO2ZvcihsZXQgaT0wLG49ci54Q29vcmRpbmF0ZXMubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49ci54Q29vcmRpbmF0ZXNbaV0scz1yLnlDb29yZGluYXRlc1tpXTtsZXQgbz1NYXRoLmFicyhuLXQpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7dD1uO289TWF0aC5hYnMocy1hKTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO2E9c319cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBhPWUscj1bXSxpPVtdLG49W107bGV0IHM9MCxvPTA7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3Vycyl7Zm9yKGxldCBlPTAsdD1hLnhDb29yZGluYXRlcy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mbGFnc1tlXTtjb25zdCBjPWEueENvb3JkaW5hdGVzW2VdO2xldCBsPWMtcztpZigwPT09bCl7dHw9MTY7ci5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhsKTtpZihlPD0yNTUpe3R8PWw+PTA/MTg6MjtyLnB1c2goZSl9ZWxzZSByLnB1c2gobCl9cz1jO2NvbnN0IGg9YS55Q29vcmRpbmF0ZXNbZV07bD1oLW87aWYoMD09PWwpe3R8PTMyO2kucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzM2OjQ7aS5wdXNoKGUpfWVsc2UgaS5wdXNoKGwpfW89aDtuLnB1c2godCl9dC5zZXRVaW50MTYoZSxyLmxlbmd0aC0xKTtlKz0yfXQuc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofWZvcihjb25zdCBhIG9mIG4pdC5zZXRVaW50OChlKyssYSk7Zm9yKGxldCBhPTAsaT1yLmxlbmd0aDthPGk7YSsrKXtjb25zdCBpPXJbYV0scz1uW2FdO2lmKDImcyl0LnNldFVpbnQ4KGUrKyxpKTtlbHNlIGlmKCEoMTYmcykpe3Quc2V0SW50MTYoZSxpKTtlKz0yfX1mb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9aVthXSxzPW5bYV07aWYoNCZzKXQuc2V0VWludDgoZSsrLHIpO2Vsc2UgaWYoISgzMiZzKSl7dC5zZXRJbnQxNihlLHIpO2UrPTJ9fXJldHVybiBlLWF9c2NhbGUoZSx0KXtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKWlmKDAhPT1hLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKGxldCByPTAsaT1hLnhDb29yZGluYXRlcy5sZW5ndGg7cjxpO3IrKylhLnhDb29yZGluYXRlc1tyXT1NYXRoLnJvdW5kKGUrKGEueENvb3JkaW5hdGVzW3JdLWUpKnQpfX1jbGFzcyBDb21wb3NpdGVHbHlwaHtjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSxnbHlwaEluZGV4OnQsYXJndW1lbnQxOmEsYXJndW1lbnQyOnIsdHJhbnNmOmksaW5zdHJ1Y3Rpb25zOm59KXt0aGlzLmZsYWdzPWU7dGhpcy5nbHlwaEluZGV4PXQ7dGhpcy5hcmd1bWVudDE9YTt0aGlzLmFyZ3VtZW50Mj1yO3RoaXMudHJhbnNmPWk7dGhpcy5pbnN0cnVjdGlvbnM9bn1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBhPWUscj1bXTtsZXQgaT10LmdldFVpbnQxNihlKTtjb25zdCBuPXQuZ2V0VWludDE2KGUrMik7ZSs9NDtsZXQgcyxvO2lmKDEmaSl7aWYoMiZpKXtzPXQuZ2V0SW50MTYoZSk7bz10LmdldEludDE2KGUrMil9ZWxzZXtzPXQuZ2V0VWludDE2KGUpO289dC5nZXRVaW50MTYoZSsyKX1lKz00O2lePTF9ZWxzZXtpZigyJmkpe3M9dC5nZXRJbnQ4KGUpO289dC5nZXRJbnQ4KGUrMSl9ZWxzZXtzPXQuZ2V0VWludDgoZSk7bz10LmdldFVpbnQ4KGUrMSl9ZSs9Mn1pZig4Jmkpe3IucHVzaCh0LmdldFVpbnQxNihlKSk7ZSs9Mn1lbHNlIGlmKDY0Jmkpe3IucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKTtlKz00fWVsc2UgaWYoMTI4Jmkpe3IucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSk7ZSs9OH1sZXQgYz1udWxsO2lmKDI1NiZpKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7Yz1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrYSk7ZSs9YX1yZXR1cm5bZS1hLG5ldyBDb21wb3NpdGVHbHlwaCh7ZmxhZ3M6aSxnbHlwaEluZGV4Om4sYXJndW1lbnQxOnMsYXJndW1lbnQyOm8sdHJhbnNmOnIsaW5zdHJ1Y3Rpb25zOmN9KV19Z2V0U2l6ZSgpe2xldCBlPTQrMip0aGlzLnRyYW5zZi5sZW5ndGg7MjU2JnRoaXMuZmxhZ3MmJihlKz0yK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwoZSs9Mik6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwoZSs9Mik7cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBhPWU7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KHRoaXMuZmxhZ3N8PTEpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KHRoaXMuZmxhZ3N8PTEpO3Quc2V0VWludDE2KGUsdGhpcy5mbGFncyk7dC5zZXRVaW50MTYoZSsyLHRoaXMuZ2x5cGhJbmRleCk7ZSs9NDtpZigxJnRoaXMuZmxhZ3Mpe2lmKDImdGhpcy5mbGFncyl7dC5zZXRJbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldEludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZWxzZXt0LnNldFVpbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWUrPTR9ZWxzZXt0LnNldFVpbnQ4KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDgoZSsxLHRoaXMuYXJndW1lbnQyKTtlKz0yfWlmKDI1NiZ0aGlzLmZsYWdzKXt0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH19cmV0dXJuIGUtYX1zY2FsZShlLHQpe319ZnVuY3Rpb24gd3JpdGVJbnQxNihlLHQsYSl7ZVt0XT1hPj44JjI1NTtlW3QrMV09MjU1JmF9ZnVuY3Rpb24gd3JpdGVJbnQzMihlLHQsYSl7ZVt0XT1hPj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlRGF0YShlLHQsYSl7aWYoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpZS5zZXQoYSx0KTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgYSlmb3IobGV0IHI9MCxpPWEubGVuZ3RoO3I8aTtyKyspZVt0KytdPTI1NSZhLmNoYXJDb2RlQXQocik7ZWxzZSBmb3IoY29uc3QgciBvZiBhKWVbdCsrXT0yNTUmcn1jbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc2ZudD1lO3RoaXMudGFibGVzPU9iamVjdC5jcmVhdGUobnVsbCl9c3RhdGljIGdldFNlYXJjaFBhcmFtcyhlLHQpe2xldCBhPTEscj0wO2Zvcig7KGFeZSk+YTspe2E8PD0xO3IrK31jb25zdCBpPWEqdDtyZXR1cm57cmFuZ2U6aSxlbnRyeTpyLHJhbmdlU2hpZnQ6dCplLWl9fXRvQXJyYXkoKXtsZXQgZT10aGlzLnNmbnQ7Y29uc3QgdD10aGlzLnRhYmxlcyxhPU9iamVjdC5rZXlzKHQpO2Euc29ydCgpO2NvbnN0IHI9YS5sZW5ndGg7bGV0IGksbixzLG8sYyxsPTEyKzE2KnI7Y29uc3QgaD1bbF07Zm9yKGk9MDtpPHI7aSsrKXtvPXRbYVtpXV07bCs9KG8ubGVuZ3RoKzMmLTQpPj4+MDtoLnB1c2gobCl9Y29uc3QgdT1uZXcgVWludDhBcnJheShsKTtmb3IoaT0wO2k8cjtpKyspe289dFthW2ldXTt3cml0ZURhdGEodSxoW2ldLG8pfSJ0cnVlIj09PWUmJihlPXN0cmluZzMyKDY1NTM2KSk7dVswXT0yNTUmZS5jaGFyQ29kZUF0KDApO3VbMV09MjU1JmUuY2hhckNvZGVBdCgxKTt1WzJdPTI1NSZlLmNoYXJDb2RlQXQoMik7dVszXT0yNTUmZS5jaGFyQ29kZUF0KDMpO3dyaXRlSW50MTYodSw0LHIpO2NvbnN0IGQ9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMociwxNik7d3JpdGVJbnQxNih1LDYsZC5yYW5nZSk7d3JpdGVJbnQxNih1LDgsZC5lbnRyeSk7d3JpdGVJbnQxNih1LDEwLGQucmFuZ2VTaGlmdCk7bD0xMjtmb3IoaT0wO2k8cjtpKyspe2M9YVtpXTt1W2xdPTI1NSZjLmNoYXJDb2RlQXQoMCk7dVtsKzFdPTI1NSZjLmNoYXJDb2RlQXQoMSk7dVtsKzJdPTI1NSZjLmNoYXJDb2RlQXQoMik7dVtsKzNdPTI1NSZjLmNoYXJDb2RlQXQoMyk7bGV0IGU9MDtmb3Iobj1oW2ldLHM9aFtpKzFdO248cztuKz00KXtlPWUrcmVhZFVpbnQzMih1LG4pPj4+MH13cml0ZUludDMyKHUsbCs0LGUpO3dyaXRlSW50MzIodSxsKzgsaFtpXSk7d3JpdGVJbnQzMih1LGwrMTIsdFtjXS5sZW5ndGgpO2wrPTE2fXJldHVybiB1fWFkZFRhYmxlKGUsdCl7aWYoZSBpbiB0aGlzLnRhYmxlcyl0aHJvdyBuZXcgRXJyb3IoIlRhYmxlICIrZSsiIGFscmVhZHkgZXhpc3RzIik7dGhpcy50YWJsZXNbZV09dH19Y29uc3QgR3I9WzRdLFZyPVs1XSxLcj1bNl0sSnI9WzddLFlyPVs4XSxacj1bMTIsMzVdLFFyPVsxNF0sZWk9WzIxXSx0aT1bMjJdLGFpPVszMF0scmk9WzMxXTtjbGFzcyBUeXBlMUNoYXJTdHJpbmd7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTA7dGhpcy5sc2I9MDt0aGlzLmZsZXhpbmc9ITE7dGhpcy5vdXRwdXQ9W107dGhpcy5zdGFjaz1bXX1jb252ZXJ0KGUsdCxhKXtjb25zdCByPWUubGVuZ3RoO2xldCBpLG4scyxvPSExO2ZvcihsZXQgYz0wO2M8cjtjKyspe2xldCByPWVbY107aWYocjwzMil7MTI9PT1yJiYocj0ocjw8OCkrZVsrK2NdKTtzd2l0Y2gocil7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsR3IpO2JyZWFrO2Nhc2UgNTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixWcik7YnJlYWs7Y2FzZSA2Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLEtyKTticmVhaztjYXNlIDc6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsSnIpO2JyZWFrO2Nhc2UgODpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNixZcik7YnJlYWs7Y2FzZSAxMDppZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfXM9dGhpcy5zdGFjay5wb3AoKTtpZighdFtzXSl7bz0hMDticmVha31vPXRoaXMuY29udmVydCh0W3NdLHQsYSk7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gbztjYXNlIDEzOmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9aT10aGlzLnN0YWNrLnBvcCgpO249dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1uO3RoaXMud2lkdGg9aTt0aGlzLnN0YWNrLnB1c2goaSxuKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMix0aSk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKFFyWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhaztvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixlaSk7YnJlYWs7Y2FzZSAyMjppZih0aGlzLmZsZXhpbmcpe3RoaXMuc3RhY2sucHVzaCgwKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSx0aSk7YnJlYWs7Y2FzZSAzMDpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxhaSk7YnJlYWs7Y2FzZSAzMTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxyaSk7YnJlYWs7Y2FzZSAzMDc4OmlmKGEpe2NvbnN0IGU9dGhpcy5zdGFjay5hdCgtNSk7dGhpcy5zZWFjPXRoaXMuc3RhY2suc3BsaWNlKC00LDQpO3RoaXMuc2VhY1swXSs9dGhpcy5sc2ItZTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMCxRcil9ZWxzZSBvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxRcik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe289ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtpPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO249dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1uO3RoaXMud2lkdGg9aTt0aGlzLnN0YWNrLnB1c2goaSxuLGUpO289dGhpcy5leGVjdXRlQ29tbWFuZCgzLGVpKTticmVhaztjYXNlIDMwODQ6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31jb25zdCBjPXRoaXMuc3RhY2sucG9wKCksbD10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaChsL2MpO2JyZWFrO2Nhc2UgMzA4ODppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXM9dGhpcy5zdGFjay5wb3AoKTtjb25zdCBoPXRoaXMuc3RhY2sucG9wKCk7aWYoMD09PXMmJjM9PT1oKXtjb25zdCBlPXRoaXMuc3RhY2suc3BsaWNlKC0xNywxNyk7dGhpcy5zdGFjay5wdXNoKGVbMl0rZVswXSxlWzNdK2VbMV0sZVs0XSxlWzVdLGVbNl0sZVs3XSxlWzhdLGVbOV0sZVsxMF0sZVsxMV0sZVsxMl0sZVsxM10sZVsxNF0pO289dGhpcy5leGVjdXRlQ29tbWFuZCgxMyxaciwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09cyYmMD09PWgmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0Ondhcm4oJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYobylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK2NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytjXS0xMDg6KDI1NSZlWysrY10pPDwyNHwoMjU1JmVbKytjXSk8PDE2fCgyNTUmZVsrK2NdKTw8OHwyNTUmZVsrK2NdO3RoaXMuc3RhY2sucHVzaChyKX19cmV0dXJuIG99ZXhlY3V0ZUNvbW1hbmQoZSx0LGEpe2NvbnN0IHI9dGhpcy5zdGFjay5sZW5ndGg7aWYoZT5yKXJldHVybiEwO2NvbnN0IGk9ci1lO2ZvcihsZXQgZT1pO2U8cjtlKyspe2xldCB0PXRoaXMuc3RhY2tbZV07aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl0aGlzLm91dHB1dC5wdXNoKDI4LHQ+PjgmMjU1LDI1NSZ0KTtlbHNle3Q9NjU1MzYqdHwwO3RoaXMub3V0cHV0LnB1c2goMjU1LHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQpfX10aGlzLm91dHB1dC5wdXNoKC4uLnQpO2E/dGhpcy5zdGFjay5zcGxpY2UoaSxlKTp0aGlzLnN0YWNrLmxlbmd0aD0wO3JldHVybiExfX1mdW5jdGlvbiBpc0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTd8fGU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMn1mdW5jdGlvbiBkZWNyeXB0KGUsdCxhKXtpZihhPj1lLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IHIsaSxuPTB8dDtmb3Iocj0wO3I8YTtyKyspbj01Mjg0NSooZVtyXStuKSsyMjcxOSY2NTUzNTtjb25zdCBzPWUubGVuZ3RoLWEsbz1uZXcgVWludDhBcnJheShzKTtmb3Iocj1hLGk9MDtpPHM7cisrLGkrKyl7Y29uc3QgdD1lW3JdO29baV09dF5uPj44O249NTI4NDUqKHQrbikrMjI3MTkmNjU1MzV9cmV0dXJuIG99ZnVuY3Rpb24gaXNTcGVjaWFsKGUpe3JldHVybiA0Nz09PWV8fDkxPT09ZXx8OTM9PT1lfHwxMjM9PT1lfHwxMjU9PT1lfHw0MD09PWV8fDQxPT09ZX1jbGFzcyBUeXBlMVBhcnNlcntjb25zdHJ1Y3RvcihlLHQsYSl7aWYodCl7Y29uc3QgdD1lLmdldEJ5dGVzKCksYT0hKChpc0hleERpZ2l0KHRbMF0pfHxpc1doaXRlU3BhY2UodFswXSkpJiZpc0hleERpZ2l0KHRbMV0pJiZpc0hleERpZ2l0KHRbMl0pJiZpc0hleERpZ2l0KHRbM10pJiZpc0hleERpZ2l0KHRbNF0pJiZpc0hleERpZ2l0KHRbNV0pJiZpc0hleERpZ2l0KHRbNl0pJiZpc0hleERpZ2l0KHRbN10pKTtlPW5ldyBTdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3QgaT1lLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KGk+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8aTtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPGkmJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPGkpe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtuW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBuLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighaXNXaGl0ZVNwYWNlKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmIWlzV2hpdGVTcGFjZSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpLmxlbklWPTQ7Y29uc3Qgbj17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6aX19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPW4ucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjpuLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjpuLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlcigpO2JyZWFrO2Nhc2UiRXhwYW5zaW9uRmFjdG9yIjpuLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyKCl8fC4wNjticmVhaztjYXNlIkZvcmNlQm9sZCI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDppfW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6aSxjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PWk/bi5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOm4uY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKGkpO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gbn1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgcj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KHIpKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChyLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPWdldEVuY29kaW5nKHIpO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgbj10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KG5bM10sblsxXSk7ZS5kZXNjZW50PU1hdGgubWluKG5bMV0sblszXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLGk9dC5sZW5ndGgsbj1yLWk7bGV0IHM9YSxvPSExO2Zvcig7czxuOyl7bGV0IGE9MDtmb3IoO2E8aSYmZVtzK2FdPT09dFthXTspYSsrO2lmKGE+PWkpe3MrPWE7Zm9yKDtzPHImJmlzV2hpdGVTcGFjZShlW3NdKTspcysrO289ITA7YnJlYWt9cysrfXJldHVybntmb3VuZDpvLGxlbmd0aDpzfX1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxpPWEubGVuZ3RoMixuPXQucGVla0J5dGVzKDYpO2NvbnN0IHM9MTI4PT09blswXSYmMT09PW5bMV07aWYocyl7dC5za2lwKDYpO3I9bls1XTw8MjR8bls0XTw8MTZ8blszXTw8OHxuWzJdfWNvbnN0IG89ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGksbixzLG87dHJ5e2k9ZS5nZXRCeXRlcyh0KTtuPWkubGVuZ3RofWNhdGNoe31pZihuPT09dCl7cz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYocy5mb3VuZCYmcy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IFN0cmVhbShpKSxsZW5ndGg6dH19d2FybignSW52YWxpZCAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtlLnBvcz1yO2Zvcig7Oyl7cz1maW5kQmxvY2soZS5wZWVrQnl0ZXMoMjA0OCksYSwwKTtpZigwPT09cy5sZW5ndGgpYnJlYWs7ZS5wb3MrPXMubGVuZ3RoO2lmKHMuZm91bmQpe289ZS5wb3MtcjticmVha319ZS5wb3M9cjtpZihvKXJldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKG8pKSxsZW5ndGg6b307d2FybignVW5hYmxlIHRvIHJlY292ZXIgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdXNpbmcgYXMgaXMuJyk7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgVHlwZTFQYXJzZXIoby5zdHJlYW0sITEsd3IpLmV4dHJhY3RGb250SGVhZGVyKGEpO2lmKHMpe249dC5nZXRCeXRlcyg2KTtpPW5bNV08PDI0fG5bNF08PDE2fG5bM108PDh8blsyXX1jb25zdCBjPWZ1bmN0aW9uIGdldEVleGVjQmxvY2soZSx0KXtjb25zdCBhPWUuZ2V0Qnl0ZXMoKTtpZigwPT09YS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJnZXRFZXhlY0Jsb2NrIC0gbm8gZm9udCBwcm9ncmFtIGZvdW5kLiIpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxsPW5ldyBUeXBlMVBhcnNlcihjLnN0cmVhbSwhMCx3cikuZXh0cmFjdEZvbnRQcm9ncmFtKGEpO2Zvcihjb25zdCBlIGluIGwucHJvcGVydGllcylhW2VdPWwucHJvcGVydGllc1tlXTtjb25zdCBoPWwuY2hhcnN0cmluZ3MsdT10aGlzLmdldFR5cGUyQ2hhcnN0cmluZ3MoaCksZD10aGlzLmdldFR5cGUyU3VicnMobC5zdWJycyk7dGhpcy5jaGFyc3RyaW5ncz1oO3RoaXMuZGF0YT10aGlzLndyYXAoZSx1LHRoaXMuY2hhcnN0cmluZ3MsZCxhKTt0aGlzLnNlYWNzPXRoaXMuZ2V0U2VhY3MobC5jaGFyc3RyaW5ncyl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aCsxfWdldENoYXJzZXQoKXtjb25zdCBlPVsiLm5vdGRlZiJdO2Zvcihjb25zdHtnbHlwaE5hbWU6dH1vZiB0aGlzLmNoYXJzdHJpbmdzKWUucHVzaCh0KTtyZXR1cm4gZX1nZXRHbHlwaE1hcHBpbmcoZSl7Y29uc3QgdD10aGlzLmNoYXJzdHJpbmdzO2lmKGUuY29tcG9zaXRlKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXthW2UuY01hcC5jaGFyQ29kZU9mKHIpXT1yKzF9cmV0dXJuIGF9Y29uc3QgYT1bIi5ub3RkZWYiXTtsZXQgcixpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspYS5wdXNoKHRbaV0uZ2x5cGhOYW1lKTtjb25zdCBuPWUuYnVpbHRJbkVuY29kaW5nO2lmKG4pe3I9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgZSBpbiBuKXtpPWEuaW5kZXhPZihuW2VdKTtpPj0wJiYocltlXT1pKX19cmV0dXJuIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLHIsYSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMubnVtR2x5cGhzKXJldHVybiExO2lmKDA9PT1lKXJldHVybiEwO3JldHVybiB0aGlzLmNoYXJzdHJpbmdzW2UtMV0uY2hhcnN0cmluZy5sZW5ndGg+MH1nZXRTZWFjcyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2FdO3Iuc2VhYyYmKHRbYSsxXT1yLnNlYWMpfXJldHVybiB0fWdldFR5cGUyQ2hhcnN0cmluZ3MoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXQucHVzaChhLmNoYXJzdHJpbmcpO3JldHVybiB0fWdldFR5cGUyU3VicnMoZSl7bGV0IHQ9MDtjb25zdCBhPWUubGVuZ3RoO3Q9YTwxMTMzPzEwNzphPDMzNzY5PzExMzE6MzI3Njg7Y29uc3Qgcj1bXTtsZXQgaTtmb3IoaT0wO2k8dDtpKyspci5wdXNoKFsxMV0pO2ZvcihpPTA7aTxhO2krKylyLnB1c2goZVtpXSk7cmV0dXJuIHJ9d3JhcChlLHQsYSxyLGkpe2NvbnN0IG49bmV3IENGRjtuLmhlYWRlcj1uZXcgQ0ZGSGVhZGVyKDEsMCw0LDQpO24ubmFtZXM9W2VdO2NvbnN0IHM9bmV3IENGRlRvcERpY3Q7cy5zZXRCeU5hbWUoInZlcnNpb24iLDM5MSk7cy5zZXRCeU5hbWUoIk5vdGljZSIsMzkyKTtzLnNldEJ5TmFtZSgiRnVsbE5hbWUiLDM5Myk7cy5zZXRCeU5hbWUoIkZhbWlseU5hbWUiLDM5NCk7cy5zZXRCeU5hbWUoIldlaWdodCIsMzk1KTtzLnNldEJ5TmFtZSgiRW5jb2RpbmciLG51bGwpO3Muc2V0QnlOYW1lKCJGb250TWF0cml4IixpLmZvbnRNYXRyaXgpO3Muc2V0QnlOYW1lKCJGb250QkJveCIsaS5iYm94KTtzLnNldEJ5TmFtZSgiY2hhcnNldCIsbnVsbCk7cy5zZXRCeU5hbWUoIkNoYXJTdHJpbmdzIixudWxsKTtzLnNldEJ5TmFtZSgiUHJpdmF0ZSIsbnVsbCk7bi50b3BEaWN0PXM7Y29uc3Qgbz1uZXcgQ0ZGU3RyaW5ncztvLmFkZCgiVmVyc2lvbiAwLjExIik7by5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtvLmFkZChlKTtvLmFkZChlKTtvLmFkZCgiTWVkaXVtIik7bi5zdHJpbmdzPW87bi5nbG9iYWxTdWJySW5kZXg9bmV3IENGRkluZGV4O2NvbnN0IGM9dC5sZW5ndGgsbD1bIi5ub3RkZWYiXTtsZXQgaCx1O2ZvcihoPTA7aDxjO2grKyl7Y29uc3QgZT1hW2hdLmdseXBoTmFtZTstMT09PU9yLmluZGV4T2YoZSkmJm8uYWRkKGUpO2wucHVzaChlKX1uLmNoYXJzZXQ9bmV3IENGRkNoYXJzZXQoITEsMCxsKTtjb25zdCBkPW5ldyBDRkZJbmRleDtkLmFkZChbMTM5LDE0XSk7Zm9yKGg9MDtoPGM7aCsrKWQuYWRkKHRbaF0pO24uY2hhclN0cmluZ3M9ZDtjb25zdCBmPW5ldyBDRkZQcml2YXRlRGljdDtmLnNldEJ5TmFtZSgiU3VicnMiLG51bGwpO2NvbnN0IGc9WyJCbHVlVmFsdWVzIiwiT3RoZXJCbHVlcyIsIkZhbWlseUJsdWVzIiwiRmFtaWx5T3RoZXJCbHVlcyIsIlN0ZW1TbmFwSCIsIlN0ZW1TbmFwViIsIkJsdWVTaGlmdCIsIkJsdWVGdXp6IiwiQmx1ZVNjYWxlIiwiTGFuZ3VhZ2VHcm91cCIsIkV4cGFuc2lvbkZhY3RvciIsIkZvcmNlQm9sZCIsIlN0ZEhXIiwiU3RkVlciXTtmb3IoaD0wLHU9Zy5sZW5ndGg7aDx1O2grKyl7Y29uc3QgZT1nW2hdO2lmKCEoZSBpbiBpLnByaXZhdGVEYXRhKSljb250aW51ZTtjb25zdCB0PWkucHJpdmF0ZURhdGFbZV07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9dC5sZW5ndGgtMTtlPjA7ZS0tKXRbZV0tPXRbZS0xXTtmLnNldEJ5TmFtZShlLHQpfW4udG9wRGljdC5wcml2YXRlRGljdD1mO2NvbnN0IHA9bmV3IENGRkluZGV4O2ZvcihoPTAsdT1yLmxlbmd0aDtoPHU7aCsrKXAuYWRkKHJbaF0pO2Yuc3VicnNJbmRleD1wO3JldHVybiBuZXcgQ0ZGQ29tcGlsZXIobikuY29tcGlsZSgpfX1jb25zdCBpaT1bWzU3MzQ0LDYzNzQzXSxbMTA0ODU3NiwxMTE0MTA5XV0sbmk9MWUzLHNpPVsiYXNjZW50IiwiYmJveCIsImJsYWNrIiwiYm9sZCIsImNoYXJQcm9jT3BlcmF0b3JMaXN0IiwiY3NzRm9udEluZm8iLCJkYXRhIiwiZGVmYXVsdFZNZXRyaWNzIiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCIsImRpc2FibGVGb250RmFjZSIsImZhbGxiYWNrTmFtZSIsImZvbnRFeHRyYVByb3BlcnRpZXMiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzeXN0ZW1Gb250SW5mbyIsInZlcnRpY2FsIl0sb2k9WyJjTWFwIiwiY29tcG9zaXRlIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwic3VidHlwZSIsInRvRm9udENoYXIiLCJ0b1VuaWNvZGUiLCJ0eXBlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09dFswXSlyZXR1cm47Y29uc3QgYT0uMDAxL2UuZm9udE1hdHJpeFswXSxyPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIHIpcltlXSo9YTtlLmRlZmF1bHRXaWR0aCo9YX1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBhIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKGEpfHwodFthXT1lLmZhbGxiYWNrVG9Vbmljb2RlW2FdKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsYSxyLGksbixzLG8sYyl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1hO3RoaXMuYWNjZW50PXI7dGhpcy53aWR0aD1pO3RoaXMudm1ldHJpYz1uO3RoaXMub3BlcmF0b3JMaXN0SWQ9czt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWN9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PXlyLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IGE9ZS5tYXRjaChicikscj17aXNXaGl0ZXNwYWNlOiEhYT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhYT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWE/LlszXX07eXIuc2V0KGUscik7cmV0dXJuIHJ9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGEpe2VbdCsxXT1hO2VbdF09YT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBhPShlPDw4KSt0O3JldHVybiAzMjc2OCZhP2EtNjU1MzY6YX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe3JldHVybiJ0dGNmIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHt0eXBlOnQsc3VidHlwZTphLGNvbXBvc2l0ZTpyfSl7bGV0IGksbjtpZihmdW5jdGlvbiBpc1RydWVUeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PXJlYWRVaW50MzIodCwwKXx8InRydWUiPT09Ynl0ZXNUb1N0cmluZyh0KX0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSlpPXI/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe3JldHVybiJPVFRPIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfShlKSlpPXI/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSkpaT1yPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7ZWxzZSBpZihmdW5jdGlvbiBpc0NGRkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gdFswXT49MSYmdFszXT49MSYmdFszXTw9NH0oZSkpaWYocil7aT0iQ0lERm9udFR5cGUwIjtuPSJDSURGb250VHlwZTBDIn1lbHNle2k9Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtuPSJUeXBlMUMifWVsc2V7d2FybigiZ2V0Rm9udEZpbGVUeXBlOiBVbmFibGUgdG8gZGV0ZWN0IGNvcnJlY3QgZm9udCBmaWxlIFR5cGUvU3VidHlwZS4iKTtpPXQ7bj1hfXJldHVybltpLG5dfWZ1bmN0aW9uIGFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoZSx0KXtmb3IoY29uc3QgYSBpbiB0KWVbK2FdPXRbYV19ZnVuY3Rpb24gYnVpbGRUb0ZvbnRDaGFyKGUsdCxhKXtjb25zdCByPVtdO2xldCBpO2ZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKyl7aT1nZXRVbmljb2RlRm9yR2x5cGgoZVthXSx0KTstMSE9PWkmJihyW2FdPWkpfWZvcihjb25zdCBlIGluIGEpe2k9Z2V0VW5pY29kZUZvckdseXBoKGFbZV0sdCk7LTEhPT1pJiYoclsrZV09aSl9cmV0dXJuIHJ9ZnVuY3Rpb24gaXNNYWNOYW1lUmVjb3JkKGUpe3JldHVybiAxPT09ZS5wbGF0Zm9ybSYmMD09PWUuZW5jb2RpbmcmJjA9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGlzV2luTmFtZVJlY29yZChlKXtyZXR1cm4gMz09PWUucGxhdGZvcm0mJjE9PT1lLmVuY29kaW5nJiYxMDMzPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxhPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCByPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3Iocik7d2FybihyKTtyZXR1cm4gdH1mdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGUsdCxhLHIpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKSxuPW5ldyBNYXAscz1bXSxvPW5ldyBTZXQ7bGV0IGM9MDtsZXQgbD1paVtjXVswXSxoPWlpW2NdWzFdO2NvbnN0IGlzSW5Qcml2YXRlQXJlYT1lPT5paVswXVswXTw9ZSYmZTw9aWlbMF1bMV18fGlpWzFdWzBdPD1lJiZlPD1paVsxXVsxXTtsZXQgdT1udWxsO2Zvcihjb25zdCBkIGluIGUpe2xldCBmPWVbZF07aWYoIXQoZikpY29udGludWU7aWYobD5oKXtjKys7aWYoYz49aWkubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31sPWlpW2NdWzBdO2g9aWlbY11bMV19Y29uc3QgZz1sKys7MD09PWYmJihmPWEpO2xldCBwPXIuZ2V0KGQpO2lmKCJzdHJpbmciPT10eXBlb2YgcClpZigxPT09cC5sZW5ndGgpcD1wLmNvZGVQb2ludEF0KDApO2Vsc2V7aWYoIXUpe3U9bmV3IE1hcDtmb3IobGV0IGU9NjQyNTY7ZTw9NjQzMzU7ZSsrKXtjb25zdCB0PVN0cmluZy5mcm9tQ2hhckNvZGUoZSkubm9ybWFsaXplKCJORktEIik7dC5sZW5ndGg+MSYmdS5zZXQodCxlKX19cD11LmdldChwKXx8cC5jb2RlUG9pbnRBdCgwKX1pZihwJiYhaXNJblByaXZhdGVBcmVhKHApJiYhby5oYXMoZikpe24uc2V0KHAsZik7by5hZGQoZil9aVtnXT1mO3NbZF09Z31yZXR1cm57dG9Gb250Q2hhcjpzLGNoYXJDb2RlVG9HbHlwaElkOmksdG9Vbmljb2RlRXh0cmFNYXA6bixuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmx9fWZ1bmN0aW9uIGNyZWF0ZUNtYXBUYWJsZShlLHQsYSl7Y29uc3Qgcj1mdW5jdGlvbiBnZXRSYW5nZXMoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGNvbnN0IHQgaW4gZSllW3RdPj1hfHxyLnB1c2goe2ZvbnRDaGFyQ29kZTowfHQsZ2x5cGhJZDplW3RdfSk7aWYodClmb3IoY29uc3RbZSxpXW9mIHQpaT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6ZSxnbHlwaElkOml9KTswPT09ci5sZW5ndGgmJnIucHVzaCh7Zm9udENoYXJDb2RlOjAsZ2x5cGhJZDowfSk7ci5zb3J0KChlLHQpPT5lLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZSk7Y29uc3QgaT1bXSxuPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8bjspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8biYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31pLnB1c2goW3QscyxhXSl9cmV0dXJuIGl9KGUsdCxhKSxpPXIuYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgbixzLG8sYyxsPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIitzdHJpbmczMig0KzgqaSk7Zm9yKG49ci5sZW5ndGgtMTtuPj0wJiYhKHJbbl1bMF08PTY1NTM1KTstLW4pO2NvbnN0IGg9bisxO3Jbbl1bMF08NjU1MzUmJjY1NTM1PT09cltuXVsxXSYmKHJbbl1bMV09NjU1MzQpO2NvbnN0IHU9cltuXVsxXTw2NTUzNT8xOjAsZD1oK3UsZj1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhkLDIpO2xldCBnLHAsbSxiLHk9IiIsdz0iIix4PSIiLFM9IiIsaz0iIixDPTA7Zm9yKG49MCxzPWg7bjxzO24rKyl7Zz1yW25dO3A9Z1swXTttPWdbMV07eSs9c3RyaW5nMTYocCk7dys9c3RyaW5nMTYobSk7Yj1nWzJdO2xldCBlPSEwO2ZvcihvPTEsYz1iLmxlbmd0aDtvPGM7KytvKWlmKGJbb10hPT1iW28tMV0rMSl7ZT0hMTticmVha31pZihlKXt4Kz1zdHJpbmcxNihiWzBdLXAmNjU1MzUpO1MrPXN0cmluZzE2KDApfWVsc2V7Y29uc3QgZT0yKihkLW4pKzIqQztDKz1tLXArMTt4Kz1zdHJpbmcxNigwKTtTKz1zdHJpbmcxNihlKTtmb3Iobz0wLGM9Yi5sZW5ndGg7bzxjOysrbylrKz1zdHJpbmcxNihiW29dKX19aWYodT4wKXt3Kz0iw7/DvyI7eSs9IsO/w78iO3grPSJcMAEiO1MrPSJcMFwwIn1jb25zdCB2PSJcMFwwIitzdHJpbmcxNigyKmQpK3N0cmluZzE2KGYucmFuZ2UpK3N0cmluZzE2KGYuZW50cnkpK3N0cmluZzE2KGYucmFuZ2VTaGlmdCkrdysiXDBcMCIreSt4K1MraztsZXQgRj0iIixUPSIiO2lmKGk+MSl7bCs9IlwwA1wwXG4iK3N0cmluZzMyKDQrOCppKzQrdi5sZW5ndGgpO0Y9IiI7Zm9yKG49MCxzPXIubGVuZ3RoO248cztuKyspe2c9cltuXTtwPWdbMF07Yj1nWzJdO2xldCBlPWJbMF07Zm9yKG89MSxjPWIubGVuZ3RoO288YzsrK28paWYoYltvXSE9PWJbby0xXSsxKXttPWdbMF0rby0xO0YrPXN0cmluZzMyKHApK3N0cmluZzMyKG0pK3N0cmluZzMyKGUpO3A9bSsxO2U9YltvXX1GKz1zdHJpbmczMihwKStzdHJpbmczMihnWzFdKStzdHJpbmczMihlKX1UPSJcMFxmXDBcMCIrc3RyaW5nMzIoRi5sZW5ndGgrMTYpKyJcMFwwXDBcMCIrc3RyaW5nMzIoRi5sZW5ndGgvMTIpfXJldHVybiBsKyJcMAQiK3N0cmluZzE2KHYubGVuZ3RoKzQpK3YrVCtGfWZ1bmN0aW9uIGNyZWF0ZU9TMlRhYmxlKGUsdCxhKXthfHw9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IHI9MCxpPTAsbj0wLHM9MCxvPW51bGwsYz0wLGw9LTE7aWYodCl7Zm9yKGxldCBlIGluIHQpe2V8PTA7KG8+ZXx8IW8pJiYobz1lKTtjPGUmJihjPWUpO2w9Z2V0VW5pY29kZVJhbmdlRm9yKGUsbCk7aWYobDwzMilyfD0xPDxsO2Vsc2UgaWYobDw2NClpfD0xPDxsLTMyO2Vsc2UgaWYobDw5NilufD0xPDxsLTY0O2Vsc2V7aWYoIShsPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtzfD0xPDxsLTk2fX1jPjY1NTM1JiYoYz02NTUzNSl9ZWxzZXtvPTA7Yz0yNTV9Y29uc3QgaD1lLmJib3h8fFswLDAsMCwwXSx1PWEudW5pdHNQZXJFbXx8KGUuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLmUuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyksZD1lLmFzY2VudFNjYWxlZD8xOnUvbmksZj1hLmFzY2VudHx8TWF0aC5yb3VuZChkKihlLmFzY2VudHx8aFszXSkpO2xldCBnPWEuZGVzY2VudHx8TWF0aC5yb3VuZChkKihlLmRlc2NlbnR8fGhbMV0pKTtnPjAmJmUuZGVzY2VudD4wJiZoWzFdPDAmJihnPS1nKTtjb25zdCBwPWEueU1heHx8ZixtPS1hLnlNaW58fC1nO3JldHVybiJcMAMCJAHDtFwwBVwwXDACwooCwrtcMFwwXDDCjALCigLCu1wwXDABw59ceDAwMQECXDBcMFwwXDAGIitTdHJpbmcuZnJvbUNoYXJDb2RlKGUuZml4ZWRQaXRjaD85OjApKyJcMFwwXDBcMFwwXDAiK3N0cmluZzMyKHIpK3N0cmluZzMyKGkpK3N0cmluZzMyKG4pK3N0cmluZzMyKHMpKyIqMjEqIitzdHJpbmcxNihlLml0YWxpY0FuZ2xlPzE6MCkrc3RyaW5nMTYob3x8ZS5maXJzdENoYXIpK3N0cmluZzE2KGN8fGUubGFzdENoYXIpK3N0cmluZzE2KGYpK3N0cmluZzE2KGcpKyJcMGQiK3N0cmluZzE2KHApK3N0cmluZzE2KG0pKyJcMFwwXDBcMFwwXDBcMFwwIitzdHJpbmcxNihlLnhIZWlnaHQpK3N0cmluZzE2KGUuY2FwSGVpZ2h0KStzdHJpbmcxNigwKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrIlwwAyJ9ZnVuY3Rpb24gY3JlYXRlUG9zdFRhYmxlKGUpe3JldHVybiJcMANcMFwwIitzdHJpbmczMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKSsiXDBcMFwwXDAiK3N0cmluZzMyKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgaSxuLHMsbyxjO2ZvcihpPTAsbj1hLmxlbmd0aDtpPG47aSsrKXtjPXRbMV1baV18fGFbaV07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3IoaT0wLG49aC5sZW5ndGg7aTxuO2krKyl7Y29uc3QgZT1sW2ldO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtpXSt1W2ldK2RbaV0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9Y2xhc3MgRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm5hbWU9ZTt0aGlzLnBzTmFtZT1udWxsO3RoaXMubWltZXR5cGU9bnVsbDt0aGlzLmRpc2FibGVGb250RmFjZT1yLmRpc2FibGVGb250RmFjZTt0aGlzLmZvbnRFeHRyYVByb3BlcnRpZXM9ci5mb250RXh0cmFQcm9wZXJ0aWVzO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGk9ISEoYS5mbGFncyZTcik7aWYoIWkmJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9THIoKSxhPVVyKCkscj1qcigpO2Zvcihjb25zdCBuIG9mIGUuc3BsaXQoIisiKSl7bGV0IGU9bi5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKTtlPXRbZV18fGFbZV18fGU7ZT1lLnNwbGl0KCItIiwxKVswXTtpZihyW2VdKXtpPSEwO2JyZWFrfX19dGhpcy5pc1NlcmlmRm9udD1pO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoYS5mbGFncyZBcik7dGhpcy5pc01vbm9zcGFjZT0hIShhLmZsYWdzJnhyKTtsZXR7dHlwZTpuLHN1YnR5cGU6c309YTt0aGlzLnR5cGU9bjt0aGlzLnN1YnR5cGU9czt0aGlzLnN5c3RlbUZvbnRJbmZvPWEuc3lzdGVtRm9udEluZm87Y29uc3Qgbz1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW87dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9b1sxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWEuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9YS5jb21wb3NpdGU7dGhpcy5jTWFwPWEuY01hcDt0aGlzLmNhcEhlaWdodD1hLmNhcEhlaWdodC9uaTt0aGlzLmFzY2VudD1hLmFzY2VudC9uaTt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L25pO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeDt0aGlzLmJib3g9YS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWEuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09YS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGEuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWEuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFhLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9YS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1hLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1bbixzXT1nZXRGb250RmlsZVR5cGUodCxhKTtuPT09dGhpcy50eXBlJiZzPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke259LyR7c30uYCk7bGV0IGM7dHJ5e3N3aXRjaChuKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IHI9IlR5cGUxQyI9PT1zfHwiQ0lERm9udFR5cGUwQyI9PT1zP25ldyBDRkZGb250KHQsYSk6bmV3IFR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUscixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTthZGp1c3RXaWR0aHMoYSk7dGhpcy5pc09wZW5UeXBlJiYobj0iT3BlblR5cGUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgRm9udCAke259IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7d2FybihlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMudHlwZT1uO3RoaXMuc3VidHlwZT1zO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJlbmRlcmVyIixGb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLHdyKSl9ZXhwb3J0RGF0YSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgdCBvZiBzaSl7Y29uc3QgYT10aGlzW3RdO3ZvaWQgMCE9PWEmJihlW3RdPWEpfWlmKCF0aGlzLmZvbnRFeHRyYVByb3BlcnRpZXMpcmV0dXJue2RhdGE6ZX07Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIG9mIG9pKXtjb25zdCBhPXRoaXNbZV07dm9pZCAwIT09YSYmKHRbZV09YSl9cmV0dXJue2RhdGE6ZSxleHRyYTp0fX1mYWxsYmFja1RvU3lzdGVtRm9udChlKXt0aGlzLm1pc3NpbmdGaWxlPSEwO2NvbnN0e25hbWU6dCx0eXBlOmF9PXRoaXM7bGV0IHI9bm9ybWFsaXplRm9udE5hbWUodCk7Y29uc3QgaT1McigpLG49VXIoKSxzPSEhaVtyXSxvPSEoIW5bcl18fCFpW25bcl1dKTtyPWlbcl18fG5bcl18fHI7Y29uc3QgYz0kcigpW3JdO2lmKGMpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWMuYXNjZW50L25pKTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PWMuZGVzY2VudC9uaSk7aXNOYU4odGhpcy5jYXBIZWlnaHQpJiYodGhpcy5jYXBIZWlnaHQ9Yy5jYXBIZWlnaHQvbmkpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHIpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHIpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCBsPS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghc3x8bCkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigoc3x8bykmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLHFyKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAocixIcigpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAocixXcigpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1yW2VdO3ZvaWQgMD09PWFbaV0mJihyWytlXT10KX0pfXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtyWytlXT10fSk7dGhpcy50b0ZvbnRDaGFyPXI7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChyKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KHIpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIodXIsZnIoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QocikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihkcixncigpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoc3x8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsZnIoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PWF8fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24odCxhKXtlWyt0XT1hfSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPWZyKCksYT1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCh0LHIpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBhPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PWEmJihyPWEpfWFbK3RdPXJ9KTt0aGlzLmNvbXBvc2l0ZSYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcCYmL1RhaG9tYXxWZXJkYW5hL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLHFyKCkpO3RoaXMudG9Gb250Q2hhcj1hfWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPXIuc3BsaXQoIi0iLDEpWzBdfWNoZWNrQW5kUmVwYWlyKGUsdCxhKXtjb25zdCByPVsiT1MvMiIsImNtYXAiLCJoZWFkIiwiaGhlYSIsImhtdHgiLCJtYXhwIiwibmFtZSIsInBvc3QiLCJsb2NhIiwiZ2x5ZiIsImZwZ20iLCJwcmVwIiwiY3Z0ICIsIkNGRiAiXTtmdW5jdGlvbiByZWFkVGFibGVzKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2FbIk9TLzIiXT1udWxsO2EuY21hcD1udWxsO2EuaGVhZD1udWxsO2EuaGhlYT1udWxsO2EuaG10eD1udWxsO2EubWF4cD1udWxsO2EubmFtZT1udWxsO2EucG9zdD1udWxsO2ZvcihsZXQgaT0wO2k8dDtpKyspe2NvbnN0IHQ9cmVhZFRhYmxlRW50cnkoZSk7ci5pbmNsdWRlcyh0LnRhZykmJigwIT09dC5sZW5ndGgmJihhW3QudGFnXT10KSl9cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFRhYmxlRW50cnkoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KSxhPWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLGk9ZS5nZXRJbnQzMigpPj4+MCxuPWUucG9zO2UucG9zPWUuc3RhcnR8fDA7ZS5za2lwKHIpO2NvbnN0IHM9ZS5nZXRCeXRlcyhpKTtlLnBvcz1uO2lmKCJoZWFkIj09PXQpe3NbOF09c1s5XT1zWzEwXT1zWzExXT0wO3NbMTddfD0zMn1yZXR1cm57dGFnOnQsY2hlY2tzdW06YSxsZW5ndGg6aSxvZmZzZXQ6cixkYXRhOnN9fWZ1bmN0aW9uIHJlYWRPcGVuVHlwZUhlYWRlcihlKXtyZXR1cm57dmVyc2lvbjplLmdldFN0cmluZyg0KSxudW1UYWJsZXM6ZS5nZXRVaW50MTYoKSxzZWFyY2hSYW5nZTplLmdldFVpbnQxNigpLGVudHJ5U2VsZWN0b3I6ZS5nZXRVaW50MTYoKSxyYW5nZVNoaWZ0OmUuZ2V0VWludDE2KCl9fWZ1bmN0aW9uIHNhbml0aXplR2x5cGgoZSx0LGEscixpLG4pe2NvbnN0IHM9e2xlbmd0aDowLHNpemVPZkluc3RydWN0aW9uczowfTtpZih0PDB8fHQ+PWUubGVuZ3RofHxhPmUubGVuZ3RofHxhLXQ8PTEyKXJldHVybiBzO2NvbnN0IG89ZS5zdWJhcnJheSh0LGEpLGM9c2lnbmVkSW50MTYob1syXSxvWzNdKSxsPXNpZ25lZEludDE2KG9bNF0sb1s1XSksaD1zaWduZWRJbnQxNihvWzZdLG9bN10pLHU9c2lnbmVkSW50MTYob1s4XSxvWzldKTtpZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobywyLGgpO3dyaXRlU2lnbmVkSW50MTYobyw2LGMpfWlmKGw+dSl7d3JpdGVTaWduZWRJbnQxNihvLDQsdSk7d3JpdGVTaWduZWRJbnQxNihvLDgsbCl9Y29uc3QgZD1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGQ8MCl7aWYoZDwtMSlyZXR1cm4gcztyLnNldChvLGkpO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBmLGc9MTAscD0wO2ZvcihmPTA7ZjxkO2YrKyl7cD0ob1tnXTw8OHxvW2crMV0pKzE7Zys9Mn1jb25zdCBtPWcsYj1vW2ddPDw4fG9bZysxXTtzLnNpemVPZkluc3RydWN0aW9ucz1iO2crPTIrYjtjb25zdCB5PWc7bGV0IHc9MDtmb3IoZj0wO2Y8cDtmKyspe2NvbnN0IGU9b1tnKytdOzE5MiZlJiYob1tnLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7dys9cjtpZig4JmUpe2NvbnN0IGU9b1tnKytdOzA9PT1lJiYob1tnLTFdXj04KTtmKz1lO3crPWUqcn19aWYoMD09PXcpcmV0dXJuIHM7bGV0IHg9Zyt3O2lmKHg+by5sZW5ndGgpcmV0dXJuIHM7aWYoIW4mJmI+MCl7ci5zZXQoby5zdWJhcnJheSgwLG0pLGkpO3Iuc2V0KFswLDBdLGkrbSk7ci5zZXQoby5zdWJhcnJheSh5LHgpLGkrbSsyKTt4LT1iO28ubGVuZ3RoLXg+MyYmKHg9eCszJi00KTtzLmxlbmd0aD14O3JldHVybiBzfWlmKG8ubGVuZ3RoLXg+Myl7eD14KzMmLTQ7ci5zZXQoby5zdWJhcnJheSgwLHgpLGkpO3MubGVuZ3RoPXg7cmV0dXJuIHN9ci5zZXQobyxpKTtzLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gc31mdW5jdGlvbiByZWFkTmFtZVRhYmxlKGUpe2NvbnN0IGE9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPWE7Y29uc3Qgcj1bW10sW11dLGk9W10sbj1lLmxlbmd0aCxzPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybltyLGldO2NvbnN0IG89dC5nZXRVaW50MTYoKSxjPXQuZ2V0VWludDE2KCk7bGV0IGwsaDtmb3IobD0wO2w8byYmdC5wb3MrMTI8PXM7bCsrKXtjb25zdCBlPXtwbGF0Zm9ybTp0LmdldFVpbnQxNigpLGVuY29kaW5nOnQuZ2V0VWludDE2KCksbGFuZ3VhZ2U6dC5nZXRVaW50MTYoKSxuYW1lOnQuZ2V0VWludDE2KCksbGVuZ3RoOnQuZ2V0VWludDE2KCksb2Zmc2V0OnQuZ2V0VWludDE2KCl9Oyhpc01hY05hbWVSZWNvcmQoZSl8fGlzV2luTmFtZVJlY29yZChlKSkmJmkucHVzaChlKX1mb3IobD0wLGg9aS5sZW5ndGg7bDxoO2wrKyl7Y29uc3QgZT1pW2xdO2lmKGUubGVuZ3RoPD0wKWNvbnRpbnVlO2NvbnN0IG49YStjK2Uub2Zmc2V0O2lmKG4rZS5sZW5ndGg+cyljb250aW51ZTt0LnBvcz1uO2NvbnN0IG89ZS5uYW1lO2lmKGUuZW5jb2Rpbmcpe2xldCBhPSIiO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldFVpbnQxNigpKTtyWzFdW29dPWF9ZWxzZSByWzBdW29dPXQuZ2V0U3RyaW5nKGUubGVuZ3RoKX1yZXR1cm5bcixpXX1jb25zdCBpPVswLDAsMCwwLDAsMCwwLDAsLTIsLTIsLTIsLTIsMCwwLC0yLC01LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLC0xLC0xLDEsLTEsLTk5OSwwLDEsMCwtMSwtMiwwLC0xLC0yLC0xLC0xLDAsLTEsLTEsMCwwLC05OTksLTk5OSwtMSwtMSwtMSwtMSwtMiwtOTk5LC0yLC0yLC05OTksMCwtMiwtMiwwLDAsLTIsMCwtMiwwLDAsMCwtMiwtMSwtMSwxLDEsMCwwLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLDAsLTk5OSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwtMiwtOTk5LC05OTksLTk5OSwtOTk5LC05OTksLTEsLTEsLTIsLTIsMCwwLDAsMCwtMSwtMSwtOTk5LC0yLC0yLDAsMCwtMSwtMiwtMiwwLDAsMCwtMSwtMSwtMSwtMl07ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW0oZSx0KXtsZXQgYSxyLG4scyxvLGM9ZS5kYXRhLGw9MCxoPTAsdT0wO2NvbnN0IGQ9W10sZj1bXSxnPVtdO2xldCBwPXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zLG09ITEsYj0wLHk9MDtmb3IobGV0IGU9Yy5sZW5ndGg7bDxlOyl7Y29uc3QgZT1jW2wrK107aWYoNjQ9PT1lKXtyPWNbbCsrXTtpZihtfHx5KWwrPXI7ZWxzZSBmb3IoYT0wO2E8cjthKyspZC5wdXNoKGNbbCsrXSl9ZWxzZSBpZig2NT09PWUpe3I9Y1tsKytdO2lmKG18fHkpbCs9MipyO2Vsc2UgZm9yKGE9MDthPHI7YSsrKXtuPWNbbCsrXTtkLnB1c2gobjw8OHxjW2wrK10pfX1lbHNlIGlmKDE3Nj09KDI0OCZlKSl7cj1lLTE3NisxO2lmKG18fHkpbCs9cjtlbHNlIGZvcihhPTA7YTxyO2ErKylkLnB1c2goY1tsKytdKX1lbHNlIGlmKDE4ND09KDI0OCZlKSl7cj1lLTE4NCsxO2lmKG18fHkpbCs9MipyO2Vsc2UgZm9yKGE9MDthPHI7YSsrKXtuPWNbbCsrXTtkLnB1c2goc2lnbmVkSW50MTYobixjW2wrK10pKX19ZWxzZSBpZig0MyE9PWV8fHApaWYoNDQhPT1lfHxwKXtpZig0NT09PWUpaWYobSl7bT0hMTtoPWx9ZWxzZXtvPWYucG9wKCk7aWYoIW8pe3dhcm4oIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59cz1nLnBvcCgpO2M9by5kYXRhO2w9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbc109ZC5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKG18fHkpe3dhcm4oIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTtwPSEwfW09ITA7dT1sfWVsc2UgaWYoODg9PT1lKSsrYjtlbHNlIGlmKDI3PT09ZSl5PWI7ZWxzZSBpZig4OT09PWUpe3k9PT1iJiYoeT0wKTstLWJ9ZWxzZSBpZigyOD09PWUmJiFtJiYheSl7Y29uc3QgZT1kLmF0KC0xKTtlPjAmJihsKz1lLTEpfX1lbHNle2lmKG18fHkpe3dhcm4oIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTtwPSEwfW09ITA7dT1sO3M9ZC5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmx9fWVsc2UgaWYoIW0mJiF5KXtzPWQuYXQoLTEpO2lmKGlzTmFOKHMpKWluZm8oIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtzXT0hMDtpZihzIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9ZC5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXTtpZihlPDApe3dhcm4oIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59ZC5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhZy5pbmNsdWRlcyhzKSl7Zi5wdXNoKHtkYXRhOmMsaTpsLHN0YWNrVG9wOmQubGVuZ3RoLTF9KTtnLnB1c2gocyk7bz10LmZ1bmN0aW9uc0RlZmluZWRbc107aWYoIW8pe3dhcm4oIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Yz1vLmRhdGE7bD1vLml9fX1pZighbSYmIXkpe2xldCB0PTA7ZTw9MTQyP3Q9aVtlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtyPWQucG9wKCk7aXNOYU4ocil8fCh0PTIqLXIpfWZvcig7dDwwJiZkLmxlbmd0aD4wOyl7ZC5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtkLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1wO2NvbnN0IHc9W2NdO2w+Yy5sZW5ndGgmJncucHVzaChuZXcgVWludDhBcnJheShsLWMubGVuZ3RoKSk7aWYodT5oKXt3YXJuKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO3cucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEscixpPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspaSs9dFthXS5sZW5ndGg7aT1pKzMmLTQ7Y29uc3Qgbj1uZXcgVWludDhBcnJheShpKTtsZXQgcz0wO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtuLnNldCh0W2FdLHMpO3MrPXRbYV0ubGVuZ3RofWUuZGF0YT1uO2UubGVuZ3RoPWl9fShlLHcpfWxldCBuLHMsbyxjO2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyBTdHJlYW0obmV3IFVpbnQ4QXJyYXkodC5nZXRCeXRlcygpKSkpKXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25EYXRhKGUsdCl7Y29uc3R7bnVtRm9udHM6YSxvZmZzZXRUYWJsZTpyfT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uSGVhZGVyKGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCk7YXNzZXJ0KCJ0dGNmIj09PXQsIk11c3QgYmUgYSBUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQuIik7Y29uc3QgYT1lLmdldFVpbnQxNigpLHI9ZS5nZXRVaW50MTYoKSxpPWUuZ2V0SW50MzIoKT4+PjAsbj1bXTtmb3IobGV0IHQ9MDt0PGk7dCsrKW4ucHVzaChlLmdldEludDMyKCk+Pj4wKTtjb25zdCBzPXt0dGNUYWc6dCxtYWpvclZlcnNpb246YSxtaW5vclZlcnNpb246cixudW1Gb250czppLG9mZnNldFRhYmxlOm59O3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIHM7Y2FzZSAyOnMuZHNpZ1RhZz1lLmdldEludDMyKCk+Pj4wO3MuZHNpZ0xlbmd0aD1lLmdldEludDMyKCk+Pj4wO3MuZHNpZ09mZnNldD1lLmdldEludDMyKCk+Pj4wO3JldHVybiBzfXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBUcnVlVHlwZSBDb2xsZWN0aW9uIG1ham9yVmVyc2lvbjogJHthfS5gKX0oZSksaT10LnNwbGl0KCIrIik7bGV0IG47Zm9yKGxldCBzPTA7czxhO3MrKyl7ZS5wb3M9KGUuc3RhcnR8fDApK3Jbc107Y29uc3QgYT1yZWFkT3BlblR5cGVIZWFkZXIoZSksbz1yZWFkVGFibGVzKGUsYS5udW1UYWJsZXMpO2lmKCFvLm5hbWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0W2NdPXJlYWROYW1lVGFibGUoby5uYW1lKTtmb3IobGV0IGU9MCxyPWMubGVuZ3RoO2U8cjtlKyspZm9yKGxldCByPTAscz1jW2VdLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWNbZV1bcl0/LnJlcGxhY2VBbGwoL1xzL2csIiIpO2lmKHMpe2lmKHM9PT10KXJldHVybntoZWFkZXI6YSx0YWJsZXM6b307aWYoIShpLmxlbmd0aDwyKSlmb3IoY29uc3QgZSBvZiBpKXM9PT1lJiYobj17bmFtZTplLGhlYWRlcjphLHRhYmxlczpvfSl9fX1pZihuKXt3YXJuKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQsIGZhbGxpbmcgYmFjayB0byAiJHtuLm5hbWV9IiBmb250IGluc3RlYWQuYCk7cmV0dXJue2hlYWRlcjpuLmhlYWRlcix0YWJsZXM6bi50YWJsZXN9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7bj1lLmhlYWRlcjtzPWUudGFibGVzfWVsc2V7bj1yZWFkT3BlblR5cGVIZWFkZXIodCk7cz1yZWFkVGFibGVzKHQsbi5udW1UYWJsZXMpfWNvbnN0IGw9IXNbIkNGRiAiXTtpZihsKXtpZighcy5sb2NhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImxvY2EiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKCFzLmdseWYpe3dhcm4oJ1JlcXVpcmVkICJnbHlmIiB0YWJsZSBpcyBub3QgZm91bmQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7cy5nbHlmPXt0YWc6ImdseWYiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9fXRoaXMuaXNPcGVuVHlwZT0hMX1lbHNle2NvbnN0IHQ9YS5jb21wb3NpdGUmJihhLmNpZFRvR2lkTWFwPy5sZW5ndGg+MHx8IShhLmNNYXAgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1uLnZlcnNpb24mJiF0fHwhcy5oZWFkfHwhcy5oaGVhfHwhcy5tYXhwfHwhcy5wb3N0KXtjPW5ldyBTdHJlYW0oc1siQ0ZGICJdLmRhdGEpO289bmV3IENGRkZvbnQoYyxhKTtyZXR1cm4gdGhpcy5jb252ZXJ0KGUsbyxhKX1kZWxldGUgcy5nbHlmO2RlbGV0ZSBzLmxvY2E7ZGVsZXRlIHMuZnBnbTtkZWxldGUgcy5wcmVwO2RlbGV0ZSBzWyJjdnQgIl07dGhpcy5pc09wZW5UeXBlPSEwfWlmKCFzLm1heHApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAibWF4cCIgdGFibGUgaXMgbm90IGZvdW5kJyk7dC5wb3M9KHQuc3RhcnR8fDApK3MubWF4cC5vZmZzZXQ7bGV0IGg9dC5nZXRJbnQzMigpO2NvbnN0IHU9dC5nZXRVaW50MTYoKTtpZig2NTUzNiE9PWgmJjIwNDgwIT09aCl7aWYoNj09PXMubWF4cC5sZW5ndGgpaD0yMDQ4MDtlbHNle2lmKCEocy5tYXhwLmxlbmd0aD49MzIpKXRocm93IG5ldyBGb3JtYXRFcnJvcignIm1heHAiIHRhYmxlIGhhcyBhIHdyb25nIHZlcnNpb24gbnVtYmVyJyk7aD02NTUzNn0hZnVuY3Rpb24gd3JpdGVVaW50MzIoZSx0LGEpe2VbdCszXT0yNTUmYTtlW3QrMl09YT4+Pjg7ZVt0KzFdPWE+Pj4xNjtlW3RdPWE+Pj4yNH0ocy5tYXhwLmRhdGEsMCxoKX1pZihhLnNjYWxlRmFjdG9ycz8ubGVuZ3RoPT09dSYmbCl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWEsdD1pbnQxNihzLmhlYWQuZGF0YVs1MF0scy5oZWFkLmRhdGFbNTFdKSxyPW5ldyBHbHlmVGFibGUoe2dseWZUYWJsZTpzLmdseWYuZGF0YSxpc0dseXBoTG9jYXRpb25zTG9uZzp0LGxvY2FUYWJsZTpzLmxvY2EuZGF0YSxudW1HbHlwaHM6dX0pO3Iuc2NhbGUoZSk7Y29uc3R7Z2x5ZjppLGxvY2E6bixpc0xvY2F0aW9uTG9uZzpvfT1yLndyaXRlKCk7cy5nbHlmLmRhdGE9aTtzLmxvY2EuZGF0YT1uO2lmKG8hPT0hIXQpe3MuaGVhZC5kYXRhWzUwXT0wO3MuaGVhZC5kYXRhWzUxXT1vPzE6MH1jb25zdCBjPXMuaG10eC5kYXRhO2ZvcihsZXQgdD0wO3Q8dTt0Kyspe2NvbnN0IGE9NCp0LHI9TWF0aC5yb3VuZChlW3RdKmludDE2KGNbYV0sY1thKzFdKSk7Y1thXT1yPj44JjI1NTtjW2ErMV09MjU1JnI7d3JpdGVTaWduZWRJbnQxNihjLGErMixNYXRoLnJvdW5kKGVbdF0qc2lnbmVkSW50MTYoY1thKzJdLGNbYSszXSkpKX19bGV0IGQ9dSsxLGY9ITA7aWYoZD42NTUzNSl7Zj0hMTtkPXU7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBnbHlmcyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIil9bGV0IGc9MCxwPTA7aWYoaD49NjU1MzYmJnMubWF4cC5sZW5ndGg+PTMyKXt0LnBvcys9ODtpZih0LmdldFVpbnQxNigpPjIpe3MubWF4cC5kYXRhWzE0XT0wO3MubWF4cC5kYXRhWzE1XT0yfXQucG9zKz00O2c9dC5nZXRVaW50MTYoKTt0LnBvcys9NDtwPXQuZ2V0VWludDE2KCl9cy5tYXhwLmRhdGFbNF09ZD4+ODtzLm1heHAuZGF0YVs1XT0yNTUmZDtjb25zdCBtPWZ1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtcyhlLHQsYSxyKXtjb25zdCBpPXtmdW5jdGlvbnNEZWZpbmVkOltdLGZ1bmN0aW9uc1VzZWQ6W10sZnVuY3Rpb25zU3RhY2tEZWx0YXM6W10sdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zOiExLGhpbnRzVmFsaWQ6ITB9O2UmJnNhbml0aXplVFRQcm9ncmFtKGUsaSk7dCYmc2FuaXRpemVUVFByb2dyYW0odCxpKTtlJiZmdW5jdGlvbiBjaGVja0ludmFsaWRGdW5jdGlvbnMoZSx0KXtpZighZS50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMpaWYoZS5mdW5jdGlvbnNEZWZpbmVkLmxlbmd0aD50KXt3YXJuKCJUVDogbW9yZSBmdW5jdGlvbnMgZGVmaW5lZCB0aGFuIGV4cGVjdGVkIik7ZS5oaW50c1ZhbGlkPSExfWVsc2UgZm9yKGxldCBhPTAscj1lLmZ1bmN0aW9uc1VzZWQubGVuZ3RoO2E8cjthKyspe2lmKGE+dCl7d2FybigiVFQ6IGludmFsaWQgZnVuY3Rpb24gaWQ6ICIrYSk7ZS5oaW50c1ZhbGlkPSExO3JldHVybn1pZihlLmZ1bmN0aW9uc1VzZWRbYV0mJiFlLmZ1bmN0aW9uc0RlZmluZWRbYV0pe3dhcm4oIlRUOiB1bmRlZmluZWQgZnVuY3Rpb246ICIrYSk7ZS5oaW50c1ZhbGlkPSExO3JldHVybn19fShpLHIpO2lmKGEmJjEmYS5sZW5ndGgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgrMSk7ZS5zZXQoYS5kYXRhKTthLmRhdGE9ZX1yZXR1cm4gaS5oaW50c1ZhbGlkfShzLmZwZ20scy5wcmVwLHNbImN2dCAiXSxnKTtpZighbSl7ZGVsZXRlIHMuZnBnbTtkZWxldGUgcy5wcmVwO2RlbGV0ZSBzWyJjdnQgIl19IWZ1bmN0aW9uIHNhbml0aXplTWV0cmljcyhlLHQsYSxyLGksbil7aWYoIXQpe2EmJihhLmRhdGE9bnVsbCk7cmV0dXJufWUucG9zPShlLnN0YXJ0fHwwKSt0Lm9mZnNldDtlLnBvcys9NDtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9Mjtjb25zdCBzPWUuZ2V0VWludDE2KCk7ZS5wb3MrPTg7ZS5wb3MrPTI7bGV0IG89ZS5nZXRVaW50MTYoKTtpZigwIT09cyl7aWYoISgyJmludDE2KHIuZGF0YVs0NF0sci5kYXRhWzQ1XSkpKXt0LmRhdGFbMjJdPTA7dC5kYXRhWzIzXT0wfX1pZihvPmkpe2luZm8oYFRoZSBudW1PZk1ldHJpY3MgKCR7b30pIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1HbHlwaHMgKCR7aX0pLmApO289aTt0LmRhdGFbMzRdPSg2NTI4MCZvKT4+ODt0LmRhdGFbMzVdPTI1NSZvfWNvbnN0IGM9aS1vLShhLmxlbmd0aC00Km8+PjEpO2lmKGM+MCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsyKmMpO2Uuc2V0KGEuZGF0YSk7aWYobil7ZVthLmxlbmd0aF09YS5kYXRhWzJdO2VbYS5sZW5ndGgrMV09YS5kYXRhWzNdfWEuZGF0YT1lfX0odCxzLmhoZWEscy5obXR4LHMuaGVhZCxkLGYpO2lmKCFzLmhlYWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGVhZCIgdGFibGUgaXMgbm90IGZvdW5kJyk7IWZ1bmN0aW9uIHNhbml0aXplSGVhZChlLHQsYSl7Y29uc3Qgcj1lLmRhdGEsaT1mdW5jdGlvbiBpbnQzMihlLHQsYSxyKXtyZXR1cm4oZTw8MjQpKyh0PDwxNikrKGE8PDgpK3J9KHJbMF0sclsxXSxyWzJdLHJbM10pO2lmKGk+PjE2IT0xKXtpbmZvKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIHZlcnNpb24gaW4gaGVhZCB0YWJsZTogIitpKTtyWzBdPTA7clsxXT0xO3JbMl09MDtyWzNdPTB9Y29uc3Qgbj1pbnQxNihyWzUwXSxyWzUxXSk7aWYobjwwfHxuPjEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgaW5kZXhUb0xvY0Zvcm1hdCBpbiBoZWFkIHRhYmxlOiAiK24pO2NvbnN0IGU9dCsxO2lmKGE9PT1lPDwxKXtyWzUwXT0wO3JbNTFdPTB9ZWxzZXtpZihhIT09ZTw8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIituKTtyWzUwXT0wO3JbNTFdPTF9fX0ocy5oZWFkLHUsbD9zLmxvY2EubGVuZ3RoOjApO2xldCBiPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobCl7Y29uc3QgZT1pbnQxNihzLmhlYWQuZGF0YVs1MF0scy5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEscixpLG4scyl7bGV0IG8sYyxsO2lmKHIpe289NDtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtsPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgaD1uP2ErMTphLHU9byooMStoKSxkPW5ldyBVaW50OEFycmF5KHUpO2Quc2V0KGUuZGF0YS5zdWJhcnJheSgwLHUpKTtlLmRhdGE9ZDtjb25zdCBmPXQuZGF0YSxnPWYubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IG0sYjtjb25zdCB5PVtdO2ZvcihtPTAsYj0wO208YSsxO20rKyxiKz1vKXtsZXQgZT1jKGQsYik7ZT5nJiYoZT1nKTt5LnB1c2goe2luZGV4Om0sb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX15LnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KTtmb3IobT0wO208YTttKyspeVttXS5lbmRPZmZzZXQ9eVttKzFdLm9mZnNldDt5LnNvcnQoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCk7Zm9yKG09MDttPGE7bSsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09eVttXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgYT15W20rMV0ub2Zmc2V0O2lmKDAhPT1hKXt5W21dLmVuZE9mZnNldD1hO2JyZWFrfX1jb25zdCB3PXkuYXQoLTIpOzAhPT13Lm9mZnNldCYmMD09PXcuZW5kT2Zmc2V0JiYody5lbmRPZmZzZXQ9Zyk7Y29uc3QgeD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsaSksdD1lLmxlbmd0aDswPT09dCYmKHhbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihuKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eCxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KHMubG9jYSxzLmdseWYsdSxlLG0sZixwKTtiPXQubWlzc2luZ0dseXBocztpZihoPj02NTUzNiYmcy5tYXhwLmxlbmd0aD49MzIpe3MubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtzLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighcy5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1zLmhoZWEuZGF0YVsxMF0mJjA9PT1zLmhoZWEuZGF0YVsxMV0pe3MuaGhlYS5kYXRhWzEwXT0yNTU7cy5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCB5PXt1bml0c1BlckVtOmludDE2KHMuaGVhZC5kYXRhWzE4XSxzLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYocy5oZWFkLmRhdGFbNDJdLHMuaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihzLmhlYWQuZGF0YVszOF0scy5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYocy5oaGVhLmRhdGFbNF0scy5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYocy5oaGVhLmRhdGFbNl0scy5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYocy5oaGVhLmRhdGFbOF0scy5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD15LmFzY2VudC95LnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXkuZGVzY2VudC95LnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXkubGluZUdhcC95LnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO3MucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGEscil7Y29uc3QgaT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9aTtjb25zdCBuPWkrZS5sZW5ndGgscz10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxjLGw9ITA7c3dpdGNoKHMpe2Nhc2UgNjU1MzY6bz1DcjticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PXIpe2w9ITE7YnJlYWt9Y29uc3QgaT1bXTtmb3IoYz0wO2M8ZTsrK2Mpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7bD0hMTticmVha31pLnB1c2goZSl9aWYoIWwpYnJlYWs7Y29uc3QgaD1bXSx1PVtdO2Zvcig7dC5wb3M8bjspe2NvbnN0IGU9dC5nZXRCeXRlKCk7dS5sZW5ndGg9ZTtmb3IoYz0wO2M8ZTsrK2MpdVtjXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtoLnB1c2godS5qb2luKCIiKSl9bz1bXTtmb3IoYz0wO2M8ZTsrK2Mpe2NvbnN0IGU9aVtjXTtlPDI1OD9vLnB1c2goQ3JbZV0pOm8ucHVzaChoW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK3MpO2w9ITE7YS5kZWZhdWx0RW5jb2RpbmcmJihvPWEuZGVmYXVsdEVuY29kaW5nKX1hLmdseXBoTmFtZXM9bztyZXR1cm4gbH0ocy5wb3N0LGEsdSk7cy5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGEpfTtjb25zdCB3PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWJbZV19aWYoYS5jb21wb3NpdGUpe2NvbnN0IGU9YS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7YS5jTWFwLmZvckVhY2goZnVuY3Rpb24oYSxyKXsic3RyaW5nIj09dHlwZW9mIHImJihyPWNvbnZlcnRDaWRTdHJpbmcoYSxyLCEwKSk7aWYocj42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtsZXQgaT0tMTt0P2k9cjp2b2lkIDAhPT1lW3JdJiYoaT1lW3JdKTtpPj0wJiZpPHUmJmhhc0dseXBoKGkpJiYod1thXT1pKX0pfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLHIpe2lmKCFlKXt3YXJuKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGksbj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9bjt0LnNraXAoMik7Y29uc3Qgcz10LmdldFVpbnQxNigpO2xldCBvLGM9ITE7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7Y29uc3QgaT10LmdldFVpbnQxNigpLG49dC5nZXRVaW50MTYoKSxsPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYobz8ucGxhdGZvcm1JZCE9PWl8fG8/LmVuY29kaW5nSWQhPT1uKXtpZigwIT09aXx8MCE9PW4mJjEhPT1uJiYzIT09bilpZigxPT09aSYmMD09PW4paD0hMDtlbHNlIGlmKDMhPT1pfHwxIT09bnx8IXImJm8pe2lmKGEmJjM9PT1pJiYwPT09bil7aD0hMDtsZXQgYT0hMDtpZihlPHMtMSl7Y29uc3QgZT10LnBlZWtCeXRlcygyKTtpbnQxNihlWzBdLGVbMV0pPGkmJihhPSExKX1hJiYoYz0hMCl9fWVsc2V7aD0hMDthfHwoYz0hMCl9ZWxzZSBoPSEwO2gmJihvPXtwbGF0Zm9ybUlkOmksZW5jb2RpbmdJZDpuLG9mZnNldDpsfSk7aWYoYylicmVha319byYmKHQucG9zPW4rby5vZmZzZXQpO2lmKCFvfHwtMT09PXQucGVla0J5dGUoKSl7d2FybigiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19Y29uc3QgbD10LmdldFVpbnQxNigpO2xldCBoPSExO2NvbnN0IHU9W107bGV0IGQsZjtpZigwPT09bCl7dC5za2lwKDQpO2ZvcihkPTA7ZDwyNTY7ZCsrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJnUucHVzaCh7Y2hhckNvZGU6ZCxnbHlwaElkOmV9KX1oPSEwfWVsc2UgaWYoMj09PWwpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCBhPTA7Zm9yKGxldCByPTA7cjwyNTY7cisrKXtjb25zdCByPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKHIpO2E9TWF0aC5tYXgocixhKX1jb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXIucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6c2lnbmVkSW50MTYodC5nZXRCeXRlKCksdC5nZXRCeXRlKCkpLGlkUmFuZ2VQb3M6dC5wb3MrdC5nZXRVaW50MTYoKX0pO2ZvcihsZXQgYT0wO2E8MjU2O2ErKylpZigwPT09ZVthXSl7dC5wb3M9clswXS5pZFJhbmdlUG9zKzIqYTtmPXQuZ2V0VWludDE2KCk7dS5wdXNoKHtjaGFyQ29kZTphLGdseXBoSWQ6Zn0pfWVsc2V7Y29uc3QgaT1yW2VbYV1dO2ZvcihkPTA7ZDxpLmVudHJ5Q291bnQ7ZCsrKXtjb25zdCBlPShhPDw4KStkK2kuZmlyc3RDb2RlO3QucG9zPWkuaWRSYW5nZVBvcysyKmQ7Zj10LmdldFVpbnQxNigpOzAhPT1mJiYoZj0oZitpLmlkRGVsdGEpJTY1NTM2KTt1LnB1c2goe2NoYXJDb2RlOmUsZ2x5cGhJZDpmfSl9fX1lbHNlIGlmKDQ9PT1sKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTtjb25zdCBhPVtdO2xldCByO2ZvcihyPTA7cjxlO3IrKylhLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7dC5za2lwKDIpO2ZvcihyPTA7cjxlO3IrKylhW3JdLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKHI9MDtyPGU7cisrKWFbcl0uZGVsdGE9dC5nZXRVaW50MTYoKTtsZXQgcyxvPTA7Zm9yKHI9MDtyPGU7cisrKXtpPWFbcl07Y29uc3Qgbj10LmdldFVpbnQxNigpO2lmKG4pe3M9KG4+PjEpLShlLXIpO2kub2Zmc2V0SW5kZXg9cztvPU1hdGgubWF4KG8scytpLmVuZC1pLnN0YXJ0KzEpfWVsc2UgaS5vZmZzZXRJbmRleD0tMX1jb25zdCBjPVtdO2ZvcihkPTA7ZDxvO2QrKyljLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKHI9MDtyPGU7cisrKXtpPWFbcl07bj1pLnN0YXJ0O2NvbnN0IGU9aS5lbmQsdD1pLmRlbHRhO3M9aS5vZmZzZXRJbmRleDtmb3IoZD1uO2Q8PWU7ZCsrKWlmKDY1NTM1IT09ZCl7Zj1zPDA/ZDpjW3MrZC1uXTtmPWYrdCY2NTUzNTt1LnB1c2goe2NoYXJDb2RlOmQsZ2x5cGhJZDpmfSl9fX1lbHNlIGlmKDY9PT1sKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpLGE9dC5nZXRVaW50MTYoKTtmb3IoZD0wO2Q8YTtkKyspe2Y9dC5nZXRVaW50MTYoKTtjb25zdCBhPWUrZDt1LnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpmfSl9fWVsc2V7aWYoMTIhPT1sKXt3YXJuKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIrbCk7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fXt0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IoZD0wO2Q8ZTtkKyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxhPXQuZ2V0SW50MzIoKT4+PjA7bGV0IHI9dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1hO3QrKyl1LnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDpyKyt9KX19fXUuc29ydCgoZSx0KT0+ZS5jaGFyQ29kZS10LmNoYXJDb2RlKTtjb25zdCBnPVtdLHA9bmV3IFNldDtmb3IoY29uc3QgZSBvZiB1KXtjb25zdHtjaGFyQ29kZTp0fT1lO2lmKCFwLmhhcyh0KSl7cC5hZGQodCk7Zy5wdXNoKGUpfX1yZXR1cm57cGxhdGZvcm1JZDpvLnBsYXRmb3JtSWQsZW5jb2RpbmdJZDpvLmVuY29kaW5nSWQsbWFwcGluZ3M6ZyxoYXNTaG9ydENtYXA6aH19KHMuY21hcCx0LHRoaXMuaXNTeW1ib2xpY0ZvbnQsYS5oYXNFbmNvZGluZykscj1lLnBsYXRmb3JtSWQsaT1lLmVuY29kaW5nSWQsbj1lLm1hcHBpbmdzO2xldCBvPVtdLGM9ITE7IWEuaGFzRW5jb2Rpbmd8fCJNYWNSb21hbkVuY29kaW5nIiE9PWEuYmFzZUVuY29kaW5nTmFtZSYmIldpbkFuc2lFbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWV8fChvPWdldEVuY29kaW5nKGEuYmFzZUVuY29kaW5nTmFtZSkpO2lmKGEuaGFzRW5jb2RpbmcmJiF0aGlzLmlzU3ltYm9saWNGb250JiYoMz09PXImJjE9PT1pfHwxPT09ciYmMD09PWkpKXtjb25zdCBlPWZyKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcztzPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTpvLmxlbmd0aCYmIiIhPT1vW3RdP29bdF06bHJbdF07aWYoIXMpY29udGludWU7Y29uc3QgYz1yZWNvdmVyR2x5cGhOYW1lKHMsZSk7bGV0IGw7Mz09PXImJjE9PT1pP2w9ZVtjXToxPT09ciYmMD09PWkmJihsPWNyLmluZGV4T2YoYykpO2lmKHZvaWQgMD09PWwpe2lmKCFhLmdseXBoTmFtZXMmJmEuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJiEodGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcCkpe2NvbnN0IGU9dGhpcy50b1VuaWNvZGUuZ2V0KHQpO2UmJihsPWUuY29kZVBvaW50QXQoMCkpfWlmKHZvaWQgMD09PWwpY29udGludWV9Zm9yKGNvbnN0IGUgb2YgbilpZihlLmNoYXJDb2RlPT09bCl7d1t0XT1lLmdseXBoSWQ7YnJlYWt9fX1lbHNlIGlmKDA9PT1yKXtmb3IoY29uc3QgZSBvZiBuKXdbZS5jaGFyQ29kZV09ZS5nbHlwaElkO2M9ITB9ZWxzZSBpZigzPT09ciYmMD09PWkpZm9yKGNvbnN0IGUgb2Ygbil7bGV0IHQ9ZS5jaGFyQ29kZTt0Pj02MTQ0MCYmdDw9NjE2OTUmJih0Jj0yNTUpO3dbdF09ZS5nbHlwaElkfWVsc2UgZm9yKGNvbnN0IGUgb2Ygbil3W2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtpZihhLmdseXBoTmFtZXMmJihvLmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWMmJnZvaWQgMCE9PXdbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHxvW2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9YS5nbHlwaE5hbWVzLmluZGV4T2YodCk7cj4wJiZoYXNHbHlwaChyKSYmKHdbZV09cil9fTA9PT13Lmxlbmd0aCYmKHdbMF09MCk7bGV0IHg9ZC0xO2Z8fCh4PTApO2lmKCFhLmNzc0ZvbnRJbmZvKXtjb25zdCBlPWFkanVzdE1hcHBpbmcodyxoYXNHbHlwaCx4LHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZS50b0ZvbnRDaGFyO3MuY21hcD17dGFnOiJjbWFwIixkYXRhOmNyZWF0ZUNtYXBUYWJsZShlLmNoYXJDb2RlVG9HbHlwaElkLGUudG9Vbmljb2RlRXh0cmFNYXAsZCl9O3NbIk9TLzIiXSYmZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCBhPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYoYTw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oc1siT1MvMiJdLHQpfHwoc1siT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUoYSxlLmNoYXJDb2RlVG9HbHlwaElkLHkpfSl9aWYoIWwpdHJ5e2M9bmV3IFN0cmVhbShzWyJDRkYgIl0uZGF0YSk7bz1uZXcgQ0ZGUGFyc2VyKGMsYSx3cikucGFyc2UoKTtvLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBlPW5ldyBDRkZDb21waWxlcihvKTtzWyJDRkYgIl0uZGF0YT1lLmNvbXBpbGUoKX1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZihzLm5hbWUpe2NvbnN0W3Qscl09cmVhZE5hbWVUYWJsZShzLm5hbWUpO3MubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGw7YS5jb21wb3NpdGV8fGZ1bmN0aW9uIGFkanVzdFRydWVUeXBlVG9Vbmljb2RlKGUsdCxhKXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZihlLmhhc0VuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtpZighdClyZXR1cm47aWYoMD09PWEubGVuZ3RoKXJldHVybjtpZihlLmRlZmF1bHRFbmNvZGluZz09PWhyKXJldHVybjtmb3IoY29uc3QgZSBvZiBhKWlmKCFpc1dpbk5hbWVSZWNvcmQoZSkpcmV0dXJuO2NvbnN0IHI9aHIsaT1bXSxuPWZyKCk7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKCIiPT09dCljb250aW51ZTtjb25zdCBhPW5bdF07dm9pZCAwIT09YSYmKGlbZV09U3RyaW5nLmZyb21DaGFyQ29kZShhKSl9aS5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQoaSl9KGEsdGhpcy5pc1N5bWJvbGljRm9udCxyKX1lbHNlIHMubmFtZT17dGFnOiJuYW1lIixkYXRhOmNyZWF0ZU5hbWVUYWJsZSh0aGlzLm5hbWUpfTtjb25zdCBTPW5ldyBPcGVuVHlwZUZpbGVCdWlsZGVyKG4udmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gcylTLmFkZFRhYmxlKGUsc1tlXS5kYXRhKTtyZXR1cm4gUy50b0FycmF5KCl9Y29udmVydChlLGEscil7ci5maXhlZFBpdGNoPSExO3IuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUeXBlMVRvVW5pY29kZShlLHQpe2lmKGUuaXNJbnRlcm5hbEZvbnQpcmV0dXJuO2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApcmV0dXJuO2lmKHQ9PT1lLmRlZmF1bHRFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPWZyKCk7Zm9yKGNvbnN0IGkgaW4gdCl7aWYoZS5oYXNFbmNvZGluZyYmKGUuYmFzZUVuY29kaW5nTmFtZXx8dm9pZCAwIT09ZS5kaWZmZXJlbmNlc1tpXSkpY29udGludWU7Y29uc3Qgbj1nZXRVbmljb2RlRm9yR2x5cGgodFtpXSxyKTstMSE9PW4mJihhW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUobikpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShyLHIuYnVpbHRJbkVuY29kaW5nKTtsZXQgaT0xO2EgaW5zdGFuY2VvZiBDRkZGb250JiYoaT1hLm51bUdseXBocy0xKTtjb25zdCBuPWEuZ2V0R2x5cGhNYXBwaW5nKHIpO2xldCBzPW51bGwsbz1uLGM9bnVsbDtpZighci5jc3NGb250SW5mbyl7cz1hZGp1c3RNYXBwaW5nKG4sYS5oYXNHbHlwaElkLmJpbmQoYSksaSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPXMudG9Gb250Q2hhcjtvPXMuY2hhckNvZGVUb0dseXBoSWQ7Yz1zLnRvVW5pY29kZUV4dHJhTWFwfWNvbnN0IGw9YS5udW1HbHlwaHM7ZnVuY3Rpb24gZ2V0Q2hhckNvZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3QgciBpbiBlKXQ9PT1lW3JdJiYoYXx8PVtdKS5wdXNoKDB8cik7cmV0dXJuIGF9ZnVuY3Rpb24gY3JlYXRlQ2hhckNvZGUoZSx0KXtmb3IoY29uc3QgYSBpbiBlKWlmKHQ9PT1lW2FdKXJldHVybiAwfGE7cy5jaGFyQ29kZVRvR2x5cGhJZFtzLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGVdPXQ7cmV0dXJuIHMubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZSsrfWNvbnN0IGg9YS5zZWFjcztpZihzJiZoPy5sZW5ndGgpe2NvbnN0IGU9ci5mb250TWF0cml4fHx0LGk9YS5nZXRDaGFyc2V0KCksbz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgdCBpbiBoKXt0fD0wO2NvbnN0IGE9aFt0XSxyPWxyW2FbMl1dLGM9bHJbYVszXV0sbD1pLmluZGV4T2YociksdT1pLmluZGV4T2YoYyk7aWYobDwwfHx1PDApY29udGludWU7Y29uc3QgZD17eDphWzBdKmVbMF0rYVsxXSplWzJdK2VbNF0seTphWzBdKmVbMV0rYVsxXSplWzNdK2VbNV19LGY9Z2V0Q2hhckNvZGVzKG4sdCk7aWYoZilmb3IoY29uc3QgZSBvZiBmKXtjb25zdCB0PXMuY2hhckNvZGVUb0dseXBoSWQsYT1jcmVhdGVDaGFyQ29kZSh0LGwpLHI9Y3JlYXRlQ2hhckNvZGUodCx1KTtvW2VdPXtiYXNlRm9udENoYXJDb2RlOmEsYWNjZW50Rm9udENoYXJDb2RlOnIsYWNjZW50T2Zmc2V0OmR9fX1yLnNlYWNNYXA9b31jb25zdCB1PXIuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLnIuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyxkPW5ldyBPcGVuVHlwZUZpbGVCdWlsZGVyKCJPVFRPIik7ZC5hZGRUYWJsZSgiQ0ZGICIsYS5kYXRhKTtkLmFkZFRhYmxlKCJPUy8yIixjcmVhdGVPUzJUYWJsZShyLG8pKTtkLmFkZFRhYmxlKCJjbWFwIixjcmVhdGVDbWFwVGFibGUobyxjLGwpKTtkLmFkZFRhYmxlKCJoZWFkIiwiXDABXDBcMFwwXDAQXDBcMFwwXDBcMF8PPMO1XDBcMCIrc2FmZVN0cmluZzE2KHUpKyJcMFwwXDBcMMKeXHZ+J1wwXDBcMFwwwp5cdn4nXDBcMCIrc2FmZVN0cmluZzE2KHIuZGVzY2VudCkrIg/DvyIrc2FmZVN0cmluZzE2KHIuYXNjZW50KStzdHJpbmcxNihyLml0YWxpY0FuZ2xlPzI6MCkrIlwwEVwwXDBcMFwwXDBcMCIpO2QuYWRkVGFibGUoImhoZWEiLCJcMAFcMFwwIitzYWZlU3RyaW5nMTYoci5hc2NlbnQpK3NhZmVTdHJpbmcxNihyLmRlc2NlbnQpKyJcMFwww7/Dv1wwXDBcMFwwXDBcMCIrc2FmZVN0cmluZzE2KHIuY2FwSGVpZ2h0KStzYWZlU3RyaW5nMTYoTWF0aC50YW4oci5pdGFsaWNBbmdsZSkqci54SGVpZ2h0KSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIitzdHJpbmcxNihsKSk7ZC5hZGRUYWJsZSgiaG10eCIsZnVuY3Rpb24gZm9udEZpZWxkc0htdHgoKXtjb25zdCBlPWEuY2hhcnN0cmluZ3MsdD1hLmNmZj9hLmNmZi53aWR0aHM6bnVsbDtsZXQgcj0iXDBcMFwwXDAiO2ZvcihsZXQgYT0xLGk9bDthPGk7YSsrKXtsZXQgaT0wO2lmKGUpe2NvbnN0IHQ9ZVthLTFdO2k9IndpZHRoImluIHQ/dC53aWR0aDowfWVsc2UgdCYmKGk9TWF0aC5jZWlsKHRbYV18fDApKTtyKz1zdHJpbmcxNihpKStzdHJpbmcxNigwKX1yZXR1cm4gcn0oKSk7ZC5hZGRUYWJsZSgibWF4cCIsIlwwXDBQXDAiK3N0cmluZzE2KGwpKTtkLmFkZFRhYmxlKCJuYW1lIixjcmVhdGVOYW1lVGFibGUoZSkpO2QuYWRkVGFibGUoInBvc3QiLGNyZWF0ZVBvc3RUYWJsZShyKSk7cmV0dXJuIGQudG9BcnJheSgpfWdldCBfc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9ZnIoKVthXTtsZXQgcj0wO2lmKHRoaXMuY29tcG9zaXRlJiZ0aGlzLmNNYXAuY29udGFpbnMoZSkpe3I9dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIHImJihyPWNvbnZlcnRDaWRTdHJpbmcoZSxyKSl9IXImJnRoaXMudG9Vbmljb2RlJiYocj10aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpKTtyPD0wJiYocj1lKTt0PXRoaXMud2lkdGhzW3JdO2lmKHQpYnJlYWt9cmV0dXJuIHNoYWRvdyh0aGlzLCJfc3BhY2VXaWR0aCIsdHx8dGhpcy5kZWZhdWx0V2lkdGgpfV9jaGFyVG9HbHlwaChlLHQ9ITEpe2xldCBhLHIsaSxuPXRoaXMuX2dseXBoQ2FjaGVbZV07aWYobj8uaXNTcGFjZT09PXQpcmV0dXJuIG47bGV0IHM9ZTtpZih0aGlzLmNNYXA/LmNvbnRhaW5zKGUpKXtzPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBzJiYocz1jb252ZXJ0Q2lkU3RyaW5nKGUscykpfXI9dGhpcy53aWR0aHNbc107Im51bWJlciIhPXR5cGVvZiByJiYocj10aGlzLmRlZmF1bHRXaWR0aCk7Y29uc3Qgbz10aGlzLnZtZXRyaWNzPy5bc107bGV0IGM9dGhpcy50b1VuaWNvZGUuZ2V0KGUpfHxlOyJudW1iZXIiPT10eXBlb2YgYyYmKGM9U3RyaW5nLmZyb21DaGFyQ29kZShjKSk7bGV0IGw9dm9pZCAwIT09dGhpcy50b0ZvbnRDaGFyW2VdO2E9dGhpcy50b0ZvbnRDaGFyW2VdfHxlO2lmKHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbZV07aWYoKCIubm90ZGVmIj09PXR8fCIiPT09dCkmJiJUeXBlMSI9PT10aGlzLnR5cGUpe2E9MzI7aWYoIiI9PT10KXtyfHw9dGhpcy5fc3BhY2VXaWR0aDtjPVN0cmluZy5mcm9tQ2hhckNvZGUoYSl9fWE9ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9wcigpW2VdfHxlOjE3Mz09PWU/NDU6ZX0oYSl9dGhpcy5pc1R5cGUzRm9udCYmKGk9YSk7bGV0IGg9bnVsbDtpZih0aGlzLnNlYWNNYXA/LltlXSl7bD0hMDtjb25zdCB0PXRoaXMuc2VhY01hcFtlXTthPXQuYmFzZUZvbnRDaGFyQ29kZTtoPXtmb250Q2hhcjpTdHJpbmcuZnJvbUNvZGVQb2ludCh0LmFjY2VudEZvbnRDaGFyQ29kZSksb2Zmc2V0OnQuYWNjZW50T2Zmc2V0fX1sZXQgdT0iIjsibnVtYmVyIj09dHlwZW9mIGEmJihhPD0xMTE0MTExP3U9U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk6d2FybihgY2hhclRvR2x5cGggLSBpbnZhbGlkIGZvbnRDaGFyQ29kZTogJHthfWApKTtpZih0aGlzLm1pc3NpbmdGaWxlJiZ0aGlzLnZlcnRpY2FsJiYxPT09dS5sZW5ndGgpe2NvbnN0IGU9dnIoKVt1LmNoYXJDb2RlQXQoMCldO2UmJih1PWM9U3RyaW5nLmZyb21DaGFyQ29kZShlKSl9bj1uZXcgZm9udHNfR2x5cGgoZSx1LGMsaCxyLG8saSx0LGwpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW59Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsaSxhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDpufT1hO2krPW47Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1uJiYzMj09PWUuY2hhckNvZGVBdChpLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxpPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2goaSl9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBpPWEubGVuZ3RoO3QucHVzaChbcixyK2ldKTtyKz1pfX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwP2U9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSk6ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihTdHJpbmcuZnJvbUNvZGVQb2ludChlKSk7Zm9yKGxldCBpPTAsbj1lLmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPWUuY29kZVBvaW50QXQoaSk7bj41NTI5NSYmKG48NTczNDR8fG4+NjU1MzMpJiZpKys7aWYodGhpcy50b1VuaWNvZGUpe2NvbnN0IGU9cihuKTtpZigtMSE9PWUpe2lmKGhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGEuam9pbigiIikpO2EubGVuZ3RoPTB9Zm9yKGxldCB0PSh0aGlzLmNNYXA/dGhpcy5jTWFwLmdldENoYXJDb2RlTGVuZ3RoKGUpOjEpLTE7dD49MDt0LS0pYS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCp0JjI1NSkpO2NvbnRpbnVlfX1pZighaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1hLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQobikpfXQucHVzaChhLmpvaW4oIiIpKTtyZXR1cm4gdH19Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKCl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX1jbGFzcyBDc3NGb250SW5mb3sjUDsjSDsjVztzdGF0aWMgc3RyaW5ncz1bImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiaXRhbGljQW5nbGUiXTtzdGF0aWMgd3JpdGUoZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsYT17fTtsZXQgcj0wO2Zvcihjb25zdCBpIG9mIENzc0ZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IG49dC5lbmNvZGUoZVtpXSk7YVtpXT1uO3IrPTQrbi5sZW5ndGh9Y29uc3QgaT1uZXcgQXJyYXlCdWZmZXIociksbj1uZXcgVWludDhBcnJheShpKSxzPW5ldyBEYXRhVmlldyhpKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIENzc0ZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IHQ9YVtlXSxyPXQubGVuZ3RoO3Muc2V0VWludDMyKG8scik7bi5zZXQodCxvKzQpO28rPTQrcn1hc3NlcnQobz09PWkuYnl0ZUxlbmd0aCwiQ3NzRm9udEluZm8ud3JpdGU6IEJ1ZmZlciBvdmVyZmxvdyIpO3JldHVybiBpfWNvbnN0cnVjdG9yKGUpe3RoaXMuI1A9ZTt0aGlzLiNIPW5ldyBEYXRhVmlldyh0aGlzLiNQKTt0aGlzLiNXPW5ldyBUZXh0RGVjb2Rlcn0jeihlKXthc3NlcnQoZTxDc3NGb250SW5mby5zdHJpbmdzLmxlbmd0aCwiSW52YWxpZCBzdHJpbmcgaW5kZXgiKTtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZTthKyspdCs9dGhpcy4jSC5nZXRVaW50MzIodCkrNDtjb25zdCBhPXRoaXMuI0guZ2V0VWludDMyKHQpO3JldHVybiB0aGlzLiNXLmRlY29kZShuZXcgVWludDhBcnJheSh0aGlzLiNQLHQrNCxhKSl9Z2V0IGZvbnRGYW1pbHkoKXtyZXR1cm4gdGhpcy4jeigwKX1nZXQgZm9udFdlaWdodCgpe3JldHVybiB0aGlzLiN6KDEpfWdldCBpdGFsaWNBbmdsZSgpe3JldHVybiB0aGlzLiN6KDIpfX1jbGFzcyBTeXN0ZW1Gb250SW5mb3sjUDsjSDsjVztzdGF0aWMgc3RyaW5ncz1bImNzcyIsImxvYWRlZE5hbWUiLCJiYXNlRm9udE5hbWUiLCJzcmMiXTtzdGF0aWMgd3JpdGUoZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsYT17fTtsZXQgcj0wO2Zvcihjb25zdCBpIG9mIFN5c3RlbUZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IG49dC5lbmNvZGUoZVtpXSk7YVtpXT1uO3IrPTQrbi5sZW5ndGh9cis9NDtsZXQgaSxuLHM9MStyO2lmKGUuc3R5bGUpe2k9dC5lbmNvZGUoZS5zdHlsZS5zdHlsZSk7bj10LmVuY29kZShlLnN0eWxlLndlaWdodCk7cys9NCtpLmxlbmd0aCs0K24ubGVuZ3RofWNvbnN0IG89bmV3IEFycmF5QnVmZmVyKHMpLGM9bmV3IFVpbnQ4QXJyYXkobyksbD1uZXcgRGF0YVZpZXcobyk7bGV0IGg9MDtsLnNldFVpbnQ4KGgrKyxlLmd1ZXNzRmFsbGJhY2s/MTowKTtsLnNldFVpbnQzMihoLDApO2grPTQ7cj0wO2Zvcihjb25zdCBlIG9mIFN5c3RlbUZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IHQ9YVtlXSxpPXQubGVuZ3RoO3IrPTQraTtsLnNldFVpbnQzMihoLGkpO2Muc2V0KHQsaCs0KTtoKz00K2l9bC5zZXRVaW50MzIoaC1yLTQscik7aWYoZS5zdHlsZSl7bC5zZXRVaW50MzIoaCxpLmxlbmd0aCk7Yy5zZXQoaSxoKzQpO2grPTQraS5sZW5ndGg7bC5zZXRVaW50MzIoaCxuLmxlbmd0aCk7Yy5zZXQobixoKzQpO2grPTQrbi5sZW5ndGh9YXNzZXJ0KGg8PW8uYnl0ZUxlbmd0aCwiU3Vic3RpdGlvbkluZm8ud3JpdGU6IEJ1ZmZlciBvdmVyZmxvdyIpO3JldHVybiBvLnRyYW5zZmVyVG9GaXhlZExlbmd0aChoKX1jb25zdHJ1Y3RvcihlKXt0aGlzLiNQPWU7dGhpcy4jSD1uZXcgRGF0YVZpZXcodGhpcy4jUCk7dGhpcy4jVz1uZXcgVGV4dERlY29kZXJ9Z2V0IGd1ZXNzRmFsbGJhY2soKXtyZXR1cm4gMCE9PXRoaXMuI0guZ2V0VWludDgoMCl9I3ooZSl7YXNzZXJ0KGU8U3lzdGVtRm9udEluZm8uc3RyaW5ncy5sZW5ndGgsIkludmFsaWQgc3RyaW5nIGluZGV4Iik7bGV0IHQ9NTtmb3IobGV0IGE9MDthPGU7YSsrKXQrPXRoaXMuI0guZ2V0VWludDMyKHQpKzQ7Y29uc3QgYT10aGlzLiNILmdldFVpbnQzMih0KTtyZXR1cm4gdGhpcy4jVy5kZWNvZGUobmV3IFVpbnQ4QXJyYXkodGhpcy4jUCx0KzQsYSkpfWdldCBjc3MoKXtyZXR1cm4gdGhpcy4jeigwKX1nZXQgbG9hZGVkTmFtZSgpe3JldHVybiB0aGlzLiN6KDEpfWdldCBiYXNlRm9udE5hbWUoKXtyZXR1cm4gdGhpcy4jeigyKX1nZXQgc3JjKCl7cmV0dXJuIHRoaXMuI3ooMyl9Z2V0IHN0eWxlKCl7bGV0IGU9MTtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2NvbnN0IHQ9dGhpcy4jSC5nZXRVaW50MzIoZSksYT10aGlzLiNXLmRlY29kZShuZXcgVWludDhBcnJheSh0aGlzLiNQLGUrNCx0KSk7ZSs9NCt0O2NvbnN0IHI9dGhpcy4jSC5nZXRVaW50MzIoZSk7cmV0dXJue3N0eWxlOmEsd2VpZ2h0OnRoaXMuI1cuZGVjb2RlKG5ldyBVaW50OEFycmF5KHRoaXMuI1AsZSs0LHIpKX19fWNsYXNzIEZvbnRJbmZve3N0YXRpYyBib29scz1bImJsYWNrIiwiYm9sZCIsImRpc2FibGVGb250RmFjZSIsImZvbnRFeHRyYVByb3BlcnRpZXMiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsIm1pc3NpbmdGaWxlIiwicmVtZWFzdXJlIiwidmVydGljYWwiXTtzdGF0aWMgbnVtYmVycz1bImFzY2VudCIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiXTtzdGF0aWMgc3RyaW5ncz1bImZhbGxiYWNrTmFtZSIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm5hbWUiXTtzdGF0aWMjJD1NYXRoLmNlaWwoMip0aGlzLmJvb2xzLmxlbmd0aC84KTtzdGF0aWMjRz10aGlzLiMkKzgqdGhpcy5udW1iZXJzLmxlbmd0aDtzdGF0aWMjVj10aGlzLiNHKzErODtzdGF0aWMjSz10aGlzLiNWKzErNDg7c3RhdGljI0o9dGhpcy4jSysxKzY7I1A7I1c7I0g7Y29uc3RydWN0b3Ioe2RhdGE6ZSxleHRyYTp0fSl7dGhpcy4jUD1lO3RoaXMuI1c9bmV3IFRleHREZWNvZGVyO3RoaXMuI0g9bmV3IERhdGFWaWV3KHRoaXMuI1ApO3QmJk9iamVjdC5hc3NpZ24odGhpcyx0KX0jWShlKXthc3NlcnQoZTxGb250SW5mby5ib29scy5sZW5ndGgsIkludmFsaWQgYm9vbGVhbiBpbmRleCIpO2NvbnN0IHQ9TWF0aC5mbG9vcihlLzQpLGE9MiplJTgscj10aGlzLiNILmdldFVpbnQ4KHQpPj5hJjM7cmV0dXJuIDA9PT1yP3ZvaWQgMDoyPT09cn1nZXQgYmxhY2soKXtyZXR1cm4gdGhpcy4jWSgwKX1nZXQgYm9sZCgpe3JldHVybiB0aGlzLiNZKDEpfWdldCBkaXNhYmxlRm9udEZhY2UoKXtyZXR1cm4gdGhpcy4jWSgyKX1nZXQgZm9udEV4dHJhUHJvcGVydGllcygpe3JldHVybiB0aGlzLiNZKDMpfWdldCBpc0ludmFsaWRQREZqc0ZvbnQoKXtyZXR1cm4gdGhpcy4jWSg0KX1nZXQgaXNUeXBlM0ZvbnQoKXtyZXR1cm4gdGhpcy4jWSg1KX1nZXQgaXRhbGljKCl7cmV0dXJuIHRoaXMuI1koNil9Z2V0IG1pc3NpbmdGaWxlKCl7cmV0dXJuIHRoaXMuI1koNyl9Z2V0IHJlbWVhc3VyZSgpe3JldHVybiB0aGlzLiNZKDgpfWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLiNZKDkpfSNaKGUpe2Fzc2VydChlPEZvbnRJbmZvLm51bWJlcnMubGVuZ3RoLCJJbnZhbGlkIG51bWJlciBpbmRleCIpO3JldHVybiB0aGlzLiNILmdldEZsb2F0NjQoRm9udEluZm8uIyQrOCplKX1nZXQgYXNjZW50KCl7cmV0dXJuIHRoaXMuI1ooMCl9Z2V0IGRlZmF1bHRXaWR0aCgpe3JldHVybiB0aGlzLiNaKDEpfWdldCBkZXNjZW50KCl7cmV0dXJuIHRoaXMuI1ooMil9Z2V0IGJib3goKXtsZXQgZT1Gb250SW5mby4jRztpZigwPT09dGhpcy4jSC5nZXRVaW50OChlKSlyZXR1cm47ZSs9MTtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8NDthKyspe3QucHVzaCh0aGlzLiNILmdldEludDE2KGUsITApKTtlKz0yfXJldHVybiB0fWdldCBmb250TWF0cml4KCl7bGV0IGU9Rm9udEluZm8uI1Y7aWYoMD09PXRoaXMuI0guZ2V0VWludDgoZSkpcmV0dXJuO2UrPTE7Y29uc3QgdD1bXTtmb3IobGV0IGE9MDthPDY7YSsrKXt0LnB1c2godGhpcy4jSC5nZXRGbG9hdDY0KGUsITApKTtlKz04fXJldHVybiB0fWdldCBkZWZhdWx0Vk1ldHJpY3MoKXtsZXQgZT1Gb250SW5mby4jSztpZigwPT09dGhpcy4jSC5nZXRVaW50OChlKSlyZXR1cm47ZSs9MTtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8MzthKyspe3QucHVzaCh0aGlzLiNILmdldEludDE2KGUsITApKTtlKz0yfXJldHVybiB0fSN6KGUpe2Fzc2VydChlPEZvbnRJbmZvLnN0cmluZ3MubGVuZ3RoLCJJbnZhbGlkIHN0cmluZyBpbmRleCIpO2xldCB0PUZvbnRJbmZvLiNKKzQ7Zm9yKGxldCBhPTA7YTxlO2ErKyl0Kz10aGlzLiNILmdldFVpbnQzMih0KSs0O2NvbnN0IGE9dGhpcy4jSC5nZXRVaW50MzIodCkscj1uZXcgVWludDhBcnJheShhKTtyLnNldChuZXcgVWludDhBcnJheSh0aGlzLiNQLHQrNCxhKSk7cmV0dXJuIHRoaXMuI1cuZGVjb2RlKHIpfWdldCBmYWxsYmFja05hbWUoKXtyZXR1cm4gdGhpcy4jeigwKX1nZXQgbG9hZGVkTmFtZSgpe3JldHVybiB0aGlzLiN6KDEpfWdldCBtaW1ldHlwZSgpe3JldHVybiB0aGlzLiN6KDIpfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuI3ooMyl9Z2V0IGRhdGEoKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2UrPTQrdGhpcy4jSC5nZXRVaW50MzIoZSk7ZSs9NCt0aGlzLiNILmdldFVpbnQzMihlKTtjb25zdCB0PXRoaXMuI0guZ2V0VWludDMyKGUpO2lmKDAhPT10KXJldHVybiBuZXcgVWludDhBcnJheSh0aGlzLiNQLGUrNCx0KX1jbGVhckRhdGEoKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2UrPTQrdGhpcy4jSC5nZXRVaW50MzIoZSk7ZSs9NCt0aGlzLiNILmdldFVpbnQzMihlKTtjb25zdCB0PXRoaXMuI0guZ2V0VWludDMyKGUpO25ldyBVaW50OEFycmF5KHRoaXMuI1AsZSs0LHQpLmZpbGwoMCk7dGhpcy4jSC5zZXRVaW50MzIoZSwwKX1nZXQgY3NzRm9udEluZm8oKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2UrPTQrdGhpcy4jSC5nZXRVaW50MzIoZSk7Y29uc3QgdD10aGlzLiNILmdldFVpbnQzMihlKTtpZigwPT09dClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBVaW50OEFycmF5KHQpO2Euc2V0KG5ldyBVaW50OEFycmF5KHRoaXMuI1AsZSs0LHQpKTtyZXR1cm4gbmV3IENzc0ZvbnRJbmZvKGEuYnVmZmVyKX1nZXQgc3lzdGVtRm9udEluZm8oKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2NvbnN0IHQ9dGhpcy4jSC5nZXRVaW50MzIoZSk7aWYoMD09PXQpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTthLnNldChuZXcgVWludDhBcnJheSh0aGlzLiNQLGUrNCx0KSk7cmV0dXJuIG5ldyBTeXN0ZW1Gb250SW5mbyhhLmJ1ZmZlcil9c3RhdGljIHdyaXRlKGUpe2NvbnN0IHQ9ZS5zeXN0ZW1Gb250SW5mbz9TeXN0ZW1Gb250SW5mby53cml0ZShlLnN5c3RlbUZvbnRJbmZvKTpudWxsLGE9ZS5jc3NGb250SW5mbz9Dc3NGb250SW5mby53cml0ZShlLmNzc0ZvbnRJbmZvKTpudWxsLHI9bmV3IFRleHRFbmNvZGVyLGk9e307bGV0IG49MDtmb3IoY29uc3QgdCBvZiBGb250SW5mby5zdHJpbmdzKXtpW3RdPXIuZW5jb2RlKGVbdF0pO24rPTQraVt0XS5sZW5ndGh9Y29uc3Qgcz1Gb250SW5mby4jSis0K24rNCsodD90LmJ5dGVMZW5ndGg6MCkrNCsoYT9hLmJ5dGVMZW5ndGg6MCkrNCsoZS5kYXRhP2UuZGF0YS5sZW5ndGg6MCksbz1uZXcgQXJyYXlCdWZmZXIocyksYz1uZXcgVWludDhBcnJheShvKSxsPW5ldyBEYXRhVmlldyhvKTtsZXQgaD0wO2NvbnN0IHU9Rm9udEluZm8uYm9vbHMubGVuZ3RoO2xldCBkPTAsZj0wO2ZvcihsZXQgdD0wO3Q8dTt0Kyspe2NvbnN0IGE9ZVtGb250SW5mby5ib29sc1t0XV07ZHw9KHZvaWQgMD09PWE/MDphPzI6MSk8PGY7Zis9MjtpZig4PT09Znx8dD09PXUtMSl7bC5zZXRVaW50OChoKyssZCk7ZD0wO2Y9MH19YXNzZXJ0KGg9PT1Gb250SW5mby4jJCwiRm9udEluZm8ud3JpdGU6IEJvb2xlYW4gcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtmb3IoY29uc3QgdCBvZiBGb250SW5mby5udW1iZXJzKXtsLnNldEZsb2F0NjQoaCxlW3RdKTtoKz04fWFzc2VydChoPT09Rm9udEluZm8uI0csIkZvbnRJbmZvLndyaXRlOiBOdW1iZXIgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmJib3gpe2wuc2V0VWludDgoaCsrLDQpO2Zvcihjb25zdCB0IG9mIGUuYmJveCl7bC5zZXRJbnQxNihoLHQsITApO2grPTJ9fWVsc2V7bC5zZXRVaW50OChoKyssMCk7aCs9OH1hc3NlcnQoaD09PUZvbnRJbmZvLiNWLCJGb250SW5mby53cml0ZTogQkJveCBwcm9wZXJ0aWVzIG9mZnNldCBtaXNtYXRjaCIpO2lmKGUuZm9udE1hdHJpeCl7bC5zZXRVaW50OChoKyssNik7Zm9yKGNvbnN0IHQgb2YgZS5mb250TWF0cml4KXtsLnNldEZsb2F0NjQoaCx0LCEwKTtoKz04fX1lbHNle2wuc2V0VWludDgoaCsrLDApO2grPTQ4fWFzc2VydChoPT09Rm9udEluZm8uI0ssIkZvbnRJbmZvLndyaXRlOiBGb250TWF0cml4IHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7aWYoZS5kZWZhdWx0Vk1ldHJpY3Mpe2wuc2V0VWludDgoaCsrLDEpO2Zvcihjb25zdCB0IG9mIGUuZGVmYXVsdFZNZXRyaWNzKXtsLnNldEludDE2KGgsdCwhMCk7aCs9Mn19ZWxzZXtsLnNldFVpbnQ4KGgrKywwKTtoKz02fWFzc2VydChoPT09Rm9udEluZm8uI0osIkZvbnRJbmZvLndyaXRlOiBEZWZhdWx0Vk1ldHJpY3MgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtsLnNldFVpbnQzMihGb250SW5mby4jSiwwKTtoKz00O2Zvcihjb25zdCBlIG9mIEZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IHQ9aVtlXSxhPXQubGVuZ3RoO2wuc2V0VWludDMyKGgsYSk7Yy5zZXQodCxoKzQpO2grPTQrYX1sLnNldFVpbnQzMihGb250SW5mby4jSixoLUZvbnRJbmZvLiNKLTQpO2lmKHQpe2NvbnN0IGU9dC5ieXRlTGVuZ3RoO2wuc2V0VWludDMyKGgsZSk7YXNzZXJ0KGgrNCtlPD1vLmJ5dGVMZW5ndGgsIkZvbnRJbmZvLndyaXRlOiBCdWZmZXIgb3ZlcmZsb3cgYXQgc3lzdGVtRm9udEluZm8iKTtjLnNldChuZXcgVWludDhBcnJheSh0KSxoKzQpO2grPTQrZX1lbHNle2wuc2V0VWludDMyKGgsMCk7aCs9NH1pZihhKXtjb25zdCBlPWEuYnl0ZUxlbmd0aDtsLnNldFVpbnQzMihoLGUpO2Fzc2VydChoKzQrZTw9by5ieXRlTGVuZ3RoLCJGb250SW5mby53cml0ZTogQnVmZmVyIG92ZXJmbG93IGF0IGNzc0ZvbnRJbmZvIik7Yy5zZXQobmV3IFVpbnQ4QXJyYXkoYSksaCs0KTtoKz00K2V9ZWxzZXtsLnNldFVpbnQzMihoLDApO2grPTR9aWYodm9pZCAwPT09ZS5kYXRhKXtsLnNldFVpbnQzMihoLDApO2grPTR9ZWxzZXtsLnNldFVpbnQzMihoLGUuZGF0YS5sZW5ndGgpO2Muc2V0KGUuZGF0YSxoKzQpO2grPTQrZS5kYXRhLmxlbmd0aH1hc3NlcnQoaDw9by5ieXRlTGVuZ3RoLCJGb250SW5mby53cml0ZTogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIG8udHJhbnNmZXJUb0ZpeGVkTGVuZ3RoKGgpfX1jbGFzcyBQYXR0ZXJuSW5mb3tzdGF0aWMjUT0wO3N0YXRpYyNlZT0xO3N0YXRpYyN0ZT0yO3N0YXRpYyNhZT0zO3N0YXRpYyNyZT00O3N0YXRpYyNpZT04O3N0YXRpYyNuZT0xMjtzdGF0aWMjc2U9MTY7Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnZpZXc9bmV3IERhdGFWaWV3KGUpO3RoaXMuZGF0YT1uZXcgVWludDhBcnJheShlKX1zdGF0aWMgd3JpdGUoZSl7bGV0IHQsYT1udWxsLHI9W10saT1bXSxuPVtdLHM9W10sbz1udWxsLGM9bnVsbDtzd2l0Y2goZVswXSl7Y2FzZSJSYWRpYWxBeGlhbCI6dD0iYXhpYWwiPT09ZVsxXT8xOjI7YT1lWzJdO249ZVszXTsxPT09dD9yLnB1c2goLi4uZVs0XSwuLi5lWzVdKTpyLnB1c2goZVs0XVswXSxlWzRdWzFdLGVbNl0sZVs1XVswXSxlWzVdWzFdLGVbN10pO2JyZWFrO2Nhc2UiTWVzaCI6dD0zO289ZVsxXTtyPWVbMl07aT1lWzNdO3M9ZVs0XXx8W107YT1lWzZdO2M9ZVs3XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcGF0dGVybiB0eXBlOiAke2VbMF19YCl9Y29uc3QgbD1NYXRoLmZsb29yKHIubGVuZ3RoLzIpLGg9TWF0aC5mbG9vcihpLmxlbmd0aC8zKSx1PW4ubGVuZ3RoLGQ9cy5sZW5ndGg7bGV0IGY9MDtmb3IoY29uc3QgZSBvZiBzKXtmKz0xO2Y9NCpNYXRoLmNlaWwoZi80KTtmKz00KzQqZS5jb29yZHMubGVuZ3RoO2YrPTQrNCplLmNvbG9ycy5sZW5ndGg7dm9pZCAwIT09ZS52ZXJ0aWNlc1BlclJvdyYmKGYrPTQpfWNvbnN0IGc9bmV3IEFycmF5QnVmZmVyKDIwKzgqbCszKmgrOCp1KyhhPzE2OjApKyhjPzM6MCkrZikscD1uZXcgRGF0YVZpZXcoZyksbT1uZXcgVWludDhBcnJheShnKTtwLnNldFVpbnQ4KFBhdHRlcm5JbmZvLiNRLHQpO3Auc2V0VWludDgoUGF0dGVybkluZm8uI2VlLGE/MTowKTtwLnNldFVpbnQ4KFBhdHRlcm5JbmZvLiN0ZSxjPzE6MCk7cC5zZXRVaW50OChQYXR0ZXJuSW5mby4jYWUsbyk7cC5zZXRVaW50MzIoUGF0dGVybkluZm8uI3JlLGwsITApO3Auc2V0VWludDMyKFBhdHRlcm5JbmZvLiNpZSxoLCEwKTtwLnNldFVpbnQzMihQYXR0ZXJuSW5mby4jbmUsdSwhMCk7cC5zZXRVaW50MzIoUGF0dGVybkluZm8uI3NlLGQsITApO2xldCBiPTIwO25ldyBGbG9hdDMyQXJyYXkoZyxiLDIqbCkuc2V0KHIpO2IrPTgqbDttLnNldChpLGIpO2IrPTMqaDtmb3IoY29uc3RbZSx0XW9mIG4pe3Auc2V0RmxvYXQzMihiLGUsITApO2IrPTQ7cC5zZXRVaW50MzIoYixwYXJzZUludCh0LnNsaWNlKDEpLDE2KSwhMCk7Yis9NH1pZihhKWZvcihjb25zdCBlIG9mIGEpe3Auc2V0RmxvYXQzMihiLGUsITApO2IrPTR9aWYoYyl7bS5zZXQoYyxiKTtiKz0zfWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCB0PXNbZV07cC5zZXRVaW50OChiLHQudHlwZSk7Yis9MTtiPTQqTWF0aC5jZWlsKGIvNCk7cC5zZXRVaW50MzIoYix0LmNvb3Jkcy5sZW5ndGgsITApO2IrPTQ7bmV3IEludDMyQXJyYXkoZyxiLHQuY29vcmRzLmxlbmd0aCkuc2V0KHQuY29vcmRzKTtiKz00KnQuY29vcmRzLmxlbmd0aDtwLnNldFVpbnQzMihiLHQuY29sb3JzLmxlbmd0aCwhMCk7Yis9NDtuZXcgSW50MzJBcnJheShnLGIsdC5jb2xvcnMubGVuZ3RoKS5zZXQodC5jb2xvcnMpO2IrPTQqdC5jb2xvcnMubGVuZ3RoO2lmKHZvaWQgMCE9PXQudmVydGljZXNQZXJSb3cpe3Auc2V0VWludDMyKGIsdC52ZXJ0aWNlc1BlclJvdywhMCk7Yis9NH19cmV0dXJuIGd9Z2V0SVIoKXtjb25zdCBlPXRoaXMudmlldyx0PXRoaXMuZGF0YVtQYXR0ZXJuSW5mby4jUV0sYT0hIXRoaXMuZGF0YVtQYXR0ZXJuSW5mby4jZWVdLHI9ISF0aGlzLmRhdGFbUGF0dGVybkluZm8uI3RlXSxpPWUuZ2V0VWludDMyKFBhdHRlcm5JbmZvLiNyZSwhMCksbj1lLmdldFVpbnQzMihQYXR0ZXJuSW5mby4jaWUsITApLHM9ZS5nZXRVaW50MzIoUGF0dGVybkluZm8uI25lLCEwKSxvPWUuZ2V0VWludDMyKFBhdHRlcm5JbmZvLiNzZSwhMCk7bGV0IGM9MjA7Y29uc3QgbD1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYnVmZmVyLGMsMippKTtjKz04Kmk7Y29uc3QgaD1uZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcixjLDMqbik7Yys9MypuO2NvbnN0IHU9W107Zm9yKGxldCB0PTA7dDxzOysrdCl7Y29uc3QgdD1lLmdldEZsb2F0MzIoYywhMCk7Yys9NDtjb25zdCBhPWUuZ2V0VWludDMyKGMsITApO2MrPTQ7dS5wdXNoKFt0LGAjJHthLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCIwIil9YF0pfWxldCBkPW51bGw7aWYoYSl7ZD1bXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXtkLnB1c2goZS5nZXRGbG9hdDMyKGMsITApKTtjKz00fX1sZXQgZj1udWxsO2lmKHIpe2Y9bmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIsYywzKTtjKz0zfWNvbnN0IGc9W107Zm9yKGxldCB0PTA7dDxvOysrdCl7Y29uc3QgdD1lLmdldFVpbnQ4KGMpO2MrPTE7Yz00Kk1hdGguY2VpbChjLzQpO2NvbnN0IGE9ZS5nZXRVaW50MzIoYywhMCk7Yys9NDtjb25zdCByPW5ldyBJbnQzMkFycmF5KHRoaXMuYnVmZmVyLGMsYSk7Yys9NCphO2NvbnN0IGk9ZS5nZXRVaW50MzIoYywhMCk7Yys9NDtjb25zdCBuPW5ldyBJbnQzMkFycmF5KHRoaXMuYnVmZmVyLGMsaSk7Yys9NCppO2NvbnN0IHM9e3R5cGU6dCxjb29yZHM6cixjb2xvcnM6bn07aWYodD09PVMpe3MudmVydGljZXNQZXJSb3c9ZS5nZXRVaW50MzIoYywhMCk7Yys9NH1nLnB1c2gocyl9aWYoMT09PXQpcmV0dXJuWyJSYWRpYWxBeGlhbCIsImF4aWFsIixkLHUsQXJyYXkuZnJvbShsLnNsaWNlKDAsMikpLEFycmF5LmZyb20obC5zbGljZSgyLDQpKSxudWxsLG51bGxdO2lmKDI9PT10KXJldHVyblsiUmFkaWFsQXhpYWwiLCJyYWRpYWwiLGQsdSxbbFswXSxsWzFdXSxbbFszXSxsWzRdXSxsWzJdLGxbNV1dO2lmKDM9PT10KXtjb25zdCBlPXRoaXMuZGF0YVtQYXR0ZXJuSW5mby4jYWVdO2xldCB0PW51bGw7aWYobC5sZW5ndGg+MCl7bGV0IGU9bFswXSxhPWxbMF0scj1sWzFdLGk9bFsxXTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrPTIpe2NvbnN0IG49bFt0XSxzPWxbdCsxXTtlPWU+bj9uOmU7cj1yPnM/czpyO2E9YTxuP246YTtpPWk8cz9zOml9dD1bZSxyLGEsaV19cmV0dXJuWyJNZXNoIixlLGwsaCxnLHQsZCxmXX10aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdHRlcm4ga2luZDogJHt0fWApfX1jb25zdCBjaT0yLGxpPTMsaGk9NCx1aT01LGRpPTYsZmk9NztjbGFzcyBQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIFBhdHRlcm4uIil9c3RhdGljIHBhcnNlU2hhZGluZyhlLHQsYSxyLGksbil7Y29uc3Qgcz1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxvPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobyl7Y2FzZSBjaTpjYXNlIGxpOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHMsdCxhLHIsaSxuKTtjYXNlIGhpOmNhc2UgdWk6Y2FzZSBkaTpjYXNlIGZpOnJldHVybiBuZXcgTWVzaFNoYWRpbmcoZSx0LGEscixpLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbnN1cHBvcnRlZCBTaGFkaW5nVHlwZTogIitvKX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihlKTtyZXR1cm4gbmV3IER1bW15U2hhZGluZ319fWNsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBTTUFMTF9OVU1CRVI9MWUtNjtnZXRJUigpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09Y2k/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1saSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBvPUNvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6ZS5nZXRSYXcoIkNTIil8fGUuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczphLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGdsb2JhbENvbG9yU3BhY2VDYWNoZTppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCk7bGV0IGM9MCxsPTE7Y29uc3QgaD1lLmdldEFycmF5KCJEb21haW4iKTtpc051bWJlckFycmF5KGgsMikmJihbYyxsXT1oKTtsZXQgdT0hMSxkPSExO2NvbnN0IGY9ZS5nZXRBcnJheSgiRXh0ZW5kIik7KGZ1bmN0aW9uIGlzQm9vbGVhbkFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeShlPT4iYm9vbGVhbiI9PXR5cGVvZiBlKX0pKGYsMikmJihbdSxkXT1mKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1saXx8dSYmZCkpe2NvbnN0W2UsdCxhLHIsaSxuXT10aGlzLmNvb3Jkc0FycixzPU1hdGguaHlwb3QoZS1yLHQtaSk7YTw9bitzJiZuPD1hK3MmJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PXU7dGhpcy5leHRlbmRFbmQ9ZDtjb25zdCBnPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLHA9ci5jcmVhdGUoZywhMCksbT0obC1jKS84NDAsYj10aGlzLmNvbG9yU3RvcHM9W107aWYoYz49bHx8bTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCB5PW5ldyBGbG9hdDMyQXJyYXkoby5udW1Db21wcyksdz1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCB4PTA7d1swXT1jO3AodywwLHksMCk7Y29uc3QgUz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7by5nZXRSZ2IoeSwwLFMpO2xldFtrLEMsdl09UztiLnB1c2goWzAsVXRpbC5tYWtlSGV4Q29sb3IoayxDLHYpXSk7bGV0IEY9MTt3WzBdPWMrbTtwKHcsMCx5LDApO28uZ2V0UmdiKHksMCxTKTtsZXRbVCxPLERdPVMsTT1ULWsrMSxSPU8tQysxLE49RC12KzEsRT1ULWstMSxMPU8tQy0xLF89RC12LTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXt3WzBdPWMrZSptO3AodywwLHksMCk7by5nZXRSZ2IoeSwwLFMpO2NvbnN0W3QsYSxyXT1TLGk9ZS14O009TWF0aC5taW4oTSwodC1rKzEpL2kpO1I9TWF0aC5taW4oUiwoYS1DKzEpL2kpO049TWF0aC5taW4oTiwoci12KzEpL2kpO0U9TWF0aC5tYXgoRSwodC1rLTEpL2kpO0w9TWF0aC5tYXgoTCwoYS1DLTEpL2kpO189TWF0aC5tYXgoXywoci12LTEpL2kpO2lmKCEoRTw9TSYmTDw9UiYmXzw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoVCxPLEQpO2IucHVzaChbRi84NDAsZV0pO009dC1UKzE7Uj1hLU8rMTtOPXItRCsxO0U9dC1ULTE7TD1hLU8tMTtfPXItRC0xO3g9RjtrPVQ7Qz1PO3Y9RH1GPWU7VD10O089YTtEPXJ9Yi5wdXNoKFsxLFV0aWwubWFrZUhleENvbG9yKFQsTyxEKV0pO2xldCBVPSJ0cmFuc3BhcmVudCI7ZS5oYXMoIkJhY2tncm91bmQiKSYmKFU9by5nZXRSZ2JIZXgoZS5nZXQoIkJhY2tncm91bmQiKSwwKSk7aWYoIXUpe2IudW5zaGlmdChbMCxVXSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFkKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSxVXSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdHtjb29yZHNBcnI6ZSxzaGFkaW5nVHlwZTp0fT10aGlzO2xldCBhLHIsaSxuLHM7aWYodD09PWNpKXtyPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07bj1udWxsO3M9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09bGkpe3I9W2VbMF0sZVsxXV07aT1bZVszXSxlWzRdXTtuPWVbMl07cz1lWzVdO2E9InJhZGlhbCJ9ZWxzZSB1bnJlYWNoYWJsZShgZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICR7dH1gKTtyZXR1cm5bIlJhZGlhbEF4aWFsIixhLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMscixpLG4sc119fWNsYXNzIE1lc2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMuY29udGV4dD10O3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCBhPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KGEpO2NvbnN0IHI9dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShyKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoZTwwKXJldHVybiExO3RoaXMuYnVmZmVyPWU7dGhpcy5idWZmZXJMZW5ndGg9ODtyZXR1cm4hMH1yZWFkQml0cyhlKXtjb25zdHtzdHJlYW06dH09dGhpcztsZXR7YnVmZmVyOmEsYnVmZmVyTGVuZ3RoOnJ9PXRoaXM7aWYoMzI9PT1lKXtpZigwPT09cilyZXR1cm4gdC5nZXRJbnQzMigpPj4+MDthPWE8PDI0fHQuZ2V0Qnl0ZSgpPDwxNnx0LmdldEJ5dGUoKTw8OHx0LmdldEJ5dGUoKTtjb25zdCBlPXQuZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PHIpLTE7cmV0dXJuKGE8PDgtcnwoMjU1JmUpPj5yKT4+PjB9aWYoOD09PWUmJjA9PT1yKXJldHVybiB0LmdldEJ5dGUoKTtmb3IoO3I8ZTspe2E9YTw8OHx0LmdldEJ5dGUoKTtyKz04fXItPWU7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmJ1ZmZlcj1hJigxPDxyKS0xO3JldHVybiBhPj5yfWFsaWduKCl7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0e2JpdHNQZXJDb29yZGluYXRlOmUsZGVjb2RlOnR9PXRoaXMuY29udGV4dCxhPXRoaXMucmVhZEJpdHMoZSkscj10aGlzLnJlYWRCaXRzKGUpLGk9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bYSppKih0WzFdLXRbMF0pK3RbMF0scippKih0WzNdLXRbMl0pK3RbMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3R7Yml0c1BlckNvbXBvbmVudDplLGNvbG9yRm46dCxjb2xvclNwYWNlOmEsZGVjb2RlOnIsbnVtQ29tcHM6aX09dGhpcy5jb250ZXh0LG49ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxzPXRoaXMudG1wQ29tcHNCdWY7Zm9yKGxldCB0PTAsYT00O3Q8aTt0KyssYSs9Mil7Y29uc3QgaT10aGlzLnJlYWRCaXRzKGUpO3NbdF09aSpuKihyW2ErMV0tclthXSkrclthXX1jb25zdCBvPXRoaXMudG1wQ3NDb21wc0J1Zjt0Py4ocywwLG8sMCk7cmV0dXJuIGEuZ2V0UmdiKG8sMCl9fWxldCBnaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldEIoZSl7cmV0dXJuIGdpW2VdfHw9ZnVuY3Rpb24gYnVpbGRCKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTA7YTw9ZTthKyspe2NvbnN0IHI9YS9lLGk9MS1yO3QucHVzaChuZXcgRmxvYXQzMkFycmF5KFtpKiozLDMqcippKioyLDMqcioqMippLHIqKjNdKSl9cmV0dXJuIHR9KGUpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpzLmdldFJhdygiQ1MiKXx8cy5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5OnIsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pO3RoaXMuYmFja2dyb3VuZD1zLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiKHMuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDtjb25zdCBjPXMuZ2V0UmF3KCJGdW5jdGlvbiIpLGw9Yz9yLmNyZWF0ZShjLCEwKTpudWxsO3RoaXMuY29vcmRzPVtdO3RoaXMuY29sb3JzPVtdO3RoaXMuZmlndXJlcz1bXTtjb25zdCBoPXtiaXRzUGVyQ29vcmRpbmF0ZTpzLmdldCgiQml0c1BlckNvb3JkaW5hdGUiKSxiaXRzUGVyQ29tcG9uZW50OnMuZ2V0KCJCaXRzUGVyQ29tcG9uZW50IiksYml0c1BlckZsYWc6cy5nZXQoIkJpdHNQZXJGbGFnIiksZGVjb2RlOnMuZ2V0QXJyYXkoIkRlY29kZSIpLGNvbG9yRm46bCxjb2xvclNwYWNlOm8sbnVtQ29tcHM6bD8xOm8ubnVtQ29tcHN9LHU9bmV3IE1lc2hTdHJlYW1SZWFkZXIoZSxoKTtsZXQgZD0hMTtzd2l0Y2godGhpcy5zaGFkaW5nVHlwZSl7Y2FzZSBoaTp0aGlzLl9kZWNvZGVUeXBlNFNoYWRpbmcodSk7YnJlYWs7Y2FzZSB1aTpjb25zdCBlPTB8cy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBWZXJ0aWNlc1BlclJvdyIpO3RoaXMuX2RlY29kZVR5cGU1U2hhZGluZyh1LGUpO2JyZWFrO2Nhc2UgZGk6dGhpcy5fZGVjb2RlVHlwZTZTaGFkaW5nKHUpO2Q9ITA7YnJlYWs7Y2FzZSBmaTp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcodSk7ZD0hMDticmVhaztkZWZhdWx0OnVucmVhY2hhYmxlKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYoZCl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPVtdLGk9W107bGV0IG49MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpLG89ZS5yZWFkQ29vcmRpbmF0ZSgpLGM9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1uKXtpZighKDA8PXMmJnM8PTIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNCBmbGFnIik7c3dpdGNoKHMpe2Nhc2UgMDpuPTM7YnJlYWs7Y2FzZSAxOmkucHVzaChpLmF0KC0yKSxpLmF0KC0xKSk7bj0xO2JyZWFrO2Nhc2UgMjppLnB1c2goaS5hdCgtMyksaS5hdCgtMSkpO249MX1yLnB1c2gocyl9aS5wdXNoKHQubGVuZ3RoKTt0LnB1c2gobyk7YS5wdXNoKGMpO24tLTtlLmFsaWduKCl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6eCxjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxpPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksbj1lLnJlYWRDb21wb25lbnRzKCk7aS5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKG4pfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOlMsY29vcmRzOm5ldyBJbnQzMkFycmF5KGkpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKSx2ZXJ0aWNlc1BlclJvdzp0fSl9X2RlY29kZVR5cGU2U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG49ZS5yZWFkRmxhZygpO2lmKCEoMDw9biYmbjw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU2IGZsYWciKTtjb25zdCBzPXQubGVuZ3RoO2ZvcihsZXQgYT0wLHI9MCE9PW4/ODoxMjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09bj8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgYyxsLGgsdTtzd2l0Y2gobil7Y2FzZSAwOnJbMTJdPXMrMztyWzEzXT1zKzQ7clsxNF09cys1O3JbMTVdPXMrNjtyWzhdPXMrMjtyWzExXT1zKzc7cls0XT1zKzE7cls3XT1zKzg7clswXT1zO3JbMV09cysxMTtyWzJdPXMrMTA7clszXT1zKzk7aVsyXT1vKzE7aVszXT1vKzI7aVswXT1vO2lbMV09byszO2JyZWFrO2Nhc2UgMTpjPXJbMTJdO2w9clsxM107aD1yWzE0XTt1PXJbMTVdO3JbMTJdPXU7clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1oO3JbMTFdPXMrMztyWzRdPWw7cls3XT1zKzQ7clswXT1jO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2M9aVsyXTtsPWlbM107aVsyXT1sO2lbM109bztpWzBdPWM7aVsxXT1vKzE7YnJlYWs7Y2FzZSAyOmM9clsxNV07bD1yWzExXTtyWzEyXT1yWzNdO3JbMTNdPXMrMDtyWzE0XT1zKzE7clsxNV09cysyO3JbOF09cls3XTtyWzExXT1zKzM7cls0XT1sO3JbN109cys0O3JbMF09YztyWzFdPXMrNztyWzJdPXMrNjtyWzNdPXMrNTtjPWlbM107aVsyXT1pWzFdO2lbM109bztpWzBdPWM7aVsxXT1vKzE7YnJlYWs7Y2FzZSAzOnJbMTJdPXJbMF07clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1yWzFdO3JbMTFdPXMrMztyWzRdPXJbMl07cls3XT1zKzQ7clswXT1yWzNdO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2lbMl09aVswXTtpWzNdPW87aVswXT1pWzFdO2lbMV09bysxfXJbNV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtyWzBdXVswXS10W3JbMTVdXVswXSs2Kih0W3JbNF1dWzBdK3RbclsxXV1bMF0pLTIqKHRbclsxMl1dWzBdK3RbclszXV1bMF0pKzMqKHRbclsxM11dWzBdK3Rbcls3XV1bMF0pKS85LCgtNCp0W3JbMF1dWzFdLXRbclsxNV1dWzFdKzYqKHRbcls0XV1bMV0rdFtyWzFdXVsxXSktMioodFtyWzEyXV1bMV0rdFtyWzNdXVsxXSkrMyoodFtyWzEzXV1bMV0rdFtyWzddXVsxXSkpLzldKTtyWzZdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbclszXV1bMF0tdFtyWzEyXV1bMF0rNioodFtyWzJdXVswXSt0W3JbN11dWzBdKS0yKih0W3JbMF1dWzBdK3RbclsxNV1dWzBdKSszKih0W3JbNF1dWzBdK3RbclsxNF1dWzBdKSkvOSwoLTQqdFtyWzNdXVsxXS10W3JbMTJdXVsxXSs2Kih0W3JbMl1dWzFdK3Rbcls3XV1bMV0pLTIqKHRbclswXV1bMV0rdFtyWzE1XV1bMV0pKzMqKHRbcls0XV1bMV0rdFtyWzE0XV1bMV0pKS85XSk7cls5XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W3JbMTJdXVswXS10W3JbM11dWzBdKzYqKHRbcls4XV1bMF0rdFtyWzEzXV1bMF0pLTIqKHRbclswXV1bMF0rdFtyWzE1XV1bMF0pKzMqKHRbclsxMV1dWzBdK3RbclsxXV1bMF0pKS85LCgtNCp0W3JbMTJdXVsxXS10W3JbM11dWzFdKzYqKHRbcls4XV1bMV0rdFtyWzEzXV1bMV0pLTIqKHRbclswXV1bMV0rdFtyWzE1XV1bMV0pKzMqKHRbclsxMV1dWzFdK3RbclsxXV1bMV0pKS85XSk7clsxMF09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtyWzE1XV1bMF0tdFtyWzBdXVswXSs2Kih0W3JbMTFdXVswXSt0W3JbMTRdXVswXSktMioodFtyWzEyXV1bMF0rdFtyWzNdXVswXSkrMyoodFtyWzJdXVswXSt0W3JbOF1dWzBdKSkvOSwoLTQqdFtyWzE1XV1bMV0tdFtyWzBdXVsxXSs2Kih0W3JbMTFdXVsxXSt0W3JbMTRdXVsxXSktMioodFtyWzEyXV1bMV0rdFtyWzNdXVsxXSkrMyoodFtyWzJdXVsxXSt0W3JbOF1dWzFdKSkvOV0pO3RoaXMuZmlndXJlcy5wdXNoKHt0eXBlOmssY29vcmRzOm5ldyBJbnQzMkFycmF5KHIpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKX0pfX1fZGVjb2RlVHlwZTdTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbj1lLnJlYWRGbGFnKCk7aWYoISgwPD1uJiZuPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IHM9dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09bj8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09bj8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgYyxsLGgsdTtzd2l0Y2gobil7Y2FzZSAwOnJbMTJdPXMrMztyWzEzXT1zKzQ7clsxNF09cys1O3JbMTVdPXMrNjtyWzhdPXMrMjtyWzldPXMrMTM7clsxMF09cysxNDtyWzExXT1zKzc7cls0XT1zKzE7cls1XT1zKzEyO3JbNl09cysxNTtyWzddPXMrODtyWzBdPXM7clsxXT1zKzExO3JbMl09cysxMDtyWzNdPXMrOTtpWzJdPW8rMTtpWzNdPW8rMjtpWzBdPW87aVsxXT1vKzM7YnJlYWs7Y2FzZSAxOmM9clsxMl07bD1yWzEzXTtoPXJbMTRdO3U9clsxNV07clsxMl09dTtyWzEzXT1zKzA7clsxNF09cysxO3JbMTVdPXMrMjtyWzhdPWg7cls5XT1zKzk7clsxMF09cysxMDtyWzExXT1zKzM7cls0XT1sO3JbNV09cys4O3JbNl09cysxMTtyWzddPXMrNDtyWzBdPWM7clsxXT1zKzc7clsyXT1zKzY7clszXT1zKzU7Yz1pWzJdO2w9aVszXTtpWzJdPWw7aVszXT1vO2lbMF09YztpWzFdPW8rMTticmVhaztjYXNlIDI6Yz1yWzE1XTtsPXJbMTFdO3JbMTJdPXJbM107clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1yWzddO3JbOV09cys5O3JbMTBdPXMrMTA7clsxMV09cyszO3JbNF09bDtyWzVdPXMrODtyWzZdPXMrMTE7cls3XT1zKzQ7clswXT1jO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2M9aVszXTtpWzJdPWlbMV07aVszXT1vO2lbMF09YztpWzFdPW8rMTticmVhaztjYXNlIDM6clsxMl09clswXTtyWzEzXT1zKzA7clsxNF09cysxO3JbMTVdPXMrMjtyWzhdPXJbMV07cls5XT1zKzk7clsxMF09cysxMDtyWzExXT1zKzM7cls0XT1yWzJdO3JbNV09cys4O3JbNl09cysxMTtyWzddPXMrNDtyWzBdPXJbM107clsxXT1zKzc7clsyXT1zKzY7clszXT1zKzU7aVsyXT1pWzBdO2lbM109bztpWzBdPWlbMV07aVsxXT1vKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ayxjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTthc3NlcnQodC50eXBlPT09aywiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLG49dC5jb2xvcnMscz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLG89TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxjPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksbD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCBoPU1hdGguY2VpbCgoYy1zKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO2g9TWF0aENsYW1wKGgsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO3U9TWF0aENsYW1wKHUsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2NvbnN0IGQ9aCsxLGY9bmV3IEludDMyQXJyYXkoKHUrMSkqZCksZz1uZXcgSW50MzJBcnJheSgodSsxKSpkKTtsZXQgcD0wO2NvbnN0IG09bmV3IFVpbnQ4QXJyYXkoMyksYj1uZXcgVWludDhBcnJheSgzKSx5PXJbblswXV0sdz1yW25bMV1dLHg9cltuWzJdXSxDPXJbblszXV0sdj1nZXRCKHUpLEY9Z2V0QihoKTtmb3IobGV0IGU9MDtlPD11O2UrKyl7bVswXT0oeVswXSoodS1lKSt4WzBdKmUpL3V8MDttWzFdPSh5WzFdKih1LWUpK3hbMV0qZSkvdXwwO21bMl09KHlbMl0qKHUtZSkreFsyXSplKS91fDA7YlswXT0od1swXSoodS1lKStDWzBdKmUpL3V8MDtiWzFdPSh3WzFdKih1LWUpK0NbMV0qZSkvdXwwO2JbMl09KHdbMl0qKHUtZSkrQ1syXSplKS91fDA7Zm9yKGxldCB0PTA7dDw9aDt0KysscCsrKXtpZighKDAhPT1lJiZlIT09dXx8MCE9PXQmJnQhPT1oKSljb250aW51ZTtsZXQgbj0wLHM9MCxvPTA7Zm9yKGxldCByPTA7cjw9MztyKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bcl0qRlt0XVtjXTtuKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfWZbcF09YS5sZW5ndGg7YS5wdXNoKFtuLHNdKTtnW3BdPXIubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0obVswXSooaC10KStiWzBdKnQpL2h8MDtjWzFdPShtWzFdKihoLXQpK2JbMV0qdCkvaHwwO2NbMl09KG1bMl0qKGgtdCkrYlsyXSp0KS9ofDA7ci5wdXNoKGMpfX1mWzBdPWlbMF07Z1swXT1uWzBdO2ZbaF09aVszXTtnW2hdPW5bMV07ZltkKnVdPWlbMTJdO2dbZCp1XT1uWzJdO2ZbZCp1K2hdPWlbMTVdO2dbZCp1K2hdPW5bM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOlMsY29vcmRzOmYsY29sb3JzOmcsdmVydGljZXNQZXJSb3c6ZH19X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0sYT1lLHI9dDtmb3IobGV0IGk9MSxuPXRoaXMuY29vcmRzLmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPXRoaXMuY29vcmRzW2ldWzBdLHM9dGhpcy5jb29yZHNbaV1bMV07ZT1lPm4/bjplO3Q9dD5zP3M6dDthPWE8bj9uOmE7cj1yPHM/czpyfXRoaXMuYm91bmRzPVtlLHQsYSxyXX1fcGFja0RhdGEoKXtsZXQgZSx0LGEscjtjb25zdCBpPXRoaXMuY29vcmRzLG49bmV3IEZsb2F0MzJBcnJheSgyKmkubGVuZ3RoKTtmb3IoZT0wLGE9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9aVtlXTtuW2ErK109dFswXTtuW2ErK109dFsxXX10aGlzLmNvb3Jkcz1uO2NvbnN0IHM9dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKnMubGVuZ3RoKTtmb3IoZT0wLGE9MCx0PXMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9c1tlXTtvW2ErK109dFswXTtvW2ErK109dFsxXTtvW2ErK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGM9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1jLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWNbZV0saT10LmNvb3JkcyxuPXQuY29sb3JzO2ZvcihhPTAscj1pLmxlbmd0aDthPHI7YSsrKXtpW2FdKj0yO25bYV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09PTB8fGVbM10tZVsxXT09PTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIE1lc2hTaGFkaW5nIGJvdW5kczogWyR7ZX1dLmApO3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSx0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMsZSx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsYSl7Y29uc3Qgcj1sb29rdXBNYXRyaXgodC5nZXRBcnJheSgiTWF0cml4IiksZmEpLGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIWl8fGlbMl0taVswXT09PTB8fGlbM10taVsxXT09PTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheS4iKTtjb25zdCBuPXQuZ2V0KCJYU3RlcCIpO2lmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9YU3RlcCB2YWx1ZS4iKTtjb25zdCBzPXQuZ2V0KCJZU3RlcCIpO2lmKCJudW1iZXIiIT10eXBlb2Ygcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9ZU3RlcCB2YWx1ZS4iKTtjb25zdCBvPXQuZ2V0KCJQYWludFR5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihvKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9QYWludFR5cGUgdmFsdWUuIik7Y29uc3QgYz10LmdldCgiVGlsaW5nVHlwZSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1RpbGluZ1R5cGUgdmFsdWUuIik7cmV0dXJuWyJUaWxpbmdQYXR0ZXJuIixhLGUscixpLG4scyxvLGNdfWNvbnN0IHBpPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLG1pPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxiaT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3NDExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx5aT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sd2k9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHhpPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxTaT1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sQWk9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LGtpPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sQ2k9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHZpPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sRmk9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxJaT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjAwMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxUaT17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LE9pPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLERpPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxNaT1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxSaT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sQmk9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLE5pPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxQaT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sRWk9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLF9pPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0samk9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLFhpPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxxaT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sSGk9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxXaT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0semk9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLCRpPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxHaT1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sVmk9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LEtpPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEppPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxZaT1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sWmk9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LFFpPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sZW49e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHRuPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxhbj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0scm49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOkdpLGJhc2VXaWR0aHM6X2ksYmFzZU1hcHBpbmc6amksbWV0cmljczpWaX07ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6WGksYmFzZVdpZHRoczpNaSxiYXNlTWFwcGluZzpSaSxtZXRyaWNzOnFpfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczp6aSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6JGl9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpIaSxiYXNlV2lkdGhzOkJpLGJhc2VNYXBwaW5nOk5pLG1ldHJpY3M6V2l9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpfaSxiYXNlTWFwcGluZzpqaX07ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOk1pLGJhc2VNYXBwaW5nOlJpfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6UGksYmFzZU1hcHBpbmc6RWl9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpCaSxiYXNlTWFwcGluZzpOaX07ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6U2ksYmFzZVdpZHRoczpfaSxiYXNlTWFwcGluZzpqaSxtZXRyaWNzOkFpfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpwaSxiYXNlV2lkdGhzOk1pLGJhc2VNYXBwaW5nOlJpLG1ldHJpY3M6bWl9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczp3aSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6eGl9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmJpLGJhc2VXaWR0aHM6QmksYmFzZU1hcHBpbmc6TmksbWV0cmljczp5aX07ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6dG4sYmFzZVdpZHRoczpfaSxiYXNlTWFwcGluZzpqaSxtZXRyaWNzOmFufTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpLaSxiYXNlV2lkdGhzOk1pLGJhc2VNYXBwaW5nOlJpLG1ldHJpY3M6Sml9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpRaSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6ZW59O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOllpLGJhc2VXaWR0aHM6QmksYmFzZU1hcHBpbmc6TmksbWV0cmljczpaaX07ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpPaSxiYXNlV2lkdGhzOl9pLGJhc2VNYXBwaW5nOmppLG1ldHJpY3M6RGl9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6a2ksYmFzZVdpZHRoczpNaSxiYXNlTWFwcGluZzpSaSxtZXRyaWNzOkNpfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpJaSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6VGl9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6dmksYmFzZVdpZHRoczpCaSxiYXNlTWFwcGluZzpOaSxtZXRyaWNzOkZpfX0pO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJuKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczphLGJhc2VNYXBwaW5nOnIsZmFjdG9yczppfT10LG49aT9hLm1hcCgoZSx0KT0+ZSppW3RdKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKChlLHQpPT5bZSx0XSkuc29ydCgoW2VdLFt0XSk9PmUtdCkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe3MucHVzaChuW3RdKTtvKz0xfWVsc2V7bz1lO3M9W25bdF1dO2MucHVzaChlLHMpfXJldHVybiBjfShlKSxhPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2Euc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTthLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2Euc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Euc2V0KCJXIix0KTthLnNldCgiRmlyc3RDaGFyIix0WzBdKTthLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCByPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgRGljdChudWxsKTtpLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO2kuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7aS5zZXQoIlN1cHBsZW1lbnQiLDApO2Euc2V0KCJDSURTeXN0ZW1JbmZvIixpKTtyZXR1cm4gYX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChubi5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KG5uLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQobm4uTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChubi5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KG5uLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qobm4uUkJSQUNFKTtpZih0aGlzLmFjY2VwdChubi5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQobm4uTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgYT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qobm4uUkJSQUNFKTt0aGlzLmV4cGVjdChubi5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBubj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihubi5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKG5uLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKG5uLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihubi5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihubi5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBzYTtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihubi5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHthfWApO3JldHVybiBhfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxhKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX1jbGFzcyBHbG9iYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9Y2xlYXIoKXt0aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNsYXNzIEdsb2JhbEltYWdlQ2FjaGV7c3RhdGljIE5VTV9QQUdFU19USFJFU0hPTEQ9MjtzdGF0aWMgTUlOX0lNQUdFU19UT19DQUNIRT0xMDtzdGF0aWMgTUFYX0JZVEVfU0laRT01ZTc7I29lPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I2NlKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0I2xlKCl7cmV0dXJuISh0aGlzLl9pbWFnZUNhY2hlLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NSU5fSU1BR0VTX1RPX0NBQ0hFKSYmISh0aGlzLiNjZTxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCk7cmV0dXJuIShhLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI2xlKX1hZGREZWNvZGVGYWlsZWQoZSl7dGhpcy4jb2UucHV0KGUpfWhhc0RlY29kZUZhaWxlZChlKXtyZXR1cm4gdGhpcy4jb2UuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgYT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTthJiYoYS5ieXRlU2l6ZXx8KGEuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBhPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighYSlyZXR1cm4gbnVsbDtpZihhLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIXIpcmV0dXJuIG51bGw7YS5hZGQodCk7cmV0dXJuIHJ9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNsZT93YXJuKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2lmKCFlKXt0aGlzLiNvZS5jbGVhcigpO3RoaXMuX3JlZkNhY2hlLmNsZWFyKCl9dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7Y29uc3RydWN0b3Ioe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dD0hMH0pe3RoaXMueHJlZj1lO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09dH1jcmVhdGUoZSx0PSExKXtsZXQgYSxyO2UgaW5zdGFuY2VvZiBSZWY/YT1lOmUgaW5zdGFuY2VvZiBEaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9ZS5kaWN0Py5vYmpJZCk7aWYoYSl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYoYSk7aWYoZSlyZXR1cm4gZX1jb25zdCBpPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSAtIGV4cGVjdGVkICJwYXJzZUFycmF5IiBhcmd1bWVudC4nKTtyPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkodGhpcyxpKX1lbHNlIHI9UERGRnVuY3Rpb24ucGFyc2UodGhpcyxpKTthJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsYSxyKTtyZXR1cm4gcn1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoZT0+K2UpOm51bGx9Y2xhc3MgUERGRnVuY3Rpb257c3RhdGljIGdldFNhbXBsZUFycmF5KGUsdCxhLHIpe2xldCBpLG4scz0xO2ZvcihpPTAsbj1lLmxlbmd0aDtpPG47aSsrKXMqPWVbaV07cyo9dDtjb25zdCBvPW5ldyBBcnJheShzKTtsZXQgYz0wLGw9MDtjb25zdCBoPTEvKDIqKmEtMSksdT1yLmdldEJ5dGVzKChzKmErNykvOCk7bGV0IGQ9MDtmb3IoaT0wO2k8cztpKyspe2Zvcig7YzxhOyl7bDw8PTg7bHw9dVtkKytdO2MrPTh9Yy09YTtvW2ldPShsPj5jKSpoO2wmPSgxPDxjKS0xfXJldHVybiBvfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9dC5kaWN0fHx0O3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKGUsdCxhKTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZChlLGEpO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKGUsYSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LGEpfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoZSx0KXtjb25zdHt4cmVmOmF9PWUscj1bXTtmb3IoY29uc3QgaSBvZiB0KXIucHVzaCh0aGlzLnBhcnNlKGUsYS5mZXRjaElmUmVmKGkpKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxhLGkpe2ZvcihsZXQgbj0wLHM9ci5sZW5ndGg7bjxzO24rKylyW25dKGUsdCxhLGkrbil9fXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKGUsdCxhKXtmdW5jdGlvbiB0b011bHRpQXJyYXkoZSl7Y29uc3QgdD1lLmxlbmd0aCxhPVtdO2xldCByPTA7Zm9yKGxldCBpPTA7aTx0O2krPTIpYVtyKytdPVtlW2ldLGVbaSsxXV07cmV0dXJuIGF9ZnVuY3Rpb24gaW50ZXJwb2xhdGUoZSx0LGEscixpKXtyZXR1cm4gcisoaS1yKS8oYS10KSooZS10KX1sZXQgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRvbWFpbiIpKSxpPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXJ8fCFpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIG9yIHJhbmdlIik7Y29uc3Qgbj1yLmxlbmd0aC8yLHM9aS5sZW5ndGgvMjtyPXRvTXVsdGlBcnJheShyKTtpPXRvTXVsdGlBcnJheShpKTtjb25zdCBvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiU2l6ZSIpKSxjPWEuZ2V0KCJCaXRzUGVyU2FtcGxlIiksbD1hLmdldCgiT3JkZXIiKXx8MTsxIT09bCYmaW5mbygiTm8gc3VwcG9ydCBmb3IgY3ViaWMgc3BsaW5lIGludGVycG9sYXRpb246ICIrbCk7bGV0IGg9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJFbmNvZGUiKSk7aWYoaCloPXRvTXVsdGlBcnJheShoKTtlbHNle2g9W107Zm9yKGxldCBlPTA7ZTxuOysrZSloLnB1c2goWzAsb1tlXS0xXSl9bGV0IHU9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEZWNvZGUiKSk7dT11P3RvTXVsdGlBcnJheSh1KTppO2NvbnN0IGQ9dGhpcy5nZXRTYW1wbGVBcnJheShvLHMsYyx0KTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U2FtcGxlZEZuKGUsdCxhLGMpe2NvbnN0IGw9MTw8bixmPW5ldyBGbG9hdDY0QXJyYXkobCkuZmlsbCgxKSxnPW5ldyBVaW50MzJBcnJheShsKTtsZXQgcCxtLGI9cyx5PTE7Zm9yKHA9MDtwPG47KytwKXtjb25zdCBhPXJbcF1bMF0saT1yW3BdWzFdO2xldCBuPWludGVycG9sYXRlKE1hdGhDbGFtcChlW3QrcF0sYSxpKSxhLGksaFtwXVswXSxoW3BdWzFdKTtjb25zdCBzPW9bcF07bj1NYXRoQ2xhbXAobiwwLHMtMSk7Y29uc3QgYz1uPHMtMT9NYXRoLmZsb29yKG4pOm4tMSx1PWMrMS1uLGQ9bi1jLHc9YypiLHg9dytiO2ZvcihtPTA7bTxsO20rKylpZihtJnkpe2ZbbV0qPWQ7Z1ttXSs9eH1lbHNle2ZbbV0qPXU7Z1ttXSs9d31iKj1zO3k8PD0xfWZvcihtPTA7bTxzOysrbSl7bGV0IGU9MDtmb3IocD0wO3A8bDtwKyspZSs9ZFtnW3BdK21dKmZbcF07ZT1pbnRlcnBvbGF0ZShlLDAsMSx1W21dWzBdLHVbbV1bMV0pO2FbYyttXT1NYXRoQ2xhbXAoZSxpW21dWzBdLGlbbV1bMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZChlLHQpe2NvbnN0IGE9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMCIpKXx8WzBdLHI9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMSIpKXx8WzFdLGk9dC5nZXQoIk4iKSxuPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0OysrZSluLnB1c2gocltlXS1hW2VdKTtjb25zdCBzPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQscixvKXtjb25zdCBjPTE9PT1pP2VbdF06ZVt0XSoqaTtmb3IobGV0IGU9MDtlPHM7KytlKXJbbytlXT1hW2VdK2MqbltlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoZSx0KXtjb25zdCBhPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFhKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PWEubGVuZ3RoLzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3R7eHJlZjpyfT1lLGk9W107Zm9yKGNvbnN0IGEgb2YgdC5nZXQoIkZ1bmN0aW9ucyIpKWkucHVzaCh0aGlzLnBhcnNlKGUsci5mZXRjaElmUmVmKGEpKSk7Y29uc3Qgbj10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkJvdW5kcyIpKSxzPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRW5jb2RlIikpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxyLGMpe2NvbnN0IGw9TWF0aENsYW1wKGVbdF0sYVswXSxhWzFdKSxoPW4ubGVuZ3RoO2xldCB1O2Zvcih1PTA7dTxoJiYhKGw8blt1XSk7Kyt1KTtsZXQgZD1hWzBdO3U+MCYmKGQ9blt1LTFdKTtsZXQgZj1hWzFdO3U8bi5sZW5ndGgmJihmPW5bdV0pO2NvbnN0IGc9c1syKnVdLHA9c1syKnUrMV07b1swXT1kPT09Zj9nOmcrKGwtZCkqKHAtZykvKGYtZCk7aVt1XShvLDAscixjKX19c3RhdGljIGNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LGEpe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSksaT10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluLiIpO2lmKCFpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3Qgbj1uZXcgUG9zdFNjcmlwdExleGVyKHQpLHM9bmV3IFBvc3RTY3JpcHRQYXJzZXIobikucGFyc2UoKTtpZihlLmlzRXZhbFN1cHBvcnRlZCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKHMscixpKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IG89aS5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxsPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKHMpLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgdT04MTkyO2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxhLHIpe2xldCBuLHMsZj0iIjtjb25zdCBnPWQ7Zm9yKG49MDtuPGM7bisrKXtzPWVbdCtuXTtnW25dPXM7Zis9cysiXyJ9Y29uc3QgcD1oW2ZdO2lmKHZvaWQgMCE9PXApe2Euc2V0KHAscik7cmV0dXJufWNvbnN0IG09bmV3IEZsb2F0MzJBcnJheShvKSxiPWwuZXhlY3V0ZShnKSx5PWIubGVuZ3RoLW87Zm9yKG49MDtuPG87bisrKXtzPWJbeStuXTtsZXQgZT1pWzIqbl07aWYoczxlKXM9ZTtlbHNle2U9aVsyKm4rMV07cz5lJiYocz1lKX1tW25dPXN9aWYodT4wKXt1LS07aFtmXT1tfWEuc2V0KG0scil9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgYT10Lmxlbmd0aC1lLHI9ZS0xO3I+PTA7ci0tLGErKyl0LnB1c2godFthXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGE9dGhpcy5zdGFjayxyPWEubGVuZ3RoLWUsaT1hLmxlbmd0aC0xLG49cisodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPXIsdD1pO2U8dDtlKyssdC0tKXtjb25zdCByPWFbZV07YVtlXT1hW3RdO2FbdF09cn1mb3IobGV0IGU9cix0PW4tMTtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPW4sdD1pO2U8dDtlKyssdC0tKXtjb25zdCByPWFbZV07YVtlXT1hW3RdO2FbdF09cn19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgYT0wO2NvbnN0IHI9dGhpcy5vcGVyYXRvcnMsaT1yLmxlbmd0aDtsZXQgbixzLG87Zm9yKDthPGk7KXtuPXJbYSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIG4pc3dpdGNoKG4pe2Nhc2UianoiOm89dC5wb3AoKTtzPXQucG9wKCk7c3x8KGE9byk7YnJlYWs7Y2FzZSJqIjpzPXQucG9wKCk7YT1zO2JyZWFrO2Nhc2UiYWJzIjpzPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKHMpKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocytvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO3M9dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBzJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChzJiZvKTp0LnB1c2gocyZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtzPXQucG9wKCk7cz1NYXRoLmF0YW4yKHMsbykvTWF0aC5QSSoxODA7czwwJiYocys9MzYwKTt0LnB1c2gocyk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO3M9dC5wb3AoKTtzPjA/dC5wdXNoKHM8PG8pOnQucHVzaChzPj5vKTticmVhaztjYXNlImNlaWxpbmciOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKHMpKTticmVhaztjYXNlImNvcHkiOnM9dC5wb3AoKTt0LmNvcHkocyk7YnJlYWs7Y2FzZSJjb3MiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MocyUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6cz0wfHQucG9wKCk7dC5wdXNoKHMpO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocy9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHM9PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihzKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocz49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocz5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMvb3wwKTticmVhaztjYXNlImluZGV4IjpzPXQucG9wKCk7dC5pbmRleChzKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzPD1vKTticmVhaztjYXNlImxuIjpzPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKHMpKTticmVhaztjYXNlImxvZyI6cz10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKHMpKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMhPT1vKTticmVhaztjYXNlIm5lZyI6cz10LnBvcCgpO3QucHVzaCgtcyk7YnJlYWs7Y2FzZSJub3QiOnM9dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBzP3QucHVzaCghcyk6dC5wdXNoKH5zKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7cz10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIHMmJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKHN8fG8pOnQucHVzaChzfG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnJvbGwocyxvKTticmVhaztjYXNlInJvdW5kIjpzPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQocykpO2JyZWFrO2Nhc2Uic2luIjpzPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKHMlMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpzPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChzKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMtbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOnM9dC5wb3AoKTtzPXM8MD9NYXRoLmNlaWwocyk6TWF0aC5mbG9vcihzKTt0LnB1c2gocyk7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtzPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgcyYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gocyE9PW8pOnQucHVzaChzXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7bn1gKX1lbHNlIHQucHVzaChuKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1hfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSxyLGkpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWE7dGhpcy5taW49cjt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBhPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxyPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGEscil9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsYSl7Y29uc3Qgcj1bXSxpPVtdLG49dC5sZW5ndGg+PjEscz1hLmxlbmd0aD4+MTtsZXQgbyxjLGwsaCx1LGQsZixnLHA9MDtmb3IobGV0IGU9MDtlPG47ZSsrKXIucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2c9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIGcpc3dpdGNoKGcpe2Nhc2UiYWRkIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2Uic3ViIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoci5sZW5ndGg8MilyZXR1cm4gbnVsbDt1PXIucG9wKCk7ZD1yLnBvcCgpO3IucHVzaCh1LGQpO2JyZWFrO2Nhc2UicG9wIjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO3IucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09bC50eXBlKXJldHVybiBudWxsO289bC5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDt1PXJbci5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT11LnR5cGV8fCJ2YXIiPT09dS50eXBlKXtyLnB1c2godSk7YnJlYWt9Zj1uZXcgQXN0VmFyaWFibGUocCsrLHUubWluLHUubWF4KTtyW3IubGVuZ3RoLW8tMV09ZjtyLnB1c2goZik7aS5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJkdXAiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7bD1yLnBvcCgpO3IucHVzaChidWlsZE1pbk9wZXJhdGlvbihsLGVbdCsxXSkpO3QrPTY7YnJlYWt9dT1yLmF0KC0xKTtpZigibGl0ZXJhbCI9PT11LnR5cGV8fCJ2YXIiPT09dS50eXBlKXtyLnB1c2godSk7YnJlYWt9Zj1uZXcgQXN0VmFyaWFibGUocCsrLHUubWluLHUubWF4KTtyW3IubGVuZ3RoLTFdPWY7ci5wdXNoKGYpO2kucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKGYsdSkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoci5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPXIucG9wKCk7bD1yLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWgudHlwZXx8ImxpdGVyYWwiIT09bC50eXBlKXJldHVybiBudWxsO2M9aC5udW1iZXI7bz1sLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoYyl8fHIubGVuZ3RoPG8pcmV0dXJuIG51bGw7Yz0oYyVvK28pJW87aWYoMD09PWMpYnJlYWs7ci5wdXNoKC4uLnIuc3BsaWNlKHIubGVuZ3RoLW8sby1jKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIHIucHVzaChuZXcgQXN0TGl0ZXJhbChnKSl9aWYoci5sZW5ndGghPT1zKXJldHVybiBudWxsO2NvbnN0IG09W107Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7bS5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXJbZV0saT1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQoaSk7Y29uc3Qgbj1hWzIqZV0scz1hWzIqZSsxXSxvPVtpLnRvU3RyaW5nKCldO2lmKG4+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixuLCIsICIpO28ucHVzaCgiKSIpfWlmKHM8dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixzLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7bS5wdXNoKG8uam9pbigiIikpfXJldHVybiBtLmpvaW4oIlxuIil9fWNvbnN0IHNuPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxvbj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGEpe2xldCByLGk7Zm9yKHI9dCxpPWUubGVuZ3RoO3I8aTsrK3IpaWYoZVtyXSE9PWEpcmV0dXJuIHI7cmV0dXJuIHJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsaT1hLTE7cjxpOysrciwtLWkpe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbaV07ZVtpXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IGNuPVtdLGxuPVtdO2Z1bmN0aW9uIGJpZGkoZSx0PS0xLGE9ITEpe2xldCByPSEwO2NvbnN0IGk9ZS5sZW5ndGg7aWYoMD09PWl8fGEpcmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUscixhKTtjbi5sZW5ndGg9aTtsbi5sZW5ndGg9aTtsZXQgbixzLG89MDtmb3Iobj0wO248aTsrK24pe2NuW25dPWUuY2hhckF0KG4pO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KG4pO2xldCBhPSJMIjtpZih0PD0yNTUpYT1zblt0XTtlbHNlIGlmKDE0MjQ8PXQmJnQ8PTE1MjQpYT0iUiI7ZWxzZSBpZigxNTM2PD10JiZ0PD0xNzkxKXthPW9uWzI1NSZ0XTthfHx3YXJuKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UoMTc5Mjw9dCYmdDw9MjIyMHx8NjQzMzY8PXQmJnQ8PTY1MDIzfHw2NTEzNjw9dCYmdDw9NjUyNzkpJiYoYT0iQUwiKTsiUiIhPT1hJiYiQUwiIT09YSYmIkFOIiE9PWF8fG8rKztsbltuXT1hfWlmKDA9PT1vKXtyPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLHIpfWlmKC0xPT09dClpZihvL2k8LjMmJmk+NCl7cj0hMDt0PTB9ZWxzZXtyPSExO3Q9MX1jb25zdCBjPVtdO2ZvcihuPTA7bjxpOysrbiljW25dPXQ7Y29uc3QgbD1pc09kZCh0KT8iUiI6IkwiLGg9bCx1PWg7bGV0IGQsZj1oO2ZvcihuPTA7bjxpOysrbikiTlNNIj09PWxuW25dP2xuW25dPWY6Zj1sbltuXTtmPWg7Zm9yKG49MDtuPGk7KytuKXtkPWxuW25dOyJFTiI9PT1kP2xuW25dPSJBTCI9PT1mPyJBTiI6IkVOIjoiUiIhPT1kJiYiTCIhPT1kJiYiQUwiIT09ZHx8KGY9ZCl9Zm9yKG49MDtuPGk7KytuKXtkPWxuW25dOyJBTCI9PT1kJiYobG5bbl09IlIiKX1mb3Iobj0xO248aS0xOysrbil7IkVTIj09PWxuW25dJiYiRU4iPT09bG5bbi0xXSYmIkVOIj09PWxuW24rMV0mJihsbltuXT0iRU4iKTsiQ1MiIT09bG5bbl18fCJFTiIhPT1sbltuLTFdJiYiQU4iIT09bG5bbi0xXXx8bG5bbisxXSE9PWxuW24tMV18fChsbltuXT1sbltuLTFdKX1mb3Iobj0wO248aTsrK24paWYoIkVOIj09PWxuW25dKXtmb3IobGV0IGU9bi0xO2U+PTAmJiJFVCI9PT1sbltlXTstLWUpbG5bZV09IkVOIjtmb3IobGV0IGU9bisxO2U8aSYmIkVUIj09PWxuW2VdOysrZSlsbltlXT0iRU4ifWZvcihuPTA7bjxpOysrbil7ZD1sbltuXTsiV1MiIT09ZCYmIkVTIiE9PWQmJiJFVCIhPT1kJiYiQ1MiIT09ZHx8KGxuW25dPSJPTiIpfWY9aDtmb3Iobj0wO248aTsrK24pe2Q9bG5bbl07IkVOIj09PWQ/bG5bbl09IkwiPT09Zj8iTCI6IkVOIjoiUiIhPT1kJiYiTCIhPT1kfHwoZj1kKX1mb3Iobj0wO248aTsrK24paWYoIk9OIj09PWxuW25dKXtjb25zdCBlPWZpbmRVbmVxdWFsKGxuLG4rMSwiT04iKTtsZXQgdD1oO24+MCYmKHQ9bG5bbi0xXSk7bGV0IGE9dTtlKzE8aSYmKGE9bG5bZSsxXSk7IkwiIT09dCYmKHQ9IlIiKTsiTCIhPT1hJiYoYT0iUiIpO3Q9PT1hJiZsbi5maWxsKHQsbixlKTtuPWUtMX1mb3Iobj0wO248aTsrK24pIk9OIj09PWxuW25dJiYobG5bbl09bCk7Zm9yKG49MDtuPGk7KytuKXtkPWxuW25dO2lzRXZlbihjW25dKT8iUiI9PT1kP2Nbbl0rPTE6IkFOIiE9PWQmJiJFTiIhPT1kfHwoY1tuXSs9Mik6IkwiIT09ZCYmIkFOIiE9PWQmJiJFTiIhPT1kfHwoY1tuXSs9MSl9bGV0IGcscD0tMSxtPTk5O2ZvcihuPTAscz1jLmxlbmd0aDtuPHM7KytuKXtnPWNbbl07cDxnJiYocD1nKTttPmcmJmlzT2RkKGcpJiYobT1nKX1mb3IoZz1wO2c+PW07LS1nKXtsZXQgZT0tMTtmb3Iobj0wLHM9Yy5sZW5ndGg7bjxzOysrbilpZihjW25dPGcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoY24sZSxuKTtlPS0xfX1lbHNlIGU8MCYmKGU9bik7ZT49MCYmcmV2ZXJzZVZhbHVlcyhjbixlLGMubGVuZ3RoKX1mb3Iobj0wLHM9Y24ubGVuZ3RoO248czsrK24pe2NvbnN0IGU9Y25bbl07IjwiIT09ZSYmIj4iIT09ZXx8KGNuW25dPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoY24uam9pbigiIikscil9Y29uc3QgaG49e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sdW49e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGRuPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LGZuPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxnbj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJQVCBBc3RyYSBTZXJpZiIsIkRlamFWdSBTZXJpZiIsIkJpdHN0cmVhbSBWZXJhIFNlcmlmIiwiVWJ1bnR1Il0sc3R5bGU6aG4sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6dW4sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpkbix1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpmbix1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6aG4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZCIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIixzdHlsZTp1bix1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1PYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiIsc3R5bGU6ZG4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6Zm4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJDb3VyaWVyIix7bG9jYWw6WyJDb3VyaWVyIiwiQ291cmllciBOZXciLCJMaWJlcmF0aW9uIE1vbm8iLCJOaW1idXMgTW9ubyIsIk5pbWJ1cyBNb25vIEwiLCJDb3VzaW5lIiwiQ3VtYmVybGFuZCIsIlRlWCBHeXJlIEN1cnNvciIsIkZyZWVNb25vIiwiTGludXggTGliZXJ0aW5lIE1vbm8gTyIsIkxpYmVydGludXMgTW9ubyJdLHN0eWxlOmhuLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6dW4sdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpkbix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpmbix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOmhuLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJBcmlhbE5hcnJvdy1Cb2xkIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTp1bixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbE5hcnJvdy1JdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmRuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJDYWxpYnJpIix7bG9jYWw6WyJDYWxpYnJpIiwiQ2FybGl0byJdLHN0eWxlOmhuLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJDYWxpYnJpLUJvbGQiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6dW4sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6ZG4sZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQ2FsaWJyaS1Cb2xkSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJXaW5nZGluZ3MiLHtsb2NhbDpbIldpbmdkaW5ncyIsIlVSVyBEaW5nYmF0cyJdLHN0eWxlOmhufV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV1dKSxwbj1uZXcgTWFwKFtbIkFyaWFsLUJsYWNrIiwiQXJpYWxCbGFjayJdXSk7ZnVuY3Rpb24gZ2V0RmFtaWx5TmFtZShlKXtjb25zdCB0PW5ldyBTZXQoWyJ0aGluIiwiZXh0cmFsaWdodCIsInVsdHJhbGlnaHQiLCJkZW1pbGlnaHQiLCJzZW1pbGlnaHQiLCJsaWdodCIsImJvb2siLCJyZWd1bGFyIiwibm9ybWFsIiwibWVkaXVtIiwiZGVtaWJvbGQiLCJzZW1pYm9sZCIsImJvbGQiLCJleHRyYWJvbGQiLCJ1bHRyYWJvbGQiLCJibGFjayIsImhlYXZ5IiwiZXh0cmFibGFjayIsInVsdHJhYmxhY2siLCJyb21hbiIsIml0YWxpYyIsIm9ibGlxdWUiLCJ1bHRyYWNvbmRlbnNlZCIsImV4dHJhY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaWNvbmRlbnNlZCIsIm5vcm1hbCIsInNlbWlleHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmFleHBhbmRlZCIsInVsdHJhZXhwYW5kZWQiLCJib2xkaXRhbGljIl0pO3JldHVybiBlLnNwbGl0KC9bLSAsK10rL2cpLmZpbHRlcihlPT4hdC5oYXMoZS50b0xvd2VyQ2FzZSgpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6YSxmYWxsYmFjazpyLHN0eWxlOmksdWx0aW1hdGU6bn0scyxvLGM9ITAsbD0hMCxoPSIiKXtjb25zdCB1PXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9aD9gICR7aH1gOiIiO2Zvcihjb25zdCBhIG9mIHQpcy5wdXNoKGBsb2NhbCgke2F9JHtlfSlgKX1pZihlKXtjb25zdCB0PWduLmdldChlKSxuPWh8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgdW46cmV0dXJuIkJvbGQiO2Nhc2UgZG46cmV0dXJuIkl0YWxpYyI7Y2FzZSBmbjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShpKTtPYmplY3QuYXNzaWduKHUsZ2VuZXJhdGVGb250KHQscyxvLGMmJiFyLGwmJiFhLG4pKX1pJiYodS5zdHlsZT1pKTtuJiYodS51bHRpbWF0ZT1uKTtpZihjJiZyKXtjb25zdCBlPWduLmdldChyKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUscyxvLGMsbCYmIWEsaCk7dS51bHRpbWF0ZXx8PXR9bCYmYSYmbyYmcy5wdXNoKGB1cmwoJHtvfSR7YX0pYCk7cmV0dXJuIHV9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsYSxyLGksbil7aWYoci5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1uJiYiVHlwZTEiIT09bnx8IS9eW0EtWl17Nn1cKy8udGVzdChyKXx8KHI9ci5zbGljZSg3KSk7Y29uc3Qgcz1yPW5vcm1hbGl6ZUZvbnROYW1lKHIpO2xldCBvPWUuZ2V0KHMpO2lmKG8pcmV0dXJuIG87bGV0IGM9Z24uZ2V0KHIpO2lmKCFjKWZvcihjb25zdFtlLHRdb2YgcG4paWYoci5zdGFydHNXaXRoKGUpKXtyPWAke3R9JHtyLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtjPWduLmdldChyKTticmVha31sZXQgbD0hMTtpZighYyl7Yz1nbi5nZXQoaSk7bD0hMH1jb25zdCBoPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFjKXtpZighdmFsaWRhdGVGb250TmFtZShyKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHtyfWApO2Uuc2V0KHMsbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KHIpLGE9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QociksaT10JiZhJiZmbnx8dCYmdW58fGEmJmRufHxobjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUocil9Iiwke2h9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6aCxiYXNlRm9udE5hbWU6cixzcmM6YGxvY2FsKCR7cn0pYCxzdHlsZTppfTtlLnNldChzLG8pO3JldHVybiBvfWNvbnN0IHU9W107bCYmdmFsaWRhdGVGb250TmFtZShyKSYmdS5wdXNoKGBsb2NhbCgke3J9KWApO2NvbnN0e3N0eWxlOmQsdWx0aW1hdGU6Zn09Z2VuZXJhdGVGb250KGMsdSxhKSxnPW51bGw9PT1mLHA9Zz8iIjpgLCR7Zn1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShyKX0iLCR7aH0ke3B9YCxndWVzc0ZhbGxiYWNrOmcsbG9hZGVkTmFtZTpoLGJhc2VGb250TmFtZTpyLHNyYzp1LmpvaW4oIiwiKSxzdHlsZTpkfTtlLnNldChzLG8pO3JldHVybiBvfWNvbnN0IG1uPTMyODUzNzc1MjAsYm49NDI5NDkwMTc2MCx5bj02NTUzNTtjbGFzcyBNdXJtdXJIYXNoM182NHtjb25zdHJ1Y3RvcihlKXt0aGlzLmgxPWU/NDI5NDk2NzI5NSZlOm1uO3RoaXMuaDI9ZT80Mjk0OTY3Mjk1JmU6bW59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KHIpO2lmKGk8PTI1NSl0W2ErK109aTtlbHNle3RbYSsrXT1pPj4+ODt0W2ErK109MjU1Jml9fX1lbHNle2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEgZm9ybWF0LCBtdXN0IGJlIGEgc3RyaW5nIG9yIFR5cGVkQXJyYXkuIik7dD1lLnNsaWNlKCk7YT10LmJ5dGVMZW5ndGh9Y29uc3Qgcj1hPj4yLGk9YS00KnIsbj1uZXcgVWludDMyQXJyYXkodC5idWZmZXIsMCxyKTtsZXQgcz0wLG89MCxjPXRoaXMuaDEsbD10aGlzLmgyO2NvbnN0IGg9MzQzMjkxODM1Myx1PTQ2MTg0NTkwNyxkPTExNjAxLGY9MTM3MTU7Zm9yKGxldCBlPTA7ZTxyO2UrKylpZigxJmUpe3M9bltlXTtzPXMqaCZibnxzKmQmeW47cz1zPDwxNXxzPj4+MTc7cz1zKnUmYm58cypmJnluO2NePXM7Yz1jPDwxM3xjPj4+MTk7Yz01KmMrMzg2NDI5MjE5Nn1lbHNle289bltlXTtvPW8qaCZibnxvKmQmeW47bz1vPDwxNXxvPj4+MTc7bz1vKnUmYm58bypmJnluO2xePW87bD1sPDwxM3xsPj4+MTk7bD01KmwrMzg2NDI5MjE5Nn1zPTA7c3dpdGNoKGkpe2Nhc2UgMzpzXj10WzQqcisyXTw8MTY7Y2FzZSAyOnNePXRbNCpyKzFdPDw4O2Nhc2UgMTpzXj10WzQqcl07cz1zKmgmYm58cypkJnluO3M9czw8MTV8cz4+PjE3O3M9cyp1JmJufHMqZiZ5bjsxJnI/Y149czpsXj1zfXRoaXMuaDE9Yzt0aGlzLmgyPWx9aGV4ZGlnZXN0KCl7bGV0IGU9dGhpcy5oMSx0PXRoaXMuaDI7ZV49dD4+PjE7ZT0zOTgxODA2Nzk3KmUmYm58MzYwNDUqZSZ5bjt0PTQyODM1NDM1MTEqdCZibnwoMjk1MDE2Mzc5NyoodDw8MTZ8ZT4+PjE2KSZibik+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJmJufDYwNDk5KmUmeW47dD0zMzAxODgyMzY2KnQmYm58KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmYm4pPj4+MTY7ZV49dD4+PjE7cmV0dXJuKGU+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpKyh0Pj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKX19ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxhLHIsaSxuKXtjb25zdCBzPWkqbjtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBjPWEvaSxsPXIvbjtsZXQgaCx1LGQsZixnPTA7Y29uc3QgcD1uZXcgVWludDE2QXJyYXkoaSksbT1hO2ZvcihoPTA7aDxpO2grKylwW2hdPU1hdGguZmxvb3IoaCpjKTtmb3IoaD0wO2g8bjtoKyspe2Q9TWF0aC5mbG9vcihoKmwpKm07Zm9yKHU9MDt1PGk7dSsrKXtmPWQrcFt1XTtvW2crK109ZVtmXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOnI9ITEsc21hc2s6aT1udWxsLG1hc2s6bj1udWxsLGlzTWFzazpzPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KXt0aGlzLmltYWdlPWE7Y29uc3QgaD1hLmRpY3QsdT1oLmdldCgiRiIsIkZpbHRlciIpO2xldCBkO2lmKHUgaW5zdGFuY2VvZiBOYW1lKWQ9dS5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh1KSl7Y29uc3QgdD1lLmZldGNoSWZSZWYodVswXSk7dCBpbnN0YW5jZW9mIE5hbWUmJihkPXQubmFtZSl9c3dpdGNoKGQpe2Nhc2UiSlBYRGVjb2RlIjooe3dpZHRoOmEud2lkdGgsaGVpZ2h0OmEuaGVpZ2h0LGNvbXBvbmVudHNDb3VudDphLm51bUNvbXBzLGJpdHNQZXJDb21wb25lbnQ6YS5iaXRzUGVyQ29tcG9uZW50fT1KcHhJbWFnZS5wYXJzZUltYWdlUHJvcGVydGllcyhhLnN0cmVhbSkpO2Euc3RyZWFtLnJlc2V0KCk7Y29uc3QgZT1JbWFnZVJlc2l6ZXIuZ2V0UmVkdWNlUG93ZXJGb3JKUFgoYS53aWR0aCxhLmhlaWdodCxhLm51bUNvbXBzKTt0aGlzLmpweERlY29kZXJPcHRpb25zPXtudW1Db21wb25lbnRzOjAsaXNJbmRleGVkQ29sb3JtYXA6ITEsc21hc2tJbkRhdGE6aC5oYXMoIlNNYXNrSW5EYXRhIikscmVkdWNlUG93ZXI6ZX07aWYoZSl7Y29uc3QgdD0yKiplO2Eud2lkdGg9TWF0aC5jZWlsKGEud2lkdGgvdCk7YS5oZWlnaHQ9TWF0aC5jZWlsKGEuaGVpZ2h0L3QpfWJyZWFrO2Nhc2UiSkJJRzJEZWNvZGUiOmEuYml0c1BlckNvbXBvbmVudD0xO2EubnVtQ29tcHM9MX1sZXQgZj1oLmdldCgiVyIsIldpZHRoIiksZz1oLmdldCgiSCIsIkhlaWdodCIpO2lmKE51bWJlci5pc0ludGVnZXIoYS53aWR0aCkmJmEud2lkdGg+MCYmTnVtYmVyLmlzSW50ZWdlcihhLmhlaWdodCkmJmEuaGVpZ2h0PjAmJihhLndpZHRoIT09Znx8YS5oZWlnaHQhPT1nKSl7d2FybigiUERGSW1hZ2UgLSB1c2luZyB0aGUgV2lkdGgvSGVpZ2h0IG9mIHRoZSBpbWFnZSBkYXRhLCByYXRoZXIgdGhhbiB0aGUgaW1hZ2UgZGljdGlvbmFyeS4iKTtmPWEud2lkdGg7Zz1hLmhlaWdodH1lbHNle2NvbnN0IGU9Im51bWJlciI9PXR5cGVvZiBmJiZmPjAsdD0ibnVtYmVyIj09dHlwZW9mIGcmJmc+MDtpZighZXx8IXQpe2lmKCFhLmZhbGxiYWNrRGltcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaW1hZ2Ugd2lkdGg6ICR7Zn0gb3IgaGVpZ2h0OiAke2d9YCk7d2FybigiUERGSW1hZ2UgLSB1c2luZyB0aGUgV2lkdGgvSGVpZ2h0IG9mIHRoZSBwYXJlbnQgaW1hZ2UsIGZvciBTTWFzay9NYXNrIGRhdGEuIik7ZXx8KGY9YS5mYWxsYmFja0RpbXMud2lkdGgpO3R8fChnPWEuZmFsbGJhY2tEaW1zLmhlaWdodCl9fXRoaXMud2lkdGg9Zjt0aGlzLmhlaWdodD1nO3RoaXMuaW50ZXJwb2xhdGU9aC5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPWguZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPWguZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgcD1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXApe3A9aC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighcCl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQml0cyBwZXIgY29tcG9uZW50IG1pc3NpbmcgaW4gaW1hZ2U6ICR7dGhpcy5pbWFnZU1hc2t9YCk7cD0xfX10aGlzLmJwYz1wO2lmKCF0aGlzLmltYWdlTWFzayl7bGV0IGk9aC5nZXRSYXcoIkNTIil8fGguZ2V0UmF3KCJDb2xvclNwYWNlIik7Y29uc3Qgbj0hIWk7aWYobil0aGlzLmpweERlY29kZXJPcHRpb25zPy5zbWFza0luRGF0YSYmKGk9TmFtZS5nZXQoIkRldmljZVJHQkEiKSk7ZWxzZSBpZih0aGlzLmpweERlY29kZXJPcHRpb25zKWk9TmFtZS5nZXQoIkRldmljZVJHQkEiKTtlbHNlIHN3aXRjaChhLm51bUNvbXBzKXtjYXNlIDE6aT1OYW1lLmdldCgiRGV2aWNlR3JheSIpO2JyZWFrO2Nhc2UgMzppPU5hbWUuZ2V0KCJEZXZpY2VSR0IiKTticmVhaztjYXNlIDQ6aT1OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBJbWFnZXMgd2l0aCAke2EubnVtQ29tcHN9IGNvbG9yIGNvbXBvbmVudHMgbm90IHN1cHBvcnRlZC5gKX10aGlzLmNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczppLHhyZWY6ZSxyZXNvdXJjZXM6cj90Om51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pO3RoaXMubnVtQ29tcHM9dGhpcy5jb2xvclNwYWNlLm51bUNvbXBzO2lmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpe3RoaXMuanB4RGVjb2Rlck9wdGlvbnMubnVtQ29tcG9uZW50cz1uP3RoaXMubnVtQ29tcHM6MDt0aGlzLmpweERlY29kZXJPcHRpb25zLmlzSW5kZXhlZENvbG9ybWFwPSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lfX10aGlzLmRlY29kZT1oLmdldEFycmF5KCJEIiwiRGVjb2RlIik7dGhpcy5uZWVkc0RlY29kZT0hMTtpZih0aGlzLmRlY29kZSYmKHRoaXMuY29sb3JTcGFjZSYmIXRoaXMuY29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUscCl8fHMmJiFDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8cCktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2U/Lm5hbWU7Zm9yKGxldCBhPTAscj0wO2E8dGhpcy5kZWNvZGUubGVuZ3RoO2ErPTIsKytyKXtjb25zdCBpPXRoaXMuZGVjb2RlW2FdLG49dGhpcy5kZWNvZGVbYSsxXTt0aGlzLmRlY29kZUNvZWZmaWNpZW50c1tyXT10PyhuLWkpL2U6bi1pO3RoaXMuZGVjb2RlQWRkZW5kc1tyXT10P2k6ZSppfX1pZihpKXtpLmZhbGxiYWNrRGltcz8/PXt3aWR0aDpmLGhlaWdodDpnfTt0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6cixwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSl9ZWxzZSBpZihuKWlmKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtpZihuLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpKXtuLmZhbGxiYWNrRGltcz8/PXt3aWR0aDpmLGhlaWdodDpnfTt0aGlzLm1hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTpyLGlzTWFzazohMCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSl9ZWxzZSB3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9bn1zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmEsaXNJbmxpbmU6cj0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6aSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgbz1hO2xldCBjPW51bGwsbD1udWxsO2NvbnN0IGg9YS5kaWN0LmdldCgiU01hc2siKSx1PWEuZGljdC5nZXQoIk1hc2siKTtoP2ggaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2M9aDp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOnUmJih1IGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheSh1KT9sPXU6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6byxpc0lubGluZTpyLHNtYXNrOmMsbWFzazpsLHBkZkZ1bmN0aW9uRmFjdG9yeTppLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KX1zdGF0aWMgYXN5bmMgY3JlYXRlTWFzayh7aW1hZ2U6ZSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDp0PSExfSl7Y29uc3R7ZGljdDphfT1lLHI9YS5nZXQoIlciLCJXaWR0aCIpLGk9YS5nZXQoIkgiLCJIZWlnaHQiKSxuPWEuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxzPWEuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKSxvPXM/LlswXT4wLGM9KHIrNz4+MykqaSxsPWUuZ2V0Qnl0ZXMoYyksaD0xPT09ciYmMT09PWkmJm89PT0oMD09PWwubGVuZ3RofHwhISgxMjgmbFswXSkpO2lmKGgpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6aH07aWYodCl7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQocixpKSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkocippKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6bCxkZXN0OmUsd2lkdGg6cixoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpPLGRhdGE6ZSx3aWR0aDpyLGhlaWdodDppLGludGVycG9sYXRlOm59KX1jb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMocixpKSx0PWUuZ2V0Q29udGV4dCgiMmQiKSxhPXQuY3JlYXRlSW1hZ2VEYXRhKHIsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpsLGRlc3Q6YS5kYXRhLHdpZHRoOnIsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6b30pO3QucHV0SW1hZ2VEYXRhKGEsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnIsaGVpZ2h0OmksaW50ZXJwb2xhdGU6bixiaXRtYXA6ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19Y29uc3QgdT1sLmJ5dGVMZW5ndGg7bGV0IGQ7aWYoZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSYmKCFvfHxjPT09dSkpZD1sO2Vsc2UgaWYobyl7ZD1uZXcgVWludDhBcnJheShjKTtkLnNldChsKTtkLmZpbGwoMjU1LHUpfWVsc2UgZD1uZXcgVWludDhBcnJheShsKTtpZihvKWZvcihsZXQgZT0wO2U8dTtlKyspZFtlXV49MjU1O3JldHVybntkYXRhOmQsd2lkdGg6cixoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpufX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxhPXRoaXMubnVtQ29tcHMscj10aGlzLmRlY29kZUFkZGVuZHMsaT10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxuPSgxPDx0KS0xO2xldCBzLG87aWYoMT09PXQpe2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKWVbc109KyFlW3NdO3JldHVybn1sZXQgYz0wO2ZvcihzPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O3M8bztzKyspZm9yKGxldCB0PTA7dDxhO3QrKyl7ZVtjXT1NYXRoQ2xhbXAoclt0XStlW2NdKmlbdF0sMCxuKTtjKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBhPXRoaXMud2lkdGgscj10aGlzLmhlaWdodCxpPXRoaXMubnVtQ29tcHMsbj1hKnIqaTtsZXQgcyxvPTA7cz10PD04P25ldyBVaW50OEFycmF5KG4pOnQ8PTE2P25ldyBVaW50MTZBcnJheShuKTpuZXcgVWludDMyQXJyYXkobik7Y29uc3QgYz1hKmksbD0oMTw8dCktMTtsZXQgaCx1LGQ9MDtpZigxPT09dCl7bGV0IHQsYSxpO2ZvcihsZXQgbj0wO248cjtuKyspe2E9ZCsoLTgmYyk7aT1kK2M7Zm9yKDtkPGE7KXt1PWVbbysrXTtzW2RdPXU+PjcmMTtzW2QrMV09dT4+NiYxO3NbZCsyXT11Pj41JjE7c1tkKzNdPXU+PjQmMTtzW2QrNF09dT4+MyYxO3NbZCs1XT11Pj4yJjE7c1tkKzZdPXU+PjEmMTtzW2QrN109MSZ1O2QrPTh9aWYoZDxpKXt1PWVbbysrXTt0PTEyODtmb3IoO2Q8aTspe3NbZCsrXT0rISEodSZ0KTt0Pj49MX19fX1lbHNle2xldCBhPTA7dT0wO2ZvcihkPTAsaD1uO2Q8aDsrK2Qpe2lmKGQlYz09PTApe3U9MDthPTB9Zm9yKDthPHQ7KXt1PXU8PDh8ZVtvKytdO2ErPTh9Y29uc3Qgcj1hLXQ7bGV0IGk9dT4+cjtpPDA/aT0wOmk+bCYmKGk9bCk7c1tkXT1pO3UmPSgxPDxyKS0xO2E9cn19cmV0dXJuIHN9YXN5bmMgZmlsbE9wYWNpdHkoZSx0LGEscixpKXtjb25zdCBuPXRoaXMuc21hc2sscz10aGlzLm1hc2s7bGV0IG8sYyxsLGgsdSxkO2lmKG4pe2M9bi53aWR0aDtsPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGMqbCk7YXdhaXQgbi5maWxsR3JheUJ1ZmZlcihvKTtjPT09dCYmbD09PWF8fChvPXJlc2l6ZUltYWdlTWFzayhvLG4uYnBjLGMsbCx0LGEpKX1lbHNlIGlmKHMpaWYocyBpbnN0YW5jZW9mIFBERkltYWdlKXtjPXMud2lkdGg7bD1zLmhlaWdodDtvPW5ldyBVaW50OENsYW1wZWRBcnJheShjKmwpO3MubnVtQ29tcHM9MTthd2FpdCBzLmZpbGxHcmF5QnVmZmVyKG8pO2ZvcihoPTAsdT1jKmw7aDx1OysraClvW2hdPTI1NS1vW2hdO2M9PT10JiZsPT09YXx8KG89cmVzaXplSW1hZ2VNYXNrKG8scy5icGMsYyxsLHQsYSkpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkocykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tvPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IoaD0wLHU9dCphO2g8dTsrK2gpe2xldCB0PTA7Y29uc3QgYT1oKmU7Zm9yKGQ9MDtkPGU7KytkKXtjb25zdCBlPWlbYStkXSxyPTIqZDtpZihlPHNbcl18fGU+c1tyKzFdKXt0PTI1NTticmVha319b1toXT10fX19aWYobylmb3IoaD0wLGQ9Myx1PXQqcjtoPHU7KytoLGQrPTQpZVtkXT1vW2hdO2Vsc2UgZm9yKGg9MCxkPTMsdT10KnI7aDx1OysraCxkKz00KWVbZF09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrPy5tYXR0ZTtpZighcilyZXR1cm47Y29uc3QgaT10aGlzLmNvbG9yU3BhY2UuZ2V0UmdiKHIsMCksbj1pWzBdLHM9aVsxXSxvPWlbMl0sYz10KmEqNDtmb3IobGV0IHQ9MDt0PGM7dCs9NCl7Y29uc3QgYT1lW3QrM107aWYoMD09PWEpe2VbdF09MjU1O2VbdCsxXT0yNTU7ZVt0KzJdPTI1NTtjb250aW51ZX1jb25zdCByPTI1NS9hO2VbdF09KGVbdF0tbikqcituO2VbdCsxXT0oZVt0KzFdLXMpKnIrcztlW3QrMl09KGVbdCsyXS1vKSpyK299fWFzeW5jIGNyZWF0ZUltYWdlRGF0YShlPSExLHQ9ITEpe2NvbnN0IGE9dGhpcy5kcmF3V2lkdGgscj10aGlzLmRyYXdIZWlnaHQsaT17d2lkdGg6YSxoZWlnaHQ6cixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LG49dGhpcy5udW1Db21wcyxzPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxjPXRoaXMuYnBjLGw9cypuKmMrNz4+MyxoPXQmJkltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKGEscik7aWYoIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiJEZXZpY2VSR0JBIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lKXtpLmtpbmQ9Tztjb25zdCBlPWkuZGF0YT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypzKjQse30pO3JldHVybiB0P2g/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKGksITEpOnRoaXMuY3JlYXRlQml0bWFwKE8sYSxyLGUpOml9aWYoIWUpe2xldCBlOyJEZXZpY2VHcmF5Ij09PXRoaXMuY29sb3JTcGFjZS5uYW1lJiYxPT09Yz9lPUY6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWN8fHRoaXMubmVlZHNEZWNvZGV8fChlPVQpO2lmKGUmJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiZhPT09cyYmcj09PW8pe2NvbnN0IG49YXdhaXQgdGhpcy4jaGUocyxvKTtpZihuKXJldHVybiBuO2NvbnN0IGM9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qbCx7fSk7aWYodClyZXR1cm4gaD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uoe2RhdGE6YyxraW5kOmUsd2lkdGg6YSxoZWlnaHQ6cixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfSx0aGlzLm5lZWRzRGVjb2RlKTp0aGlzLmNyZWF0ZUJpdG1hcChlLHMsbyxjKTtpLmtpbmQ9ZTtpLmRhdGE9YztpZih0aGlzLm5lZWRzRGVjb2RlKXthc3NlcnQoZT09PUYsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9aS5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIGl9aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIEpwZWdTdHJlYW0mJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiYhdGhpcy5uZWVkc0RlY29kZSl7bGV0IGU9bypsO2lmKHQmJiFoKXtsZXQgdD0hMTtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9NDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlUkdCIjplPWUvMyo0O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VDTVlLIjp0PSEwfWlmKHQpe2NvbnN0IHQ9YXdhaXQgdGhpcy4jaGUoYSxyKTtpZih0KXJldHVybiB0O2NvbnN0IGk9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6cixmb3JjZVJHQkE6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoTyxhLHIsaSl9fWVsc2Ugc3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTM7Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6aS5raW5kPVQ7aS5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6YSxkcmF3SGVpZ2h0OnIsZm9yY2VSR0I6ITB9KTtyZXR1cm4gaD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UoaSk6aX19fWNvbnN0IHU9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qbCx7aW50ZXJuYWw6ITB9KSxkPTB8dS5sZW5ndGgvbCpyL28sZj10aGlzLmdldENvbXBvbmVudHModSk7bGV0IGcscCxtLGIseSx3O2lmKHQmJiFoKXttPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxyKTtiPW0uZ2V0Q29udGV4dCgiMmQiKTt5PWIuY3JlYXRlSW1hZ2VEYXRhKGEscik7dz15LmRhdGF9aS5raW5kPU87aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhaHx8KHc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGEqcio0KSk7Zz0xO3A9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eSh3LGEscixkLGYpfWVsc2V7aWYoIXR8fGgpe2kua2luZD1UO3c9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGEqciozKTtnPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkody5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO2c9MX1wPSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKGYpO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKHcscyxvLGEscixkLGMsZixnKTtwJiZ0aGlzLnVuZG9QcmVibGVuZCh3LGEsZCk7aWYodCYmIWgpe2IucHV0SW1hZ2VEYXRhKHksMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmEsaGVpZ2h0OnIsYml0bWFwOm0udHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19aS5kYXRhPXc7cmV0dXJuIGg/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKGkpOml9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHt0fWApO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LGk9dGhpcy5icGMsbj1hKnQqaSs3Pj4zLHM9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKHIqbix7aW50ZXJuYWw6ITB9KSxvPXRoaXMuZ2V0Q29tcG9uZW50cyhzKTtsZXQgYyxsO2lmKDE9PT1pKXtsPWEqcjtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihjPTA7YzxsOysrYyllW2NdPW9bY10tMSYyNTU7ZWxzZSBmb3IoYz0wO2M8bDsrK2MpZVtjXT0yNTUmLW9bY107cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG8pO2w9YSpyO2NvbnN0IGg9MjU1LygoMTw8aSktMSk7Zm9yKGM9MDtjPGw7KytjKWVbY109aCpvW2NdfWNyZWF0ZUJpdG1hcChlLHQsYSxyKXtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXModCxhKSxuPWkuZ2V0Q29udGV4dCgiMmQiKTtsZXQgcztpZihlPT09TylzPW5ldyBJbWFnZURhdGEocix0LGEpO2Vsc2V7cz1uLmNyZWF0ZUltYWdlRGF0YSh0LGEpO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6cixkZXN0Om5ldyBVaW50MzJBcnJheShzLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDphLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfW4ucHV0SW1hZ2VEYXRhKHMsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmEsYml0bWFwOmkudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjaGUoZSx0KXtjb25zdCBhPWF3YWl0IHRoaXMuaW1hZ2UuZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKTtyZXR1cm4gYT97ZGF0YTpudWxsLHdpZHRoOmUsaGVpZ2h0OnQsYml0bWFwOmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX06bnVsbH1hc3luYyBnZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDp0LGRyYXdIZWlnaHQ6YSxmb3JjZVJHQkE6cj0hMSxmb3JjZVJHQjppPSExLGludGVybmFsOm49ITF9KXt0aGlzLmltYWdlLnJlc2V0KCk7dGhpcy5pbWFnZS5kcmF3V2lkdGg9dHx8dGhpcy53aWR0aDt0aGlzLmltYWdlLmRyYXdIZWlnaHQ9YXx8dGhpcy5oZWlnaHQ7dGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFyO3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFpO2NvbnN0IHM9YXdhaXQgdGhpcy5pbWFnZS5nZXRJbWFnZURhdGEoZSx0aGlzLmpweERlY29kZXJPcHRpb25zKTtpZihufHx0aGlzLmltYWdlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtKXJldHVybiBzO2Fzc2VydChzIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHMpfX1jb25zdCB3bj1PYmplY3QuZnJlZXplKHttYXhJbWFnZVNpemU6LTEsZGlzYWJsZUZvbnRGYWNlOiExLGlnbm9yZUVycm9yczohMSxpc0V2YWxTdXBwb3J0ZWQ6ITAsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITEsaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6ITEsY2FudmFzTWF4QXJlYUluQnl0ZXM6LTEsZm9udEV4dHJhUHJvcGVydGllczohMSx1c2VTeXN0ZW1Gb250czohMCx1c2VXYXNtOiEwLHVzZVdvcmtlckZldGNoOiEwLGNNYXBVcmw6bnVsbCxpY2NVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGwsd2FzbVVybDpudWxsfSkseG49MSxTbj0yLEFuPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIG5vcm1hbGl6ZUJsZW5kTW9kZShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9bm9ybWFsaXplQmxlbmRNb2RlKHQsITApO2lmKGUpcmV0dXJuIGV9d2FybihgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZSBBcnJheTogJHtlfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpcmV0dXJuIHQ/bnVsbDoic291cmNlLW92ZXIiO3N3aXRjaChlLm5hbWUpe2Nhc2UiTm9ybWFsIjpjYXNlIkNvbXBhdGlibGUiOnJldHVybiJzb3VyY2Utb3ZlciI7Y2FzZSJNdWx0aXBseSI6cmV0dXJuIm11bHRpcGx5IjtjYXNlIlNjcmVlbiI6cmV0dXJuInNjcmVlbiI7Y2FzZSJPdmVybGF5IjpyZXR1cm4ib3ZlcmxheSI7Y2FzZSJEYXJrZW4iOnJldHVybiJkYXJrZW4iO2Nhc2UiTGlnaHRlbiI6cmV0dXJuImxpZ2h0ZW4iO2Nhc2UiQ29sb3JEb2RnZSI6cmV0dXJuImNvbG9yLWRvZGdlIjtjYXNlIkNvbG9yQnVybiI6cmV0dXJuImNvbG9yLWJ1cm4iO2Nhc2UiSGFyZExpZ2h0IjpyZXR1cm4iaGFyZC1saWdodCI7Y2FzZSJTb2Z0TGlnaHQiOnJldHVybiJzb2Z0LWxpZ2h0IjtjYXNlIkRpZmZlcmVuY2UiOnJldHVybiJkaWZmZXJlbmNlIjtjYXNlIkV4Y2x1c2lvbiI6cmV0dXJuImV4Y2x1c2lvbiI7Y2FzZSJIdWUiOnJldHVybiJodWUiO2Nhc2UiU2F0dXJhdGlvbiI6cmV0dXJuInNhdHVyYXRpb24iO2Nhc2UiQ29sb3IiOnJldHVybiJjb2xvciI7Y2FzZSJMdW1pbm9zaXR5IjpyZXR1cm4ibHVtaW5vc2l0eSJ9aWYodClyZXR1cm4gbnVsbDt3YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWZ1bmN0aW9uIGFkZENhY2hlZEltYWdlT3BzKGUse29iaklkOnQsZm46YSxhcmdzOnIsb3B0aW9uYWxDb250ZW50OmksaGFzTWFzazpufSl7dCYmZS5hZGREZXBlbmRlbmN5KHQpO2UuYWRkSW1hZ2VPcHMoYSxyLGksbik7YT09PU50JiZyWzBdPy5jb3VudD4wJiZyWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmEsaWRGYWN0b3J5OnIsZm9udENhY2hlOmksYnVpbHRJbkNNYXBDYWNoZTpuLHN0YW5kYXJkRm9udERhdGFDYWNoZTpzLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpvLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6bCxvcHRpb25zOmg9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWE7dGhpcy5pZEZhY3Rvcnk9cjt0aGlzLmZvbnRDYWNoZT1pO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1uO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPXM7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9bzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9Yzt0aGlzLnN5c3RlbUZvbnRDYWNoZT1sO3RoaXMub3B0aW9ucz1ofHx3bjt0aGlzLnR5cGUzRm9udFJlZnM9bnVsbDt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGU9bmV3IFJlZ2lvbmFsSW1hZ2VDYWNoZTt0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQ9dGhpcy5mZXRjaEJ1aWx0SW5DTWFwLmJpbmQodGhpcyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCByPVtlXSxpPXRoaXMueHJlZjtmb3IoO3IubGVuZ3RoOyl7Y29uc3QgZT1yLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPWkuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbj1lLmdldCgiWE9iamVjdCIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiBuLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSljb250aW51ZTt0cnl7ZT1pLmZldGNoKGUpfWNhdGNoKHQpe2EucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFhLmhhcyh0Lm9iaklkKSkpe3IucHVzaCh0KTt0Lm9iaklkJiZhLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGEpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgYTthPXRoaXMub3B0aW9ucy51c2VXb3JrZXJGZXRjaD97Y01hcERhdGE6YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke3RoaXMub3B0aW9ucy5jTWFwVXJsfSR7ZX0uYmNtYXBgKSxpc0NvbXByZXNzZWQ6ITB9OmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse3R5cGU6ImNNYXBSZWFkZXJGYWN0b3J5IixuYW1lOmV9KTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBhPV9yKClbZV07bGV0IHI7dHJ5e3I9dGhpcy5vcHRpb25zLnVzZVdvcmtlckZldGNoP2F3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybH0ke2F9YCk6YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCaW5hcnlEYXRhIix7dHlwZToic3RhbmRhcmRGb250RGF0YUZhY3RvcnkiLGZpbGVuYW1lOmF9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLHIpO3JldHVybiBuZXcgU3RyZWFtKHIpfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGEscixpLG4scyxvKXtjb25zdHtkaWN0OmN9PXQsbD1sb29rdXBNYXRyaXgoYy5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksaD1sb29rdXBOb3JtYWxSZWN0KGMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgdSxkO2MuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGMuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZyLmFkZE9wKEN0LFsiT0MiLHVdKTtjb25zdCBmPWMuZ2V0KCJHcm91cCIpO2lmKGYpe2Q9e21hdHJpeDpsLGJib3g6aCxzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShmLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7ZC5pc29sYXRlZD1mLmdldCgiSSIpfHwhMTtkLmtub2Nrb3V0PWYuZ2V0KCJLIil8fCExO2lmKGYuaGFzKCJDUyIpKXtjb25zdCBhPXRoaXMuX2dldENvbG9yU3BhY2UoZi5nZXRSYXcoIkNTIiksZSxzKTt0PWEgaW5zdGFuY2VvZiBDb2xvclNwYWNlP2E6YXdhaXQgdGhpcy5faGFuZGxlQ29sb3JTcGFjZShhKX19aWYoYT8uYmFja2Ryb3Ape3R8fD1Db2xvclNwYWNlVXRpbHMucmdiO2EuYmFja2Ryb3A9dC5nZXRSZ2JIZXgoYS5iYWNrZHJvcCwwKX1yLmFkZE9wKER0LFtkXSl9Y29uc3QgZz1bbCYmbmV3IEZsb2F0MzJBcnJheShsKSwhZiYmaCYmbmV3IEZsb2F0MzJBcnJheShoKXx8bnVsbF07ci5hZGRPcChUdCxnKTtjb25zdCBwPWMuZ2V0KCJSZXNvdXJjZXMiKTthd2FpdCB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpwIGluc3RhbmNlb2YgRGljdD9wOmUsb3BlcmF0b3JMaXN0OnIsaW5pdGlhbFN0YXRlOm4scHJldlJlZnM6b30pO3IuYWRkT3AoT3QsW10pO2YmJnIuYWRkT3AoTXQsW2RdKTt2b2lkIDAhPT11JiZyLmFkZE9wKHZ0LFtdKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpyLGNhY2hlS2V5OmksbG9jYWxJbWFnZUNhY2hlOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pe2NvbnN0e21heEltYWdlU2l6ZTpvLGlnbm9yZUVycm9yczpjLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmx9PXRoaXMub3B0aW9ucyx7ZGljdDpofT10LHU9aC5vYmpJZCxkPWguZ2V0KCJXIiwiV2lkdGgiKSxmPWguZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWR8fCJudW1iZXIiIT10eXBlb2YgZHx8IWZ8fCJudW1iZXIiIT10eXBlb2YgZil7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWlmKC0xIT09byYmZCpmPm8pe2NvbnN0IGU9IkltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4iO2lmKCFjKXRocm93IG5ldyBFcnJvcihlKTt3YXJuKGUpO3JldHVybn1sZXQgZztoLmhhcygiT0MiKSYmKGc9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhoLmdldCgiT0MiKSxlKSk7bGV0IHAsbSxiO2lmKGguZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMSl7cD1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWFnZTp0LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmwmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnR9KTtpZihwLmlzU2luZ2xlT3BhcXVlUGl4ZWwpe209WHQ7Yj1bXTtyLmFkZEltYWdlT3BzKG0sYixnKTtpZihpKXtjb25zdCBlPXtmbjptLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6Z307bi5zZXQoaSx1LGUpO3UmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCx1LGUpfXJldHVybn1pZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2I9ZnVuY3Rpb24gY29tcGlsZVR5cGUzR2x5cGgoe2RhdGE6ZSx3aWR0aDp0LGhlaWdodDphfSl7aWYodD4xZTN8fGE+MWUzKXJldHVybiBudWxsO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoWzAsMiw0LDAsMSwwLDUsNCw4LDEwLDAsOCwwLDIsMSwwXSksaT10KzEsbj1uZXcgVWludDhBcnJheShpKihhKzEpKTtsZXQgcyxvLGM7Y29uc3QgbD10KzcmLTgsaD1uZXcgVWludDhBcnJheShsKmEpO2xldCB1PTA7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU9MTI4O2Zvcig7ZT4wOyl7aFt1KytdPXQmZT8wOjI1NTtlPj49MX19bGV0IGQ9MDt1PTA7aWYoMCE9PWhbdV0pe25bMF09MTsrK2R9Zm9yKG89MTtvPHQ7bysrKXtpZihoW3VdIT09aFt1KzFdKXtuW29dPWhbdV0/MjoxOysrZH11Kyt9aWYoMCE9PWhbdV0pe25bb109MjsrK2R9Zm9yKHM9MTtzPGE7cysrKXt1PXMqbDtjPXMqaTtpZihoW3UtbF0hPT1oW3VdKXtuW2NdPWhbdV0/MTo4OysrZH1sZXQgZT0oaFt1XT80OjApKyhoW3UtbF0/ODowKTtmb3Iobz0xO288dDtvKyspe2U9KGU+PjIpKyhoW3UrMV0/NDowKSsoaFt1LWwrMV0/ODowKTtpZihyW2VdKXtuW2Mrb109cltlXTsrK2R9dSsrfWlmKGhbdS1sXSE9PWhbdV0pe25bYytvXT1oW3VdPzI6NDsrK2R9aWYoZD4xZTMpcmV0dXJuIG51bGx9dT1sKihhLTEpO2M9cyppO2lmKDAhPT1oW3VdKXtuW2NdPTg7KytkfWZvcihvPTE7bzx0O28rKyl7aWYoaFt1XSE9PWhbdSsxXSl7bltjK29dPWhbdV0/NDo4OysrZH11Kyt9aWYoMCE9PWhbdV0pe25bYytvXT00OysrZH1pZihkPjFlMylyZXR1cm4gbnVsbDtjb25zdCBmPW5ldyBJbnQzMkFycmF5KFswLGksLTEsMCwtaSwwLDAsMCwxXSksZz1bXSx7YTpwLGI6bSxjOmIsZDp5LGU6dyxmOnh9PShuZXcgRE9NTWF0cml4KS5zY2FsZVNlbGYoMS90LC0xL2EpLnRyYW5zbGF0ZVNlbGYoMCwtYSk7Zm9yKHM9MDtkJiZzPD1hO3MrKyl7bGV0IGU9cyppO2NvbnN0IGE9ZSt0O2Zvcig7ZTxhJiYhbltlXTspZSsrO2lmKGU9PT1hKWNvbnRpbnVlO2xldCByPWUlaSxvPXM7Zy5wdXNoKCR0LHAqcitiKm8rdyxtKnIreSpvK3gpO2NvbnN0IGM9ZTtsZXQgbD1uW2VdO2Rve2NvbnN0IHQ9ZltsXTtkb3tlKz10fXdoaWxlKCFuW2VdKTtjb25zdCBhPW5bZV07aWYoNSE9PWEmJjEwIT09YSl7bD1hO25bZV09MH1lbHNle2w9YSY1MSpsPj40O25bZV0mPWw+PjJ8bDw8Mn1yPWUlaTtvPWUvaXwwO2cucHVzaChHdCxwKnIrYipvK3csbSpyK3kqbyt4KTtuW2VdfHwtLWR9d2hpbGUoYyE9PWUpOy0tc31yZXR1cm5benQsW25ldyBGbG9hdDMyQXJyYXkoZyldLG5ldyBGbG9hdDMyQXJyYXkoWzAsMCx0LGFdKV19KHApO2lmKGIpe3IuYWRkSW1hZ2VPcHMocXQsYixnKTtyZXR1cm59d2FybigiQ2Fubm90IGNvbXBpbGUgVHlwZTMgZ2x5cGguIik7ci5hZGRJbWFnZU9wcyhOdCxbcF0sZyk7cmV0dXJufWNvbnN0IGU9YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7ci5hZGREZXBlbmRlbmN5KGUpO3AuZGF0YUxlbj1wLmJpdG1hcD9wLndpZHRoKnAuaGVpZ2h0KjQ6cC5kYXRhLmxlbmd0aDt0aGlzLl9zZW5kSW1nRGF0YShlLHApO209TnQ7Yj1be2RhdGE6ZSx3aWR0aDpwLndpZHRoLGhlaWdodDpwLmhlaWdodCxpbnRlcnBvbGF0ZTpwLmludGVycG9sYXRlLGNvdW50OjF9XTtyLmFkZEltYWdlT3BzKG0sYixnKTtpZihpKXtjb25zdCB0PXtvYmpJZDplLGZuOm0sYXJnczpiLG9wdGlvbmFsQ29udGVudDpnfTtuLnNldChpLHUsdCk7dSYmdGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLHUsdCl9cmV0dXJufWNvbnN0IHk9aC5oYXMoIlNNYXNrIil8fGguaGFzKCJNYXNrIik7aWYoYSYmZCtmPDIwMCYmIXkpe3RyeXtjb25zdCBpPW5ldyBQREZJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KTtwPWF3YWl0IGkuY3JlYXRlSW1hZ2VEYXRhKCEwLCExKTtyLmFkZEltYWdlT3BzKEx0LFtwXSxnKX1jYXRjaChlKXtjb25zdCB0PWBVbmFibGUgdG8gZGVjb2RlIGlubGluZSBpbWFnZTogIiR7ZX0iLmA7aWYoIWMpdGhyb3cgbmV3IEVycm9yKHQpO3dhcm4odCl9cmV0dXJufWxldCB3PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAseD0hMSxTPW51bGw7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXc9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHt3fWA7ZWxzZSBpZihpJiZ1KXt4PXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZSh1LHRoaXMucGFnZUluZGV4KTtpZih4KXthc3NlcnQoIWEsIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7dz1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke3d9YH19ci5hZGREZXBlbmRlbmN5KHcpO209RXQ7Yj1bdyxkLGZdO3IuYWRkSW1hZ2VPcHMobSxiLGcseSk7aWYoeCl7Uz17b2JqSWQ6dyxmbjptLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6ZyxoYXNNYXNrOnksYnl0ZVNpemU6MH07aWYodGhpcy5nbG9iYWxJbWFnZUNhY2hlLmhhc0RlY29kZUZhaWxlZCh1KSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEodSxTKTt0aGlzLl9zZW5kSW1nRGF0YSh3LG51bGwseCk7cmV0dXJufWlmKGQqZj4yNWU0fHx5KXtjb25zdCBlPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoImNvbW1vbm9iaiIsW3csIkNvcHlMb2NhbEltYWdlIix7aW1hZ2VSZWY6dX1dKTtpZihlKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSh1LFMpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZSh1LGUpO3JldHVybn19fVBERkltYWdlLmJ1aWxkSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSkudGhlbihhc3luYyBlPT57cD1hd2FpdCBlLmNyZWF0ZUltYWdlRGF0YSghMSxsKTtwLmRhdGFMZW49cC5iaXRtYXA/cC53aWR0aCpwLmhlaWdodCo0OnAuZGF0YS5sZW5ndGg7cC5yZWY9dTt4JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUodSxwLmRhdGFMZW4pO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh3LHAseCl9KS5jYXRjaChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt3fSI6ICIke2V9Ii5gKTt1JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKHUpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh3LG51bGwseCl9KTtpZihpKXtjb25zdCBlPXtvYmpJZDp3LGZuOm0sYXJnczpiLG9wdGlvbmFsQ29udGVudDpnLGhhc01hc2s6eX07bi5zZXQoaSx1LGUpO2lmKHUpe3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCx1LGUpO2lmKHgpe2Fzc2VydChTLCJUaGUgZ2xvYmFsIGNhY2hlLWRhdGEgbXVzdCBiZSBhdmFpbGFibGUuIik7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEodSxTKX19fX1oYW5kbGVTTWFzayhlLHQsYSxyLGksbixzKXtjb25zdCBvPWUuZ2V0KCJHIiksYz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGw9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihsKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGwpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKXthWzBdPXIvMjU1O2UoYSwwLGEsMCk7dFtyXT0yNTUqYVswXXwwfWMudHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbyxjLGEscixpLnN0YXRlLmNsb25lKHtuZXdQYXRoOiEwfSksbixzKX1oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGUpe2xldCB0O2lmKEFycmF5LmlzQXJyYXkoZSkpdD1lO2Vsc2V7aWYoIWlzUERGRnVuY3Rpb24oZSkpcmV0dXJuIG51bGw7dD1bZV19Y29uc3QgYT1bXTtsZXQgcj0wLGk9MDtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO3IrKztpZihpc05hbWUodCwiSWRlbnRpdHkiKSl7YS5wdXNoKG51bGwpO2NvbnRpbnVlfWlmKCFpc1BERkZ1bmN0aW9uKHQpKXJldHVybiBudWxsO2NvbnN0IG49dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSh0KSxzPW5ldyBVaW50OEFycmF5KDI1Niksbz1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl7b1swXT1lLzI1NTtuKG8sMCxvLDApO3NbZV09MjU1Km9bMF18MH1hLnB1c2gocyk7aSsrfXJldHVybiAxIT09ciYmNCE9PXJ8fDA9PT1pP251bGw6YX1oYW5kbGVUaWxpbmdUeXBlKGUsdCxhLHIsaSxuLHMsbyl7Y29uc3QgYz1uZXcgT3BlcmF0b3JMaXN0LGw9RGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OltpLmdldCgiUmVzb3VyY2VzIiksYV19KTtyZXR1cm4gdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpyLHRhc2s6cyxyZXNvdXJjZXM6bCxvcGVyYXRvckxpc3Q6Y30pLnRoZW4oZnVuY3Rpb24oKXtjb25zdCBhPWMuZ2V0SVIoKSxyPWdldFRpbGluZ1BhdHRlcm5JUihhLGksdCk7bi5hZGREZXBlbmRlbmNpZXMoYy5kZXBlbmRlbmNpZXMpO24uYWRkT3AoZSxyKTtpLm9iaklkJiZvLnNldChudWxsLGkub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDppfSl9KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGhhbmRsZVRpbGluZ1R5cGUgLSBpZ25vcmluZyBwYXR0ZXJuOiAiJHtlfSIuYCl9fSl9YXN5bmMgaGFuZGxlU2V0Rm9udChlLHQsYSxyLGksbixzPW51bGwsbz1udWxsKXtjb25zdCBjPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbCxsPWF3YWl0IHRoaXMubG9hZEZvbnQoYyxhLGUsaSxzLG8pO2wuZm9udC5pc1R5cGUzRm9udCYmci5hZGREZXBlbmRlbmNpZXMobC50eXBlM0RlcGVuZGVuY2llcyk7bi5mb250PWwuZm9udDtsLnNlbmQodGhpcy5oYW5kbGVyKTtyZXR1cm4gbC5sb2FkZWROYW1lfWhhbmRsZVRleHQoZSx0KXtjb25zdCBhPXQuZm9udCxyPWEuY2hhcnNUb0dseXBocyhlKTtpZihhLmRhdGEpeyghISh0LnRleHRSZW5kZXJpbmdNb2RlJnYpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLHIsdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIHJ9ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgRm9ybWF0RXJyb3IoIk1pc3Npbmcgc2V0Rm9udCAoVGYpIG9wZXJhdG9yIGJlZm9yZSB0ZXh0IHJlbmRlcmluZyBvcGVyYXRvci4iKTtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyB0O3dhcm4oYGVuc3VyZVN0YXRlRm9udDogIiR7dH0iLmApfWFzeW5jIHNldEdTdGF0ZSh7cmVzb3VyY2VzOmUsZ1N0YXRlOnQsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cix0YXNrOmksc3RhdGVNYW5hZ2VyOm4sbG9jYWxHU3RhdGVDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sc2VlblJlZnM6Y30pe2NvbnN0IGw9dC5vYmpJZDtsZXQgaD0hMDtjb25zdCB1PVtdO2xldCBkPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdFtyLHNdb2YgdClzd2l0Y2gocil7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjppZigibnVtYmVyIiE9dHlwZW9mIHMpe3dhcm4oYEludmFsaWQgTFcgKGxpbmUgd2lkdGgpOiAke3N9YCk7YnJlYWt9dS5wdXNoKFtyLE1hdGguYWJzKHMpXSk7YnJlYWs7Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjp1LnB1c2goW3Isc10pO2JyZWFrO2Nhc2UiRm9udCI6aD0hMTtkPWQudGhlbigoKT0+dGhpcy5oYW5kbGVTZXRGb250KGUsbnVsbCxzWzBdLGEsaSxuLnN0YXRlKS50aGVuKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTt1LnB1c2goW3IsW2Usc1sxXV1dKX0pKTticmVhaztjYXNlIkJNIjp1LnB1c2goW3Isbm9ybWFsaXplQmxlbmRNb2RlKHMpXSk7YnJlYWs7Y2FzZSJTTWFzayI6aWYoaXNOYW1lKHMsIk5vbmUiKSl7dS5wdXNoKFtyLCExXSk7YnJlYWt9aWYocyBpbnN0YW5jZW9mIERpY3Qpe2g9ITE7ZD1kLnRoZW4oKCk9PnRoaXMuaGFuZGxlU01hc2socyxlLGEsaSxuLG8sYykpO3UucHVzaChbciwhMF0pfWVsc2Ugd2FybigiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKHMpO3UucHVzaChbcix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOmluZm8oImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIityKTticmVhaztkZWZhdWx0OmluZm8oIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK3IpfWF3YWl0IGQ7dS5sZW5ndGg+MCYmYS5hZGRPcChiZSxbdV0pO2gmJnMuc2V0KHIsbCx1KX1sb2FkRm9udChlLHQsYSxyLGk9bnVsbCxuPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dH0pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWEuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1pfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpvLHJlc29sdmU6Y309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGw7dHJ5e2w9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7bC5jc3NGb250SW5mbz1ufWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmgsaGFzaDp1fT1sLGQ9cyBpbnN0YW5jZW9mIFJlZjtsZXQgZjtpZih1JiZoIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1oLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW3VdKXtjb25zdCB0PWVbdV0uYWxpYXNSZWY7aWYoZCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVt1XT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtkJiYoZVt1XS5hbGlhc1JlZj1zKTtmPWVbdV0uZm9udElEfWVsc2UgZj10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQoZj8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGQpdGhpcy5mb250Q2FjaGUucHV0KHMsbyk7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke2Z9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxvKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtmfWA7dGhpcy50cmFuc2xhdGVGb250KGwpLnRoZW4oYXN5bmMgZT0+e2NvbnN0IGk9bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0fSk7aWYoZS5pc1R5cGUzRm9udCl0cnl7YXdhaXQgaS5sb2FkVHlwZTNEYXRhKHRoaXMsYSxyKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoYFR5cGUzIGZvbnQgbG9hZCBlcnJvcjogJHtlfWApfWMoaSl9KS5jYXRjaChlPT57d2FybihgbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO2MobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250Om5ldyBFcnJvckZvbnQoZT8ubWVzc2FnZSksZGljdDp0fSkpfSk7cmV0dXJuIG99YnVpbGRQYXRoKGUsdCxhKXtjb25zdHtwYXRoTWluTWF4OnIscGF0aEJ1ZmZlcjppfT1hO3N3aXRjaCgwfGUpe2Nhc2UgSWU6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYPXRbMF0sbj1hLmN1cnJlbnRQb2ludFk9dFsxXSxzPXRbMl0sbz10WzNdLGM9ZStzLGw9bitvOzA9PT1zfHwwPT09bz9pLnB1c2goJHQsZSxuLEd0LGMsbCxKdCk6aS5wdXNoKCR0LGUsbixHdCxjLG4sR3QsYyxsLEd0LGUsbCxKdCk7VXRpbC5yZWN0Qm91bmRpbmdCb3goZSxuLGMsbCxyKTticmVha31jYXNlIFNlOntjb25zdCBlPWEuY3VycmVudFBvaW50WD10WzBdLG49YS5jdXJyZW50UG9pbnRZPXRbMV07aS5wdXNoKCR0LGUsbik7VXRpbC5wb2ludEJvdW5kaW5nQm94KGUsbixyKTticmVha31jYXNlIEFlOntjb25zdCBlPWEuY3VycmVudFBvaW50WD10WzBdLG49YS5jdXJyZW50UG9pbnRZPXRbMV07aS5wdXNoKEd0LGUsbik7VXRpbC5wb2ludEJvdW5kaW5nQm94KGUsbixyKTticmVha31jYXNlIGtlOntjb25zdCBlPWEuY3VycmVudFBvaW50WCxuPWEuY3VycmVudFBvaW50WSxbcyxvLGMsbCxoLHVdPXQ7YS5jdXJyZW50UG9pbnRYPWg7YS5jdXJyZW50UG9pbnRZPXU7aS5wdXNoKFZ0LHMsbyxjLGwsaCx1KTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUsbixzLG8sYyxsLGgsdSxyKTticmVha31jYXNlIENlOntjb25zdCBlPWEuY3VycmVudFBvaW50WCxuPWEuY3VycmVudFBvaW50WSxbcyxvLGMsbF09dDthLmN1cnJlbnRQb2ludFg9YzthLmN1cnJlbnRQb2ludFk9bDtpLnB1c2goVnQsZSxuLHMsbyxjLGwpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxuLGUsbixzLG8sYyxsLHIpO2JyZWFrfWNhc2UgdmU6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYLG49YS5jdXJyZW50UG9pbnRZLFtzLG8sYyxsXT10O2EuY3VycmVudFBvaW50WD1jO2EuY3VycmVudFBvaW50WT1sO2kucHVzaChWdCxzLG8sYyxsLGMsbCk7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLG4scyxvLGMsbCxjLGwscik7YnJlYWt9Y2FzZSBGZTppLnB1c2goSnQpfX1fZ2V0Q29sb3JTcGFjZShlLHQsYSl7cmV0dXJuIENvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6ZSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dCxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTphLGFzeW5jSWZOb3RDYWNoZWQ6ITB9KX1hc3luYyBfaGFuZGxlQ29sb3JTcGFjZShlKXt0cnl7cmV0dXJuIGF3YWl0IGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYF9oYW5kbGVDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9fXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmEsbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOnJ9KXtsZXQgaSxuPXIuZ2V0KGUpO2lmKG4pcmV0dXJuIG47dHJ5e2k9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksdGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsYSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO3Iuc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1uPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKG49YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtufWApO3Iuc2V0KGUsbik7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtjb25zdCBlPVtdLHQ9UGF0dGVybkluZm8ud3JpdGUoaSk7ZS5wdXNoKHQpO3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtuLCJQYXR0ZXJuIix0XSxlKX1lbHNlIHRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSk7cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLHIsaSxuLHMsbyxjLGwpe2NvbnN0IGg9YS5wb3AoKTtpZihoIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdT1pLmdldFJhdyhoLm5hbWUpLGQ9dSBpbnN0YW5jZW9mIFJlZiYmYy5nZXRCeVJlZih1KTtpZihkKXRyeXtjb25zdCBpPXIuYmFzZT9yLmJhc2UuZ2V0UmdiSGV4KGEsMCk6bnVsbCxuPWdldFRpbGluZ1BhdHRlcm5JUihkLm9wZXJhdG9yTGlzdElSLGQuZGljdCxpKTtlLmFkZE9wKHQsbik7cmV0dXJufWNhdGNoe31jb25zdCBmPXRoaXMueHJlZi5mZXRjaElmUmVmKHUpO2lmKGYpe2NvbnN0IGk9ZiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/Zi5kaWN0OmYsaD1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihoPT09eG4pe2NvbnN0IG89ci5iYXNlP3IuYmFzZS5nZXRSZ2JIZXgoYSwwKTpudWxsO3JldHVybiB0aGlzLmhhbmRsZVRpbGluZ1R5cGUodCxvLG4sZixpLGUscyxjKX1pZihoPT09U24pe2NvbnN0IGE9aS5nZXQoIlNoYWRpbmciKSxyPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6byxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6bH0pO2lmKHIpe2NvbnN0IGE9bG9va3VwTWF0cml4KGkuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO2UuYWRkT3AodCxbIlNoYWRpbmciLHIsYV0pfXJldHVybn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVyblR5cGU6ICR7aH1gKX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5OYW1lOiAke2h9YCl9X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSx0LGEpe2lmKCsrdD4xMCl7d2FybigiVmlzaWJpbGl0eSBleHByZXNzaW9uIGlzIHRvbyBkZWVwbHkgbmVzdGVkIik7cmV0dXJufWNvbnN0IHI9ZS5sZW5ndGgsaT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlWzBdKTtpZighKHI8MikmJmkgaW5zdGFuY2VvZiBOYW1lKXtzd2l0Y2goaS5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChpLm5hbWUpO2JyZWFrO2RlZmF1bHQ6d2FybihgSW52YWxpZCBvcGVyYXRvciAke2kubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgaT0xO2k8cjtpKyspe2NvbnN0IHI9ZVtpXSxuPXRoaXMueHJlZi5mZXRjaElmUmVmKHIpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24obix0LGUpfWVsc2UgciBpbnN0YW5jZW9mIFJlZiYmYS5wdXNoKHIudG9TdHJpbmcoKSl9fWVsc2Ugd2FybigiSW52YWxpZCB2aXNpYmlsaXR5IGV4cHJlc3Npb24iKX1hc3luYyBwYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQpe2xldCBhO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk9wdGlvbmFsIGNvbnRlbnQgcHJvcGVydGllcyBtYWxmb3JtZWQuIik7YT1lfWNvbnN0IHI9YS5nZXQoIlR5cGUiKT8ubmFtZTtpZigiT0NHIj09PXIpcmV0dXJue3R5cGU6cixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1yKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9W107aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgYSBvZiB0KWUucHVzaChhLnRvU3RyaW5nKCkpO2Vsc2UgZS5wdXNoKHQub2JqSWQpO3JldHVybnt0eXBlOnIsaWRzOmUscG9saWN5OmEuZ2V0KCJQIilpbnN0YW5jZW9mIE5hbWU/YS5nZXQoIlAiKS5uYW1lOm51bGwsZXhwcmVzc2lvbjpudWxsfX1pZih0IGluc3RhbmNlb2YgUmVmKXJldHVybnt0eXBlOnIsaWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6cixpbml0aWFsU3RhdGU6aT1udWxsLGZhbGxiYWNrRm9udERpY3Q6bj1udWxsLHByZXZSZWZzOnM9bnVsbH0pe2NvbnN0IG89ZS5kaWN0Py5vYmpJZCxjPW5ldyBSZWZTZXQocyk7aWYobyl7aWYocz8uaGFzKG8pKXRocm93IG5ldyBFcnJvcihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke299YCk7Yy5wdXQobyl9YXx8PURpY3QuZW1wdHk7aXx8PW5ldyBFdmFsU3RhdGU7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgbD10aGlzLGg9dGhpcy54cmVmLHU9bmV3IExvY2FsSW1hZ2VDYWNoZSxkPW5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSxmPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLGc9bmV3IExvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxtPWEuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHksYj1hLmdldCgiUGF0dGVybiIpfHxEaWN0LmVtcHR5LHk9bmV3IFN0YXRlTWFuYWdlcihpKSx3PW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxoLHkpLHg9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9dy5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspci5hZGRPcCh3ZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUsaSl7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxyLnJlYWR5XSkudGhlbihmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLGkpfWNhdGNoKGUpe2koZSl9fSxpKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7eC5yZXNldCgpO2NvbnN0IHM9e307bGV0IG8sUyxrLEMsdixGO2Zvcig7IShvPXguY2hlY2soKSk7KXtzLmFyZ3M9bnVsbDtpZighdy5yZWFkKHMpKWJyZWFrO2xldCBlPXMuYXJncyxpPXMuZm47c3dpdGNoKDB8aSl7Y2FzZSB4dDpGPWVbMF1pbnN0YW5jZW9mIE5hbWU7dj1lWzBdLm5hbWU7aWYoRil7Y29uc3QgdD11LmdldEJ5TmFtZSh2KTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhyLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLGkpe2lmKCFGKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IG49bS5nZXRSYXcodik7aWYobiBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD11LmdldEJ5UmVmKG4pfHxsLl9yZWdpb25hbEltYWdlQ2FjaGUuZ2V0QnlSZWYobil8fGwuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKG4sbC5wYWdlSW5kZXgpO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHIsdCk7ZSgpO3JldHVybn1uPWguZmV0Y2gobil9aWYoIShuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IHM9bi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEocyBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PXMubmFtZSlpZigiSW1hZ2UiIT09cy5uYW1lKXtpZigiUFMiIT09cy5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5oYW5kbGVkIFhPYmplY3Qgc3VidHlwZSAke3MubmFtZX1gKTtpbmZvKCJJZ25vcmVkIFhPYmplY3Qgc3VidHlwZSBQUyIpO2UoKX1lbHNlIGwuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmEsaW1hZ2U6bixvcGVyYXRvckxpc3Q6cixjYWNoZUtleTp2LGxvY2FsSW1hZ2VDYWNoZTp1LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUsaSk7ZWxzZXt5LnNhdmUoKTtsLmJ1aWxkRm9ybVhPYmplY3QoYSxuLG51bGwscix0LHkuc3RhdGUuY2xvbmUoe25ld1BhdGg6ITB9KSxkLGMpLnRoZW4oZnVuY3Rpb24oKXt5LnJlc3RvcmUoKTtlKCl9LGkpfX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWwub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpO3JldHVybjtjYXNlIHplOmNvbnN0IHM9ZVsxXTtuZXh0KGwuaGFuZGxlU2V0Rm9udChhLGUsbnVsbCxyLHQseS5zdGF0ZSxuKS50aGVuKGZ1bmN0aW9uKGUpe3IuYWRkRGVwZW5kZW5jeShlKTtyLmFkZE9wKHplLFtlLHNdKX0pKTtyZXR1cm47Y2FzZSB3dDpjb25zdCBvPWVbMF0uY2FjaGVLZXk7aWYobyl7Y29uc3QgdD11LmdldEJ5TmFtZShvKTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhyLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChsLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OnIsY2FjaGVLZXk6byxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIFplOmlmKCF5LnN0YXRlLmZvbnQpe2wuZW5zdXJlU3RhdGVGb250KHkuc3RhdGUpO2NvbnRpbnVlfWVbMF09bC5oYW5kbGVUZXh0KGVbMF0seS5zdGF0ZSk7YnJlYWs7Y2FzZSBRZTppZigheS5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udCh5LnN0YXRlKTtjb250aW51ZX1jb25zdCB3PVtdLHg9eS5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD93LnB1c2goLi4ubC5oYW5kbGVUZXh0KHQseCkpOiJudW1iZXIiPT10eXBlb2YgdCYmdy5wdXNoKHQpO2VbMF09dztpPVplO2JyZWFrO2Nhc2UgZXQ6aWYoIXkuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoeS5zdGF0ZSk7Y29udGludWV9ci5hZGRPcChZZSk7ZVswXT1sLmhhbmRsZVRleHQoZVswXSx5LnN0YXRlKTtpPVplO2JyZWFrO2Nhc2UgdHQ6aWYoIXkuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoeS5zdGF0ZSk7Y29udGludWV9ci5hZGRPcChZZSk7ci5hZGRPcChxZSxbZS5zaGlmdCgpXSk7ci5hZGRPcChYZSxbZS5zaGlmdCgpXSk7ZVswXT1sLmhhbmRsZVRleHQoZVswXSx5LnN0YXRlKTtpPVplO2JyZWFrO2Nhc2UgJGU6eS5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbnQ6e2NvbnN0IHQ9bC5fZ2V0Q29sb3JTcGFjZShlWzBdLGEsZCk7aWYodCBpbnN0YW5jZW9mIENvbG9yU3BhY2Upe3kuc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KGwuX2hhbmRsZUNvbG9yU3BhY2UodCkudGhlbihlPT57eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT1lfHxDb2xvclNwYWNlVXRpbHMuZ3JheX0pKTtyZXR1cm59Y2FzZSBpdDp7Y29uc3QgdD1sLl9nZXRDb2xvclNwYWNlKGVbMF0sYSxkKTtpZih0IGluc3RhbmNlb2YgQ29sb3JTcGFjZSl7eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChsLl9oYW5kbGVDb2xvclNwYWNlKHQpLnRoZW4oZT0+e3kuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1lfHxDb2xvclNwYWNlVXRpbHMuZ3JheX0pKTtyZXR1cm59Y2FzZSBjdDpDPXkuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1bQy5nZXRSZ2JIZXgoZSwwKV07aT1mdDticmVhaztjYXNlIHN0OkM9eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlO2U9W0MuZ2V0UmdiSGV4KGUsMCldO2k9ZHQ7YnJlYWs7Y2FzZSB1dDp5LnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtpPWZ0O2JyZWFrO2Nhc2UgaHQ6eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtpPWR0O2JyZWFrO2Nhc2UgcHQ6eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuY215aztlPVtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JIZXgoZSwwKV07aT1mdDticmVhaztjYXNlIGd0Onkuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuY215aztlPVtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JIZXgoZSwwKV07aT1kdDticmVhaztjYXNlIGZ0Onkuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnJnYjtlPVtDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkhleChlLDApXTticmVhaztjYXNlIGR0Onkuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucmdiO2U9W0NvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSGV4KGUsMCldO2JyZWFrO2Nhc2UgbHQ6Qz15LnN0YXRlLnBhdHRlcm5GaWxsQ29sb3JTcGFjZTtpZighQyl7aWYoaXNOdW1iZXJBcnJheShlLG51bGwpKXtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07aT1mdDticmVha31lPVtdO2k9V3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09Qy5uYW1lKXtuZXh0KGwuaGFuZGxlQ29sb3JOKHIsbHQsZSxDLGIsYSx0LGQsZyxwKSk7cmV0dXJufWU9W0MuZ2V0UmdiSGV4KGUsMCldO2k9ZnQ7YnJlYWs7Y2FzZSBvdDpDPXkuc3RhdGUucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U7aWYoIUMpe2lmKGlzTnVtYmVyQXJyYXkoZSxudWxsKSl7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO2k9ZHQ7YnJlYWt9ZT1bXTtpPUh0O2JyZWFrfWlmKCJQYXR0ZXJuIj09PUMubmFtZSl7bmV4dChsLmhhbmRsZUNvbG9yTihyLG90LGUsQyxiLGEsdCxkLGcscCkpO3JldHVybn1lPVtDLmdldFJnYkhleChlLDApXTtpPWR0O2JyZWFrO2Nhc2UgbXQ6bGV0IFQ7dHJ5e2NvbnN0IHQ9YS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtUPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIVQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihsLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBPPWwucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlQscmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pO2lmKCFPKWNvbnRpbnVlO2U9W09dO2k9bXQ7YnJlYWs7Y2FzZSBiZTpGPWVbMF1pbnN0YW5jZW9mIE5hbWU7dj1lWzBdLm5hbWU7aWYoRil7Y29uc3QgdD1mLmdldEJ5TmFtZSh2KTtpZih0KXt0Lmxlbmd0aD4wJiZyLmFkZE9wKGJlLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsaSl7aWYoIUYpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IG49YS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uLmdldCh2KTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2wuc2V0R1N0YXRlKHtyZXNvdXJjZXM6YSxnU3RhdGU6cyxvcGVyYXRvckxpc3Q6cixjYWNoZUtleTp2LHRhc2s6dCxzdGF0ZU1hbmFnZXI6eSxsb2NhbEdTdGF0ZUNhY2hlOmYsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxzZWVuUmVmczpjfSkudGhlbihlLGkpfSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSBoZTp7Y29uc3RbdF09ZTtpZigibnVtYmVyIiE9dHlwZW9mIHQpe3dhcm4oYEludmFsaWQgc2V0TGluZVdpZHRoOiAke3R9YCk7Y29udGludWV9ZVswXT1NYXRoLmFicyh0KTticmVha31jYXNlIGdlOntjb25zdCB0PWVbMV07aWYoIm51bWJlciIhPXR5cGVvZiB0KXt3YXJuKGBJbnZhbGlkIHNldERhc2g6ICR7dH1gKTtjb250aW51ZX1jb25zdCBhPWVbMF07aWYoIUFycmF5LmlzQXJyYXkoYSkpe3dhcm4oYEludmFsaWQgc2V0RGFzaDogJHthfWApO2NvbnRpbnVlfWEuc29tZShlPT4ibnVtYmVyIiE9dHlwZW9mIGUpJiYoZVswXT1hLmZpbHRlcihlPT4ibnVtYmVyIj09dHlwZW9mIGUpKTticmVha31jYXNlIFNlOmNhc2UgQWU6Y2FzZSBrZTpjYXNlIENlOmNhc2UgdmU6Y2FzZSBGZTpjYXNlIEllOmwuYnVpbGRQYXRoKGksZSx5LnN0YXRlKTtjb250aW51ZTtjYXNlIFRlOmNhc2UgT2U6Y2FzZSBEZTpjYXNlIE1lOmNhc2UgUmU6Y2FzZSBCZTpjYXNlIE5lOmNhc2UgUGU6Y2FzZSBFZTp7Y29uc3R7c3RhdGU6e3BhdGhCdWZmZXI6ZSxwYXRoTWluTWF4OnR9fT15O2khPT1PZSYmaSE9PU5lJiZpIT09UGV8fGUucHVzaChKdCk7aWYoMD09PWUubGVuZ3RoKXIuYWRkT3AocXQsW2ksW251bGxdLG51bGxdKTtlbHNle3IuYWRkT3AocXQsW2ksW25ldyBGbG9hdDMyQXJyYXkoZSldLHQuc2xpY2UoKV0pO2UubGVuZ3RoPTA7dC5zZXQoWzEvMCwxLzAsLTEvMCwtMS8wXSwwKX1jb250aW51ZX1jYXNlIEplOnIuYWRkT3AoaSxbbmV3IEZsb2F0MzJBcnJheShlKV0pO2NvbnRpbnVlO2Nhc2UgU3Q6Y2FzZSBBdDpjYXNlIEZ0OmNhc2UgSXQ6Y29udGludWU7Y2FzZSBDdDppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtyLmFkZE9wKEN0LFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGwucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKGU9PntyLmFkZE9wKEN0LFsiT0MiLGVdKX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFsLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTtyLmFkZE9wKEN0LFsiT0MiLG51bGxdKX19KSk7cmV0dXJufWU9W2VbMF0ubmFtZSxlWzFdaW5zdGFuY2VvZiBEaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7ZGVmYXVsdDppZihudWxsIT09ZSl7Zm9yKFM9MCxrPWUubGVuZ3RoO1M8ayYmIShlW1NdaW5zdGFuY2VvZiBEaWN0KTtTKyspO2lmKFM8ayl7d2FybigiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIraSk7Y29udGludWV9fX1yLmFkZE9wKGksZSl9aWYobyluZXh0KEFuKTtlbHNle2Nsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoKTtlKCl9fSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSl9Z2V0VGV4dENvbnRlbnQoe3N0cmVhbTplLHRhc2s6YSxyZXNvdXJjZXM6cixzdGF0ZU1hbmFnZXI6aT1udWxsLGluY2x1ZGVNYXJrZWRDb250ZW50Om49ITEsc2luazpzLHNlZW5TdHlsZXM6bz1uZXcgU2V0LHZpZXdCb3g6YyxsYW5nOmw9bnVsbCxtYXJrZWRDb250ZW50RGF0YTpoPW51bGwsZGlzYWJsZU5vcm1hbGl6YXRpb246dT0hMSxrZWVwV2hpdGVTcGFjZTpkPSExLHByZXZSZWZzOmY9bnVsbCxpbnRlcnNlY3RvcjpnPW51bGx9KXtjb25zdCBwPWUuZGljdD8ub2JqSWQsbT1uZXcgUmVmU2V0KGYpO2lmKHApe2lmKGY/LmhhcyhwKSl0aHJvdyBuZXcgRXJyb3IoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke3B9YCk7bS5wdXQocCl9cnx8PURpY3QuZW1wdHk7aXx8PW5ldyBTdGF0ZU1hbmFnZXIobmV3IFRleHRTdGF0ZSk7biYmKGh8fD17bGV2ZWw6MH0pO2NvbnN0IGI9e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpLGxhbmc6bH0seT17aW5pdGlhbGl6ZWQ6ITEsc3RyOltdLHRvdGFsV2lkdGg6MCx0b3RhbEhlaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAsdmVydGljYWw6ITEscHJldlRyYW5zZm9ybTpudWxsLHRleHRBZHZhbmNlU2NhbGU6MCxzcGFjZUluRmxvd01pbjowLHNwYWNlSW5GbG93TWF4OjAsdHJhY2tpbmdTcGFjZU1pbjoxLzAsbmVnYXRpdmVTcGFjZU1heDotMS8wLG5vdEFTcGFjZTotMS8wLHRyYW5zZm9ybTpudWxsLGZvbnROYW1lOm51bGwsaGFzRU9MOiExfSx3PVsiICIsIiAiXTtsZXQgeD0wO2Z1bmN0aW9uIHNhdmVMYXN0Q2hhcihlKXtjb25zdCB0PSh4KzEpJTIsYT0iICIhPT13W3hdJiYiICI9PT13W3RdO3dbeF09ZTt4PXQ7cmV0dXJuIWQmJmF9ZnVuY3Rpb24gc2hvdWxkQWRkV2hpdGVwc2FjZSgpe3JldHVybiFkJiYiICIhPT13W3hdJiYiICI9PT13Wyh4KzEpJTJdfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7d1swXT13WzFdPSIgIjt4PTB9Y29uc3QgUz10aGlzLGs9dGhpcy54cmVmLEM9W107bGV0IHY9bnVsbDtjb25zdCBGPW5ldyBMb2NhbEltYWdlQ2FjaGUsVD1uZXcgTG9jYWxHU3RhdGVDYWNoZSxPPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxrLGkpO2xldCBEO2Z1bmN0aW9uIHB1c2hXaGl0ZXNwYWNlKHt3aWR0aDplPTAsaGVpZ2h0OnQ9MCx0cmFuc2Zvcm06YT15LnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6cj15LmZvbnROYW1lfSl7Zz8uYWRkRXh0cmFDaGFyKCIgIik7Yi5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDplLGhlaWdodDp0LHRyYW5zZm9ybTphLGZvbnROYW1lOnIsaGFzRU9MOiExfSl9ZnVuY3Rpb24gZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKXtjb25zdCBlPUQuZm9udCxhPVtELmZvbnRTaXplKkQudGV4dEhTY2FsZSwwLDAsRC5mb250U2l6ZSwwLEQudGV4dFJpc2VdO2lmKGUuaXNUeXBlM0ZvbnQmJihELmZvbnRTaXplPD0xfHxlLmlzQ2hhckJCb3gpJiYhaXNBcnJheUVxdWFsKEQuZm9udE1hdHJpeCx0KSl7Y29uc3QgdD1lLmJib3hbM10tZS5iYm94WzFdO3Q+MCYmKGFbM10qPXQqRC5mb250TWF0cml4WzNdKX1yZXR1cm4gVXRpbC50cmFuc2Zvcm0oRC5jdG0sVXRpbC50cmFuc2Zvcm0oRC50ZXh0TWF0cml4LGEpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZih5LmluaXRpYWxpemVkKXJldHVybiB5O2NvbnN0e2ZvbnQ6ZSxsb2FkZWROYW1lOnR9PUQ7aWYoIW8uaGFzKHQpKXtvLmFkZCh0KTtiLnN0eWxlc1t0XT17Zm9udEZhbWlseTplLmZhbGxiYWNrTmFtZSxhc2NlbnQ6ZS5hc2NlbnQsZGVzY2VudDplLmRlc2NlbnQsdmVydGljYWw6ZS52ZXJ0aWNhbH07aWYoUy5vcHRpb25zLmZvbnRFeHRyYVByb3BlcnRpZXMmJmUuc3lzdGVtRm9udEluZm8pe2NvbnN0IGE9Yi5zdHlsZXNbdF07YS5mb250U3Vic3RpdHV0aW9uPWUuc3lzdGVtRm9udEluZm8uY3NzO2EuZm9udFN1YnN0aXR1dGlvbkxvYWRlZE5hbWU9ZS5zeXN0ZW1Gb250SW5mby5sb2FkZWROYW1lfX15LmZvbnROYW1lPXQ7Y29uc3QgYT15LnRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2lmKGUudmVydGljYWwpe3kud2lkdGg9eS50b3RhbFdpZHRoPU1hdGguaHlwb3QoYVswXSxhWzFdKTt5LmhlaWdodD15LnRvdGFsSGVpZ2h0PTA7eS52ZXJ0aWNhbD0hMH1lbHNle3kud2lkdGg9eS50b3RhbFdpZHRoPTA7eS5oZWlnaHQ9eS50b3RhbEhlaWdodD1NYXRoLmh5cG90KGFbMl0sYVszXSk7eS52ZXJ0aWNhbD0hMX1jb25zdCByPU1hdGguaHlwb3QoRC50ZXh0TGluZU1hdHJpeFswXSxELnRleHRMaW5lTWF0cml4WzFdKSxpPU1hdGguaHlwb3QoRC5jdG1bMF0sRC5jdG1bMV0pO3kudGV4dEFkdmFuY2VTY2FsZT1pKnI7Y29uc3R7Zm9udFNpemU6bn09RDt5LnRyYWNraW5nU3BhY2VNaW49LjEwMipuO3kubm90QVNwYWNlPS4wMypuO3kubmVnYXRpdmVTcGFjZU1heD0tLjIqbjt5LnNwYWNlSW5GbG93TWluPS4xMDIqbjt5LnNwYWNlSW5GbG93TWF4PS42Km47eS5oYXNFT0w9ITE7eS5pbml0aWFsaXplZD0hMDtyZXR1cm4geX1mdW5jdGlvbiB1cGRhdGVBZHZhbmNlU2NhbGUoKXtpZigheS5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgZT1NYXRoLmh5cG90KEQudGV4dExpbmVNYXRyaXhbMF0sRC50ZXh0TGluZU1hdHJpeFsxXSksdD1NYXRoLmh5cG90KEQuY3RtWzBdLEQuY3RtWzFdKSplO2lmKHQhPT15LnRleHRBZHZhbmNlU2NhbGUpe2lmKHkudmVydGljYWwpe3kudG90YWxIZWlnaHQrPXkuaGVpZ2h0KnkudGV4dEFkdmFuY2VTY2FsZTt5LmhlaWdodD0wfWVsc2V7eS50b3RhbFdpZHRoKz15LndpZHRoKnkudGV4dEFkdmFuY2VTY2FsZTt5LndpZHRoPTB9eS50ZXh0QWR2YW5jZVNjYWxlPXR9fWZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7bGV0IHQ9ZS5zdHIuam9pbigiIik7dXx8KHQ9ZnVuY3Rpb24gbm9ybWFsaXplVW5pY29kZShlKXtpZighcmEpe3JhPS8oW1x1MDBhMFx1MDBiNVx1MDM3ZVx1MGViM1x1MjAwMC1cdTIwMGFcdTIwMmZcdTIxMjZcdWZiMDAtXHVmYjA0XHVmYjA2XHVmYjIwLVx1ZmIzNlx1ZmIzOC1cdWZiM2NcdWZiM2VcdWZiNDAtXHVmYjQxXHVmYjQzLVx1ZmI0NFx1ZmI0Ni1cdWZiYTFcdWZiYTQtXHVmYmE5XHVmYmFlLVx1ZmJiMVx1ZmJkMy1cdWZiZGNcdWZiZGUtXHVmYmU3XHVmYmVhLVx1ZmJmOFx1ZmJmYy1cdWZiZmRcdWZjMDAtXHVmYzVkXHVmYzY0LVx1ZmNmMVx1ZmNmNS1cdWZkM2RcdWZkODhcdWZkZjRcdWZkZmEtXHVmZGZiXHVmZTcxXHVmZTc3XHVmZTc5XHVmZTdiXHVmZTdkXSspfChcdWZiMDUrKS9ndTtpYT1uZXcgTWFwKFtbIu+shSIsIsW/dCJdXSl9cmV0dXJuIGUucmVwbGFjZUFsbChyYSwoZSx0LGEpPT50P3Qubm9ybWFsaXplKCJORktDIik6aWEuZ2V0KGEpKX0odCkpO2NvbnN0IGE9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6YS5zdHIsZGlyOmEuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLGkpe2NvbnN0IG49YXdhaXQgUy5sb2FkRm9udChlLGkscixhKTtELmxvYWRlZE5hbWU9bi5sb2FkZWROYW1lO0QuZm9udD1uLmZvbnQ7RC5mb250TWF0cml4PW4uZm9udC5mb250TWF0cml4fHx0fWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxhKXtjb25zdCByPU1hdGguaHlwb3QoYVswXSxhWzFdKTtyZXR1cm5bKGFbMF0qZSthWzFdKnQpL3IsKGFbMl0qZSthWzNdKnQpL3JdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgYT10WzRdLHI9dFs1XTtpZihELmZvbnQ/LnZlcnRpY2FsKXtpZihhPGNbMF18fGE+Y1syXXx8citlPGNbMV18fHI+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGErZTxjWzBdfHxhPmNbMl18fHI8Y1sxXXx8cj5jWzNdKXJldHVybiExO2lmKCFELmZvbnR8fCF5LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IGk9eS5wcmV2VHJhbnNmb3JtWzRdLG49eS5wcmV2VHJhbnNmb3JtWzVdO2lmKGk9PT1hJiZuPT09cilyZXR1cm4hMDtsZXQgcz0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/cz10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYocz10WzFdPjA/OTA6MjcwKTtzd2l0Y2gocyl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2Escl09W3IsYV07W2ksbl09W24saV07YnJlYWs7Y2FzZSAxODA6W2EscixpLG5dPVstYSwtciwtaSwtbl07YnJlYWs7Y2FzZSAyNzA6W2Escl09Wy1yLC1hXTtbaSxuXT1bLW4sLWldO2JyZWFrO2RlZmF1bHQ6W2Escl09YXBwbHlJbnZlcnNlUm90YXRpb24oYSxyLHQpO1tpLG5dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksbix5LnByZXZUcmFuc2Zvcm0pfWlmKEQuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0obi1yKS95LnRleHRBZHZhbmNlU2NhbGUsdD1hLWkscz1NYXRoLnNpZ24oeS5oZWlnaHQpO2lmKGU8cyp5Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41Knkud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT55LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1zKnkubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PXMqeS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHkuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx5LnByZXZUcmFuc2Zvcm0scykpaWYoMD09PXkuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB5LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqeS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShhLWkpL3kudGV4dEFkdmFuY2VTY2FsZSxsPXItbixoPU1hdGguc2lnbih5LndpZHRoKTtpZihvPGgqeS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhsKT4uNSp5LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGwpPnkuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1oKnkubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PWgqeS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgeS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8seS5wcmV2VHJhbnNmb3JtLGgpKWlmKDA9PT15LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB5LndpZHRoKz1vO01hdGguYWJzKGwpPi4yNSp5LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGE9RC5mb250O2lmKCFlKXtjb25zdCBlPUQuY2hhclNwYWNpbmcrdDtlJiYoYS52ZXJ0aWNhbD9ELnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6RC50cmFuc2xhdGVUZXh0TWF0cml4KGUqRC50ZXh0SFNjYWxlLDApKTtkJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3Qgcj1hLmNoYXJzVG9HbHlwaHMoZSksaT1ELmZvbnRNYXRyaXhbMF0qRC5mb250U2l6ZTtmb3IobGV0IGU9MCxuPXIubGVuZ3RoO2U8bjtlKyspe2NvbnN0IHM9cltlXSx7Y2F0ZWdvcnk6byxvcmlnaW5hbENoYXJDb2RlOmN9PXM7aWYoby5pc0ludmlzaWJsZUZvcm1hdE1hcmspY29udGludWU7bGV0IGw9RC5jaGFyU3BhY2luZysoZSsxPT09bj90OjApLGg9cy53aWR0aDthLnZlcnRpY2FsJiYoaD1zLnZtZXRyaWM/cy52bWV0cmljWzBdOi1oKTtsZXQgdT1oKmk7MzI9PT1jJiYobCs9RC53b3JkU3BhY2luZyk7aWYoIWQmJm8uaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtsKz0tdTtELnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtbCl9ZWxzZXtsKz11O0QudHJhbnNsYXRlVGV4dE1hdHJpeChsKkQudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKHUpKXthLnZlcnRpY2FsP0QudHJhbnNsYXRlVGV4dE1hdHJpeCgwLHUpOkQudHJhbnNsYXRlVGV4dE1hdHJpeCh1KkQudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBmPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJih1PTApO2lmKGEudmVydGljYWwpe2c/LmFkZEdseXBoKGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksMCx1LHMudW5pY29kZSk7RC50cmFuc2xhdGVUZXh0TWF0cml4KDAsdSk7dT1NYXRoLmFicyh1KTtmLmhlaWdodCs9dX1lbHNle3UqPUQudGV4dEhTY2FsZTtnPy5hZGRHbHlwaChnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLHUsMCxzLnVuaWNvZGUpO0QudHJhbnNsYXRlVGV4dE1hdHJpeCh1LDApO2Yud2lkdGgrPXV9dSYmKGYucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtjb25zdCBwPXMudW5pY29kZTtpZihzYXZlTGFzdENoYXIocCkpe2Yuc3RyLnB1c2goIiAiKTtnPy5hZGRFeHRyYUNoYXIoIiAiKX1nfHxmLnN0ci5wdXNoKHApO2wmJihhLnZlcnRpY2FsP0QudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1sKTpELnRyYW5zbGF0ZVRleHRNYXRyaXgobCpELnRleHRIU2NhbGUsMCkpfX1mdW5jdGlvbiBhcHBlbmRFT0woKXtnPy5hZGRFeHRyYUNoYXIoIlxuIik7cmVzZXRMYXN0Q2hhcnMoKTtpZih5LmluaXRpYWxpemVkKXt5Lmhhc0VPTD0hMDtmbHVzaFRleHRDb250ZW50SXRlbSgpfWVsc2UgYi5pdGVtcy5wdXNoKHtzdHI6IiIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0OjAsdHJhbnNmb3JtOmdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksZm9udE5hbWU6RC5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGEpe2lmKGEqeS5zcGFjZUluRmxvd01pbjw9ZSYmZTw9YSp5LnNwYWNlSW5GbG93TWF4KXtpZih5LmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO3kuc3RyLnB1c2goIiAiKTtnPy5hZGRFeHRyYUNoYXIoIiAiKX1yZXR1cm4hMX1jb25zdCByPXkuZm9udE5hbWU7bGV0IGk9MDtpZih5LnZlcnRpY2FsKXtpPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMoZSksaGVpZ2h0Ok1hdGguYWJzKGkpLHRyYW5zZm9ybTp0fHxnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOnJ9KTtyZXR1cm4hMH1mdW5jdGlvbiBmbHVzaFRleHRDb250ZW50SXRlbSgpe2lmKHkuaW5pdGlhbGl6ZWQmJnkuc3RyKXt5LnZlcnRpY2FsP3kudG90YWxIZWlnaHQrPXkuaGVpZ2h0KnkudGV4dEFkdmFuY2VTY2FsZTp5LnRvdGFsV2lkdGgrPXkud2lkdGgqeS50ZXh0QWR2YW5jZVNjYWxlO2IuaXRlbXMucHVzaChydW5CaWRpVHJhbnNmb3JtKHkpKTt5LmluaXRpYWxpemVkPSExO3kuc3RyLmxlbmd0aD0wfX1mdW5jdGlvbiBlbnF1ZXVlQ2h1bmsoZT0hMSl7Y29uc3QgdD1iLml0ZW1zLmxlbmd0aDtpZigwIT09dCYmIShlJiZ0PDEwKSl7cz8uZW5xdWV1ZShiLHQpO2IuaXRlbXM9W107Yi5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgTT1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlQm9keShlLHQpe2NvbnN0IG5leHQ9ZnVuY3Rpb24oYSl7ZW5xdWV1ZUNodW5rKCEwKTtQcm9taXNlLmFsbChbYSxzPy5yZWFkeV0pLnRoZW4oZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSx0KX1jYXRjaChlKXt0KGUpfX0sdCl9O2EuZW5zdXJlTm90VGVybWluYXRlZCgpO00ucmVzZXQoKTtjb25zdCBmPXt9O2xldCBnLHAseSx3PVtdO2Zvcig7IShnPU0uY2hlY2soKSk7KXt3Lmxlbmd0aD0wO2YuYXJncz13O2lmKCFPLnJlYWQoZikpYnJlYWs7Y29uc3QgZT1EO0Q9aS5zdGF0ZTtjb25zdCB0PWYuZm47dz1mLmFyZ3M7c3dpdGNoKDB8dCl7Y2FzZSB6ZTpjb25zdCB0PXdbMF0ubmFtZSxmPXdbMV07aWYoRC5mb250JiZ0PT09RC5mb250TmFtZSYmZj09PUQuZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtELmZvbnROYW1lPXQ7RC5mb250U2l6ZT1mO25leHQoaGFuZGxlU2V0Rm9udCh0LG51bGwpKTtyZXR1cm47Y2FzZSBHZTpELnRleHRSaXNlPXdbMF07YnJlYWs7Y2FzZSBIZTpELnRleHRIU2NhbGU9d1swXS8xMDA7YnJlYWs7Y2FzZSBXZTpELmxlYWRpbmc9d1swXTticmVhaztjYXNlIFZlOkQudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgod1swXSx3WzFdKTtELnRleHRNYXRyaXg9RC50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgS2U6RC5sZWFkaW5nPS13WzFdO0QudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgod1swXSx3WzFdKTtELnRleHRNYXRyaXg9RC50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgWWU6RC5jYXJyaWFnZVJldHVybigpO2JyZWFrO2Nhc2UgSmU6RC5zZXRUZXh0TWF0cml4KHdbMF0sd1sxXSx3WzJdLHdbM10sd1s0XSx3WzVdKTtELnNldFRleHRMaW5lTWF0cml4KHdbMF0sd1sxXSx3WzJdLHdbM10sd1s0XSx3WzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIFhlOkQuY2hhclNwYWNpbmc9d1swXTticmVhaztjYXNlIHFlOkQud29yZFNwYWNpbmc9d1swXTticmVhaztjYXNlIFVlOkQudGV4dE1hdHJpeD1mYS5zbGljZSgpO0QudGV4dExpbmVNYXRyaXg9ZmEuc2xpY2UoKTticmVhaztjYXNlIFFlOmlmKCFpLnN0YXRlLmZvbnQpe1MuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGc9KEQuZm9udC52ZXJ0aWNhbD8xOi0xKSpELmZvbnRTaXplLzFlMyx4PXdbMF07Zm9yKGxldCBlPTAsdD14Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXhbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KUMucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0Kmd9KX19aWYoQy5sZW5ndGg+MCl7Y29uc3QgZT1DLmpvaW4oIiIpO0MubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIFplOmlmKCFpLnN0YXRlLmZvbnQpe1MuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp3WzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBldDppZighaS5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChpLnN0YXRlKTtjb250aW51ZX1ELmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOndbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHR0OmlmKCFpLnN0YXRlLmZvbnQpe1MuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfUQud29yZFNwYWNpbmc9d1swXTtELmNoYXJTcGFjaW5nPXdbMV07RC5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp3WzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSB4dDpmbHVzaFRleHRDb250ZW50SXRlbSgpO3Y/Pz1yLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O3k9d1swXWluc3RhbmNlb2YgTmFtZTtwPXdbMF0ubmFtZTtpZih5JiZGLmdldEJ5TmFtZShwKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7aWYoIXkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgZj12LmdldFJhdyhwKTtpZihmIGluc3RhbmNlb2YgUmVmKXtpZihGLmdldEJ5UmVmKGYpKXtlKCk7cmV0dXJufWlmKFMuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKGYsUy5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufWY9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3R7ZGljdDpnfT1mLGI9Zy5nZXQoIlN1YnR5cGUiKTtpZighKGIgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1iLm5hbWUpe0Yuc2V0KHAsZy5vYmpJZCwhMCk7ZSgpO3JldHVybn1jb25zdCB3PWkuc3RhdGUuY2xvbmUoKSx4PW5ldyBTdGF0ZU1hbmFnZXIodyksQz1sb29rdXBNYXRyaXgoZy5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7QyYmeC50cmFuc2Zvcm0oQyk7Y29uc3QgVD1nLmdldCgiUmVzb3VyY2VzIik7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgTz17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7cy5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBzLmRlc2lyZWRTaXplPz8wfSxnZXQgcmVhZHkoKXtyZXR1cm4gcy5yZWFkeX19O1MuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpmLHRhc2s6YSxyZXNvdXJjZXM6VCBpbnN0YW5jZW9mIERpY3Q/VDpyLHN0YXRlTWFuYWdlcjp4LGluY2x1ZGVNYXJrZWRDb250ZW50Om4sc2luazpzJiZPLHNlZW5TdHlsZXM6byx2aWV3Qm94OmMsbGFuZzpsLG1hcmtlZENvbnRlbnREYXRhOmgsZGlzYWJsZU5vcm1hbGl6YXRpb246dSxrZWVwV2hpdGVTcGFjZTpkLHByZXZSZWZzOm19KS50aGVuKGZ1bmN0aW9uKCl7Ty5lbnF1ZXVlSW52b2tlZHx8Ri5zZXQocCxnLm9iaklkLCEwKTtlKCl9LHQpfSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighUy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSBiZTp5PXdbMF1pbnN0YW5jZW9mIE5hbWU7cD13WzBdLm5hbWU7aWYoeSYmVC5nZXRCeU5hbWUocCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2lmKCF5KXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBhPXIuZ2V0KCJFeHRHU3RhdGUiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGk9YS5nZXQocCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBuPWkuZ2V0KCJGb250Iik7aWYobil7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtELmZvbnROYW1lPW51bGw7RC5mb250U2l6ZT1uWzFdO2hhbmRsZVNldEZvbnQobnVsbCxuWzBdKS50aGVuKGUsdCl9ZWxzZXtULnNldChwLGkub2JqSWQsITApO2UoKX19KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFTLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2Uga3Q6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtoLmxldmVsKys7Yi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzp3WzBdaW5zdGFuY2VvZiBOYW1lP3dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBDdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztsZXQgZT1udWxsO3dbMV1pbnN0YW5jZW9mIERpY3QmJihlPXdbMV0uZ2V0KCJNQ0lEIikpO2IuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7Uy5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6d1swXWluc3RhbmNlb2YgTmFtZT93WzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgdnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtpZigwPT09aC5sZXZlbClicmVhaztoLmxldmVsLS07Yi5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfWJyZWFrO2Nhc2Ugd2U6IWV8fGUuZm9udD09PUQuZm9udCYmZS5mb250U2l6ZT09PUQuZm9udFNpemUmJmUuZm9udE5hbWU9PT1ELmZvbnROYW1lfHxmbHVzaFRleHRDb250ZW50SXRlbSgpfWlmKGIuaXRlbXMubGVuZ3RoPj0ocz8uZGVzaXJlZFNpemU/PzEpKXtnPSEwO2JyZWFrfX1pZihnKW5leHQoQW4pO2Vsc2V7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKTtlKCl9fSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCl9fSl9YXN5bmMgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCl7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI7Y29uc3QgaT10aGlzLnJlYWRUb1VuaWNvZGUodC50b1VuaWNvZGUpO2lmKHQuY29tcG9zaXRlKXtjb25zdCBhPWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7YSBpbnN0YW5jZW9mIERpY3QmJih0LmNpZFN5c3RlbUluZm89e3JlZ2lzdHJ5OnN0cmluZ1RvUERGU3RyaW5nKGEuZ2V0KCJSZWdpc3RyeSIpKSxvcmRlcmluZzpzdHJpbmdUb1BERlN0cmluZyhhLmdldCgiT3JkZXJpbmciKSksc3VwcGxlbWVudDphLmdldCgiU3VwcGxlbWVudCIpfSk7dHJ5e2NvbnN0IHQ9ZS5nZXQoIkNJRFRvR0lETWFwIik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihyPXQuZ2V0Qnl0ZXMoKSl9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBleHRyYWN0RGF0YVN0cnVjdHVyZXMgLSBpZ25vcmluZyBDSURUb0dJRE1hcCBkYXRhOiAiJHtlfSIuYCl9fWNvbnN0IG49W107bGV0IHMsbz1udWxsO2lmKGUuaGFzKCJFbmNvZGluZyIpKXtzPWUuZ2V0KCJFbmNvZGluZyIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KXtvPXMuZ2V0KCJCYXNlRW5jb2RpbmciKTtvPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2lmKHMuaGFzKCJEaWZmZXJlbmNlcyIpKXtjb25zdCBlPXMuZ2V0KCJEaWZmZXJlbmNlcyIpO2xldCB0PTA7Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1hLmZldGNoSWZSZWYocik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7blt0KytdPWUubmFtZX19fX1lbHNlIGlmKHMgaW5zdGFuY2VvZiBOYW1lKW89cy5uYW1lO2Vsc2V7Y29uc3QgZT0iRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0IjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoZSk7d2FybihlKX0iTWFjUm9tYW5FbmNvZGluZyIhPT1vJiYiTWFjRXhwZXJ0RW5jb2RpbmciIT09byYmIldpbkFuc2lFbmNvZGluZyIhPT1vJiYobz1udWxsKX1jb25zdCBjPSF0LmZpbGV8fHQuaXNJbnRlcm5hbEZvbnQsbD1YcigpW3QubmFtZV07byYmYyYmbCYmKG89bnVsbCk7aWYobyl0LmRlZmF1bHRFbmNvZGluZz1nZXRFbmNvZGluZyhvKTtlbHNle2xldCBlPSEhKHQuZmxhZ3MmQXIpO2NvbnN0IGE9ISEodC5mbGFncyZrcik7aWYoIlRydWVUeXBlIj09PXQudHlwZSYmZSYmYSYmMCE9PW4ubGVuZ3RoKXt0LmZsYWdzJj1+QXI7ZT0hMX1zPWxyOyJUcnVlVHlwZSIhPT10LnR5cGV8fGF8fChzPWhyKTtpZihlfHxsKXtzPWNyO2MmJigvU3ltYm9sL2kudGVzdCh0Lm5hbWUpP3M9dXI6L0RpbmdiYXRzL2kudGVzdCh0Lm5hbWUpP3M9ZHI6L1dpbmdkaW5ncy9pLnRlc3QodC5uYW1lKSYmKHM9aHIpKX10LmRlZmF1bHRFbmNvZGluZz1zfXQuZGlmZmVyZW5jZXM9bjt0LmJhc2VFbmNvZGluZ05hbWU9bzt0Lmhhc0VuY29kaW5nPSEhb3x8bi5sZW5ndGg+MDt0LmRpY3Q9ZTt0LnRvVW5pY29kZT1hd2FpdCBpO2NvbnN0IGg9YXdhaXQgdGhpcy5idWlsZFRvVW5pY29kZSh0KTt0LnRvVW5pY29kZT1oO3ImJih0LmNpZFRvR2lkTWFwPXRoaXMucmVhZENpZFRvR2lkTWFwKHIsaCkpO3JldHVybiB0fV9zaW1wbGVGb250VG9Vbmljb2RlKGUsdD0hMSl7YXNzZXJ0KCFlLmNvbXBvc2l0ZSwiTXVzdCBiZSBhIHNpbXBsZSBmb250LiIpO2NvbnN0IGE9W10scj1lLmRlZmF1bHRFbmNvZGluZy5zbGljZSgpLGk9ZS5iYXNlRW5jb2RpbmdOYW1lLG49ZS5kaWZmZXJlbmNlcztmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07Ii5ub3RkZWYiIT09dCYmKHJbZV09dCl9Y29uc3Qgcz1mcigpO2Zvcihjb25zdCBuIGluIHIpe2xldCBvPXJbbl07aWYoIiI9PT1vKWNvbnRpbnVlO2xldCBjPXNbb107aWYodm9pZCAwIT09Yyl7YVtuXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpO2NvbnRpbnVlfWxldCBsPTA7c3dpdGNoKG9bMF0pe2Nhc2UiRyI6Mz09PW8ubGVuZ3RoJiYobD1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PW8ubGVuZ3RoJiYobD1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihvLmxlbmd0aD49MyYmby5sZW5ndGg8PTQpe2NvbnN0IGE9by5zdWJzdHJpbmcoMSk7aWYodCl7bD1wYXJzZUludChhLDE2KTticmVha31sPSthO2lmKE51bWJlci5pc05hTihsKSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpjPWdldFVuaWNvZGVGb3JHbHlwaChvLHMpOy0xIT09YyYmKGw9Yyk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2gobyl7Y2FzZSJmX2giOmNhc2UiZl90IjpjYXNlIlRfaCI6YVtuXT1vLnJlcGxhY2VBbGwoIl8iLCIiKTtjb250aW51ZX19aWYobD4wJiZsPD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKGwpKXtpZihpJiZsPT09K24pe2NvbnN0IGU9Z2V0RW5jb2RpbmcoaSk7aWYoZSYmKG89ZVtuXSkpe2Fbbl09U3RyaW5nLmZyb21DaGFyQ29kZShzW29dKTtjb250aW51ZX19YVtuXT1TdHJpbmcuZnJvbUNvZGVQb2ludChsKX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD1lLnRvVW5pY29kZT8ubGVuZ3RoPjA7aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCl7IWUuY29tcG9zaXRlJiZlLmhhc0VuY29kaW5nJiYoZS5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtyZXR1cm4gZS50b1VuaWNvZGV9aWYoIWUuY29tcG9zaXRlKXJldHVybiBuZXcgVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO2lmKGUuY29tcG9zaXRlJiYoZS5jTWFwLmJ1aWx0SW5DTWFwJiYhKGUuY01hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8/LnJlZ2lzdHJ5JiYoIkdCMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJDTlMxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkphcGFuMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJLb3JlYTEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nKSkpe2NvbnN0e3JlZ2lzdHJ5OnQsb3JkZXJpbmc6YX09ZS5jaWRTeXN0ZW1JbmZvLHI9TmFtZS5nZXQoYCR7dH0tJHthfS1VQ1MyYCksaT1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnIsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksbj1bXSxzPVtdO2UuY01hcC5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBhPWkubG9va3VwKHQpO2lmKGEpe3MubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9MilzLnB1c2goKGEuY2hhckNvZGVBdChlKTw8OCkrYS5jaGFyQ29kZUF0KGUrMSkpO25bZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5zKX19KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChuKX1yZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfWFzeW5jIHJlYWRUb1VuaWNvZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3JldHVybiB0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwP25ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTpuZXcgVG9Vbmljb2RlTWFwKHQuZ2V0TWFwKCkpfWlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXRyeXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtpZih0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgYT1uZXcgQXJyYXkodC5sZW5ndGgpO3QuZm9yRWFjaChmdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdCl7YVtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh0KTtyZXR1cm59dC5sZW5ndGglMiE9MCYmKHQ9IlwwIit0KTtjb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9Mil7Y29uc3QgYT10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7aWYoNTUyOTYhPSg2MzQ4OCZhKSl7ci5wdXNoKGEpO2NvbnRpbnVlfWUrPTI7Y29uc3QgaT10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7ci5wdXNoKCgoMTAyMyZhKTw8MTApKygxMDIzJmkpKzY1NTM2KX1hW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KC4uLnIpfSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoYSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyKytdPDw4fGVbcl0sbj1yPj4xOygwIT09aXx8dC5oYXMobikpJiYoYVtuXT1pKX1yZXR1cm4gYX1leHRyYWN0V2lkdGhzKGUsdCxhKXtjb25zdCByPXRoaXMueHJlZjtsZXQgaT1bXSxuPTA7Y29uc3Qgcz1bXTtsZXQgbztpZihhLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtuPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGM9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGMpKWZvcihsZXQgZT0wLHQ9Yy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9ci5mZXRjaElmUmVmKGNbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgYT1yLmZldGNoSWZSZWYoY1tlXSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPXIuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGEmJihpW3RdPWEpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKWJyZWFrO3tjb25zdCBuPXIuZmV0Y2hJZlJlZihjWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygbiljb250aW51ZTtmb3IobGV0IGU9dDtlPD1hO2UrKylpW2VdPW59fX1pZihhLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBhPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1bYVsxXSwuNSpuLGFbMF1dO2E9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2xldCB0PXIuZmV0Y2hJZlJlZihhW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IGk9ci5mZXRjaElmUmVmKGFbZV0pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPVtyLmZldGNoSWZSZWYoaVtlKytdKSxyLmZldGNoSWZSZWYoaVtlKytdKSxyLmZldGNoSWZSZWYoaVtlXSldO2lzTnVtYmVyQXJyYXkoYSxudWxsKSYmKHNbdF09YSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpYnJlYWs7e2NvbnN0IG49W3IuZmV0Y2hJZlJlZihhWysrZV0pLHIuZmV0Y2hJZlJlZihhWysrZV0pLHIuZmV0Y2hJZlJlZihhWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShuLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PWk7ZSsrKXNbZV09bn19fX19ZWxzZXtjb25zdCBzPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHMpKXtsZXQgZT1hLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBzKXtjb25zdCBhPXIuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGEmJihpW2VdPWEpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtuPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7aT10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO249ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYz0hMCxsPW47Zm9yKGNvbnN0IGUgaW4gaSl7Y29uc3QgdD1pW2VdO2lmKHQpaWYobCl7aWYobCE9PXQpe2M9ITE7YnJlYWt9fWVsc2UgbD10fWM/YS5mbGFnc3w9eHI6YS5mbGFncyY9fnhyO2EuZGVmYXVsdFdpZHRoPW47YS53aWR0aHM9aTthLmRlZmF1bHRWTWV0cmljcz1vO2Eudm1ldHJpY3M9c31pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIGpyKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBpPUxyKClbZV18fGU7Y29uc3Qgbj16cigpO2kgaW4gbnx8KGk9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBzPW5baV07aWYoIm51bWJlciI9PXR5cGVvZiBzKXt0PXM7cj0hMH1lbHNlIGE9cygpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6cix3aWR0aHM6YX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj10LmRpZmZlcmVuY2VzLGk9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gciYmZVtyW3RdXT9hW3RdPWVbclt0XV06dCBpbiBpJiZlW2lbdF1dJiYoYVt0XT1lW2lbdF1dKTtyZXR1cm4gYX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBhPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCByLGk9ITE7aWYoIlR5cGUwIj09PWEubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2E9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7aT0hMH1sZXQgbj1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49MCk7bGV0IHM9ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9aT82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksYz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXtyPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBhPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXIudXBkYXRlKGEubmFtZSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgUmVmKXIudXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBhLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXIudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXIudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgTmFtZT9hW3JdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGFbcl09dC50b1N0cmluZygpKX1yLnVwZGF0ZShhLmpvaW4oKSl9ci51cGRhdGUoYCR7bn0tJHtzfWApO2lmKGMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWMuc3RyZWFtfHxjLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7ci51cGRhdGUodCl9ZWxzZSBjIGluc3RhbmNlb2YgTmFtZSYmci51cGRhdGUoYy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7ci51cGRhdGUoZS5qb2luKCkpfWlmKGkpe3IudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmEucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7YS5qb2luKCl9XWApfXIudXBkYXRlKGUuam9pbigpKX1jb25zdCBpPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtpIGluc3RhbmNlb2YgTmFtZT9yLnVwZGF0ZShpLm5hbWUpOmkgaW5zdGFuY2VvZiBSZWY/ci51cGRhdGUoaS50b1N0cmluZygpKTppIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmci51cGRhdGUoaS5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOmksdHlwZTphLm5hbWUsZmlyc3RDaGFyOm4sbGFzdENoYXI6cyx0b1VuaWNvZGU6YyxoYXNoOnI/ci5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6YSxiYXNlRGljdDpyLGNvbXBvc2l0ZTppLHR5cGU6bixmaXJzdENoYXI6cyxsYXN0Q2hhcjpvLHRvVW5pY29kZTpjLGNzc0ZvbnRJbmZvOmx9KXtjb25zdCBoPSJUeXBlMyI9PT1uO2lmKCFlKXtpZighaCl7bGV0IGU9YS5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IHQ9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSksaT1lLnNwbGl0KCItIiwxKVswXSxsPSh0aGlzLmlzU2VyaWZGb250KGkpP1NyOjApfCh0Lm1vbm9zcGFjZT94cjowKXwoWHIoKVtpXT9BcjprciksdT17dHlwZTpuLG5hbWU6ZSxsb2FkZWROYW1lOnIubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczp0LndpZHRocyxkZWZhdWx0V2lkdGg6dC5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpsLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmMseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6aH0sZD1hLmdldCgiV2lkdGhzIiksZj1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBnPW51bGw7aWYoZil7Zz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShmKTt1LmlzSW50ZXJuYWxGb250PSEhZ30hdS5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYodS5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsZixuKSk7Y29uc3QgcD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyhhLHUpO2lmKEFycmF5LmlzQXJyYXkoZCkpe2NvbnN0IGU9W107bGV0IHQ9cztmb3IoY29uc3QgYSBvZiBkKXtjb25zdCByPXRoaXMueHJlZi5mZXRjaElmUmVmKGEpOyJudW1iZXIiPT10eXBlb2YgciYmKGVbdF09cik7dCsrfXAud2lkdGhzPWV9ZWxzZSBwLndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKHQud2lkdGhzLHApO3JldHVybiBuZXcgRm9udChlLGcscCx0aGlzLm9wdGlvbnMpfWU9RGljdC5lbXB0eX1sZXQgdT1lLmdldCgiRm9udE5hbWUiKSxkPWEuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9TmFtZS5nZXQodSkpOyJzdHJpbmciPT10eXBlb2YgZCYmKGQ9TmFtZS5nZXQoZCkpO2NvbnN0IGY9dT8ubmFtZSxnPWQ/Lm5hbWU7aWYoaClmfHwodT1OYW1lLmdldChuKSk7ZWxzZSBpZihmIT09Zyl7aW5mbyhgVGhlIEZvbnREZXNjcmlwdG9yJ3MgRm9udE5hbWUgaXMgIiR7Zn0iIGJ1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCAiJHtnfSIuYCk7ZiYmZyYmKGcuc3RhcnRzV2l0aChmKXx8IWlzS25vd25Gb250TmFtZShmKSYmaXNLbm93bkZvbnROYW1lKGcpKSYmKHU9bnVsbCk7dXx8PWR9aWYoISh1IGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgbmFtZSIpO2xldCBwLG0sYix5LHc7dHJ5e3A9ZS5nZXQoIkZvbnRGaWxlIiwiRm9udEZpbGUyIiwiRm9udEZpbGUzIik7aWYocCl7aWYoIShwIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBzaG91bGQgYmUgYSBzdHJlYW0iKTtpZihwLmlzRW1wdHkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBpcyBlbXB0eSIpfX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt1Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTtwPW51bGx9bGV0IHg9ITEsUz1udWxsLGs9bnVsbDtpZihwKXtpZihwLmRpY3Qpe2NvbnN0IGU9cC5kaWN0LmdldCgiU3VidHlwZSIpO2UgaW5zdGFuY2VvZiBOYW1lJiYobT1lLm5hbWUpO2I9cC5kaWN0LmdldCgiTGVuZ3RoMSIpO3k9cC5kaWN0LmdldCgiTGVuZ3RoMiIpO3c9cC5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKGwpe2NvbnN0IGU9Z2V0WGZhRm9udE5hbWUodS5uYW1lKTtpZihlKXtsLmZvbnRGYW1pbHk9YCR7bC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO2wubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7Uz1lLmZhY3RvcnN8fG51bGw7cD1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO3g9ISFwO3I9YT1nZXRYZmFGb250RGljdCh1Lm5hbWUpO2k9ITB9fWVsc2UgaWYoIWgpe2NvbnN0IGU9Z2V0U3RhbmRhcmRGb250TmFtZSh1Lm5hbWUpO2lmKGUpe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZSk7eD0hIXB9IXgmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGs9Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCx1Lm5hbWUsZSxuKSl9Y29uc3QgQz1sb29rdXBNYXRyaXgoYS5nZXRBcnJheSgiRm9udE1hdHJpeCIpLHQpLHY9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJGb250QkJveCIpfHxhLmdldEFycmF5KCJGb250QkJveCIpLGg/WzAsMCwwLDBdOnZvaWQgMCk7bGV0IEY9ZS5nZXQoIkFzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgRiYmKEY9dm9pZCAwKTtsZXQgVD1lLmdldCgiRGVzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgVCYmKFQ9dm9pZCAwKTtsZXQgTz1lLmdldCgiWEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgTyYmKE89MCk7bGV0IEQ9ZS5nZXQoIkNhcEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgRCYmKEQ9MCk7bGV0IE09ZS5nZXQoIkZsYWdzIik7TnVtYmVyLmlzSW50ZWdlcihNKXx8KE09MCk7bGV0IFI9ZS5nZXQoIkl0YWxpY0FuZ2xlIik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj0wKTtjb25zdCBOPXt0eXBlOm4sbmFtZTp1Lm5hbWUsc3VidHlwZTptLGZpbGU6cCxsZW5ndGgxOmIsbGVuZ3RoMjp5LGxlbmd0aDM6dyxpc0ludGVybmFsRm9udDp4LGxvYWRlZE5hbWU6ci5sb2FkZWROYW1lLGNvbXBvc2l0ZTppLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDpDLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmMsYmJveDp2LGFzY2VudDpGLGRlc2NlbnQ6VCx4SGVpZ2h0Ok8sY2FwSGVpZ2h0OkQsZmxhZ3M6TSxpdGFsaWNBbmdsZTpSLGlzVHlwZTNGb250OmgsY3NzRm9udEluZm86bCxzY2FsZUZhY3RvcnM6UyxzeXN0ZW1Gb250SW5mbzprfTtpZihpKXtjb25zdCBlPXIuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBOYW1lJiYoTi5jaWRFbmNvZGluZz1lLm5hbWUpO2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO04uY01hcD10O04udmVydGljYWw9Ti5jTWFwLnZlcnRpY2FsfWNvbnN0IEU9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMoYSxOKTt0aGlzLmV4dHJhY3RXaWR0aHMoYSxlLEUpO3JldHVybiBuZXcgRm9udCh1Lm5hbWUscCxFLHRoaXMub3B0aW9ucyl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxhLHIpe2Z1bmN0aW9uIGJ1aWxkUGF0aCh0KXtjb25zdCBpPWAke2UubG9hZGVkTmFtZX1fcGF0aF8ke3R9YDt0cnl7aWYoZS5yZW5kZXJlci5oYXNCdWlsdFBhdGgodCkpcmV0dXJuO2Euc2VuZCgiY29tbW9ub2JqIixbaSwiRm9udFBhdGgiLGUucmVuZGVyZXIuZ2V0UGF0aEpzKHQpXSl9Y2F0Y2goZSl7aWYoci5pZ25vcmVFcnJvcnMpe3dhcm4oYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0Py5mb250Q2hhciYmYnVpbGRQYXRoKHQuZm9udENoYXIpfX1zdGF0aWMgZ2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBEaWN0O2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgVHJhbnNsYXRlZEZvbnR7I3VlPSExOyNkZT1udWxsO2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6YX0pe3RoaXMubG9hZGVkTmFtZT1lO3RoaXMuZm9udD10O3RoaXMuZGljdD1hO3RoaXMudHlwZTNEZXBlbmRlbmNpZXM9dC5pc1R5cGUzRm9udD9uZXcgU2V0Om51bGx9c2VuZChlKXtpZih0aGlzLiN1ZSlyZXR1cm47dGhpcy4jdWU9ITA7Y29uc3QgdD10aGlzLmZvbnQuZXhwb3J0RGF0YSgpLGE9W107aWYodC5kYXRhKXt0LmRhdGEuY2hhclByb2NPcGVyYXRvckxpc3QmJih0LmNoYXJQcm9jT3BlcmF0b3JMaXN0PXQuZGF0YS5jaGFyUHJvY09wZXJhdG9yTGlzdCk7dC5kYXRhPUZvbnRJbmZvLndyaXRlKHQuZGF0YSk7YS5wdXNoKHQuZGF0YSl9ZS5zZW5kKCJjb21tb25vYmoiLFt0aGlzLmxvYWRlZE5hbWUsIkZvbnQiLHRdLGEpfWZhbGxiYWNrKGUsdCl7aWYodGhpcy5mb250LmRhdGEpe3RoaXMuZm9udC5kaXNhYmxlRm9udEZhY2U9ITA7UGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyh0aGlzLmZvbnQsdGhpcy5mb250LmdseXBoQ2FjaGVWYWx1ZXMsZSx0KX19bG9hZFR5cGUzRGF0YShlLHQsYSl7aWYodGhpcy4jZGUpcmV0dXJuIHRoaXMuI2RlO2NvbnN0e2ZvbnQ6cix0eXBlM0RlcGVuZGVuY2llczppfT10aGlzO2Fzc2VydChyLmlzVHlwZTNGb250LCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHM9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgYz10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxsPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LGg9T2JqZWN0LmNyZWF0ZShudWxsKSxbdSxkLGYsZ109ci5iYm94LHA9Zi11LG09Zy1kLGI9TWF0aC5oeXBvdChwLG0pO2Zvcihjb25zdCBlIG9mIGMuZ2V0S2V5cygpKW89by50aGVuKCgpPT57Y29uc3QgdD1jLmdldChlKSxyPW5ldyBPcGVyYXRvckxpc3Q7cmV0dXJuIG4uZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmEscmVzb3VyY2VzOmwsb3BlcmF0b3JMaXN0OnJ9KS50aGVuKCgpPT57c3dpdGNoKHIuZm5BcnJheVswXSl7Y2FzZSBydDp0aGlzLiNmZShyLGIpO2JyZWFrO2Nhc2UgYXQ6Ynx8dGhpcy4jZ2Uocil9aFtlXT1yLmdldElSKCk7Zm9yKGNvbnN0IGUgb2Ygci5kZXBlbmRlbmNpZXMpaS5hZGQoZSl9KS5jYXRjaChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGE9bmV3IE9wZXJhdG9yTGlzdDtoW2VdPWEuZ2V0SVIoKX0pfSk7dGhpcy4jZGU9by50aGVuKCgpPT57ci5jaGFyUHJvY09wZXJhdG9yTGlzdD1oO2lmKHRoaXMuX2Jib3gpe3IuaXNDaGFyQkJveD0hMDtyLmJib3g9dGhpcy5fYmJveH19KTtyZXR1cm4gdGhpcy4jZGV9I2ZlKGUsdD1OYU4pe2NvbnN0IGE9VXRpbC5ub3JtYWxpemVSZWN0KGUuYXJnc0FycmF5WzBdLnNsaWNlKDIpKSxyPWFbMl0tYVswXSxpPWFbM10tYVsxXSxuPU1hdGguaHlwb3QocixpKTtpZigwPT09cnx8MD09PWkpe2UuZm5BcnJheS5zcGxpY2UoMCwxKTtlLmFyZ3NBcnJheS5zcGxpY2UoMCwxKX1lbHNlIGlmKDA9PT10fHxNYXRoLnJvdW5kKG4vdCk+PTEwKXt0aGlzLl9iYm94Pz89WzEvMCwxLzAsLTEvMCwtMS8wXTtVdGlsLnJlY3RCb3VuZGluZ0JveCguLi5hLHRoaXMuX2Jib3gpfWxldCBzPTAsbz1lLmxlbmd0aDtmb3IoO3M8bzspe3N3aXRjaChlLmZuQXJyYXlbc10pe2Nhc2UgcnQ6YnJlYWs7Y2FzZSBpdDpjYXNlIG50OmNhc2Ugc3Q6Y2FzZSBvdDpjYXNlIGN0OmNhc2UgbHQ6Y2FzZSBodDpjYXNlIHV0OmNhc2UgZHQ6Y2FzZSBmdDpjYXNlIGd0OmNhc2UgcHQ6Y2FzZSBtdDpjYXNlIHBlOmUuZm5BcnJheS5zcGxpY2UocywxKTtlLmFyZ3NBcnJheS5zcGxpY2UocywxKTtvLS07Y29udGludWU7Y2FzZSBiZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtzXTtsZXQgYT0wLHI9dC5sZW5ndGg7Zm9yKDthPHI7KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7ci0tO2NvbnRpbnVlfWErK319cysrfX0jZ2UoZSl7bGV0IHQ9MTtjb25zdCBhPWUubGVuZ3RoO2Zvcig7dDxhOyl7aWYoZS5mbkFycmF5W3RdPT09cXQpe2NvbnN0IGE9ZS5hcmdzQXJyYXlbdF1bMl07dGhpcy5fYmJveD8/PVsxLzAsMS8wLC0xLzAsLTEvMF07VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4uYSx0aGlzLl9iYm94KX10Kyt9fX1jbGFzcyBTdGF0ZU1hbmFnZXJ7Y29uc3RydWN0b3IoZT1uZXcgRXZhbFN0YXRlKXt0aGlzLnN0YXRlPWU7dGhpcy5zdGF0ZVN0YWNrPVtdfXNhdmUoKXtjb25zdCBlPXRoaXMuc3RhdGU7dGhpcy5zdGF0ZVN0YWNrLnB1c2godGhpcy5zdGF0ZSk7dGhpcy5zdGF0ZT1lLmNsb25lKCl9cmVzdG9yZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZVN0YWNrLnBvcCgpO2UmJih0aGlzLnN0YXRlPWUpfXRyYW5zZm9ybShlKXt0aGlzLnN0YXRlLmN0bT1VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShmYSk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9dDt0aGlzLnRleHRNYXRyaXg9ZmEuc2xpY2UoKTt0aGlzLnRleHRMaW5lTWF0cml4PWZhLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsYSxyLGksbil7Y29uc3Qgcz10aGlzLnRleHRNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09aTtzWzVdPW59c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEscixpLG4pe2NvbnN0IHM9dGhpcy50ZXh0TGluZU1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1pO3NbNV09bn10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KGZhKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPUM7dGhpcy5fZmlsbENvbG9yU3BhY2U9dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuZ3JheTt0aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3RoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbDt0aGlzLmN1cnJlbnRQb2ludFg9dGhpcy5jdXJyZW50UG9pbnRZPTA7dGhpcy5wYXRoTWluTWF4PW5ldyBGbG9hdDMyQXJyYXkoWzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5wYXRoQnVmZmVyPVtdfWdldCBmaWxsQ29sb3JTcGFjZSgpe3JldHVybiB0aGlzLl9maWxsQ29sb3JTcGFjZX1zZXQgZmlsbENvbG9yU3BhY2UoZSl7dGhpcy5fZmlsbENvbG9yU3BhY2U9dGhpcy5wYXR0ZXJuRmlsbENvbG9yU3BhY2U9ZX1nZXQgc3Ryb2tlQ29sb3JTcGFjZSgpe3JldHVybiB0aGlzLl9zdHJva2VDb2xvclNwYWNlfXNldCBzdHJva2VDb2xvclNwYWNlKGUpe3RoaXMuX3N0cm9rZUNvbG9yU3BhY2U9dGhpcy5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZT1lfWNsb25lKHtuZXdQYXRoOmU9ITF9PXt9KXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7aWYoZSl7dC5wYXRoQnVmZmVyPVtdO3QucGF0aE1pbk1heD1uZXcgRmxvYXQzMkFycmF5KFsxLzAsMS8wLC0xLzAsLTEvMF0pfXJldHVybiB0fX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6aGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6dWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6ZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6ZmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6Z2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOm1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpiZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDp5ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDp3ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6eGUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6U2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6QWUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6a2UsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6Q2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6dmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6RmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOkllLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOk9lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOkRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOkRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOk1lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlJlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOkJlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOk5lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOlBlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOkVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOkxlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOl9lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6amUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOlhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDpxZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6SGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOldlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDp6ZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6JGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOkdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpWZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6S2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOkplLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOlllLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpaZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6UWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpldCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOnR0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDphdCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6cnQsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOml0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDpudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6c3QsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDpvdCxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOmN0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6bHQsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOmh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOnV0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDpkdCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6ZnQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6Z3QsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6cHQsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOm10LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpidCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6eXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOnd0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDp4dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6U3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOkF0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6a3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpDdCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOnZ0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpGdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6SXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsYT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWE7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBhPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGEgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IHI9YS5jbWQsaT1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbcl07aWYoIWkpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHtyfSIuYCk7Y29udGludWV9Y29uc3Qgbj1pLmlkLHM9aS5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1uPj1TZSYmbjw9RWU7aWYoaS52YXJpYWJsZUFyZ3Mpbz5zJiZpbmZvKGBDb21tYW5kICR7cn06IGV4cGVjdGVkIFswLCAke3N9XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PXMpe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5zOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxzJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88cyl7Y29uc3QgZT1gY29tbWFuZCAke3J9OiBleHBlY3RlZCAke3N9IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChuLHQpO2UuZm49bjtlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09c2EpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgeWU6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2Ugd2U6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgeGU6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6cn09ZTtzd2l0Y2goMHxhKXtjYXNlIHplOmNvbnN0W2UsYV09cjtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGEmJmE+MCYmKHQuZm9udFNpemU9YSk7YnJlYWs7Y2FzZSBmdDpDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgdXQ6Q29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBwdDpDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihlKTt0aGlzLnN0cmVhbT1lO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz10O3RoaXMueHJlZj1hO3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlPXI7dGhpcy5yZXNvdXJjZXM9ZS5kaWN0Py5nZXQoIlJlc291cmNlcyIpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfTtsZXQgdD17c2NhbGVGYWN0b3I6MSxmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyksZmlsbENvbG9yU3BhY2U6Q29sb3JTcGFjZVV0aWxzLmdyYXl9LGE9ITE7Y29uc3Qgcj1bXTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoYXx8IXRoaXMucmVhZChlKSlicmVhaztjb25zdHtmbjppLGFyZ3M6bn09ZTtzd2l0Y2goMHxpKXtjYXNlIHllOnIucHVzaCh7c2NhbGVGYWN0b3I6dC5zY2FsZUZhY3Rvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnROYW1lOnQuZm9udE5hbWUsZm9udENvbG9yOnQuZm9udENvbG9yLnNsaWNlKCksZmlsbENvbG9yU3BhY2U6dC5maWxsQ29sb3JTcGFjZX0pO2JyZWFrO2Nhc2Ugd2U6dD1yLnBvcCgpfHx0O2JyZWFrO2Nhc2UgSmU6dC5zY2FsZUZhY3Rvcio9TWF0aC5oeXBvdChuWzBdLG5bMV0pO2JyZWFrO2Nhc2UgemU6Y29uc3RbZSxpXT1uO2UgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1lLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgaSYmaT4wJiYodC5mb250U2l6ZT1pKnQuc2NhbGVGYWN0b3IpO2JyZWFrO2Nhc2UgbnQ6dC5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOm5bMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnRoaXMuX2xvY2FsQ29sb3JTcGFjZUNhY2hlfSk7YnJlYWs7Y2FzZSBjdDp0LmZpbGxDb2xvclNwYWNlLmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgZnQ6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHV0OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgcHQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBaZTpjYXNlIFFlOmNhc2UgZXQ6Y2FzZSB0dDphPSEwfX19Y2F0Y2goZSl7d2FybihgcGFyc2VBcHBlYXJhbmNlU3RyZWFtIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9dGhpcy5zdHJlYW0ucmVzZXQoKTtkZWxldGUgdC5zY2FsZUZhY3RvcjtkZWxldGUgdC5maWxsQ29sb3JTcGFjZTtyZXR1cm4gdH1nZXQgX2xvY2FsQ29sb3JTcGFjZUNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxDb2xvclNwYWNlQ2FjaGUiLG5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmV2YWx1YXRvck9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7cmV0dXJuYCR7bnVtYmVyVG9TdHJpbmcoZVswXS8yNTUpfSAke3Q/ImciOiJHIn1gfXJldHVybiBBcnJheS5mcm9tKGUsZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9Y2xhc3MgRmFrZVVuaWNvZGVGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy54cmVmPWU7dGhpcy53aWR0aHM9bnVsbDt0aGlzLmZpcnN0Q2hhcj0xLzA7dGhpcy5sYXN0Q2hhcj0tMS8wO3RoaXMuZm9udEZhbWlseT10O2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpO3RoaXMuY3R4TWVhc3VyZT1hLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSk7RmFrZVVuaWNvZGVGb250Ll9mb250TmFtZUlkfHwoRmFrZVVuaWNvZGVGb250Ll9mb250TmFtZUlkPTEpO3RoaXMuZm9udE5hbWU9TmFtZS5nZXQoYEludmFsaWRQREZqc0ZvbnRfJHt0fV8ke0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZCsrfWApfWdldCBmb250RGVzY3JpcHRvclJlZigpe2lmKCFGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250RGVzY3JpcHRvciIpO2Uuc2V0KCJGb250TmFtZSIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIkZvbnRGYW1pbHkiLCJNeXJpYWRQcm8gUmVndWxhciIpO2Uuc2V0KCJGb250QkJveCIsWzAsMCwwLDBdKTtlLnNldElmTmFtZSgiRm9udFN0cmV0Y2giLCJOb3JtYWwiKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJDSURGb250VHlwZTAiKTtlLnNldElmTmFtZSgiQ0lEVG9HSURNYXAiLCJJZGVudGl0eSIpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10sYT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IHI9bnVsbCxpPW51bGw7Zm9yKGNvbnN0W2Usbl1vZiBhKWlmKHIpaWYoZT09PXIraS5sZW5ndGgpaS5wdXNoKG4pO2Vsc2V7dC5wdXNoKHIsaSk7cj1lO2k9W25dfWVsc2V7cj1lO2k9W25dfXImJnQucHVzaChyLGkpO2Uuc2V0KCJXIix0KTtjb25zdCBuPW5ldyBEaWN0KHRoaXMueHJlZik7bi5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtuLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO24uc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIsbik7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udCIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiVHlwZTAiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJJZGVudGl0eS1IIik7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldElmTmFtZSgiVG9Vbmljb2RlIiwiSWRlbnRpdHktSCIpO3JldHVybiB0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpLHQ9bmV3IERpY3QodGhpcy54cmVmKTt0LnNldCh0aGlzLmZvbnROYW1lLm5hbWUsdGhpcy5iYXNlRm9udFJlZik7ZS5zZXQoIkZvbnQiLHQpO3JldHVybiBlfV9jcmVhdGVDb250ZXh0KCl7dGhpcy53aWR0aHM9bmV3IE1hcDt0aGlzLmN0eE1lYXN1cmUuZm9udD1gMTAwMHB4ICR7dGhpcy5mb250RmFtaWx5fWA7cmV0dXJuIHRoaXMuY3R4TWVhc3VyZX1jcmVhdGVGb250UmVzb3VyY2VzKGUpe2NvbnN0IHQ9dGhpcy5fY3JlYXRlQ29udGV4dCgpO2Zvcihjb25zdCBhIG9mIGUuc3BsaXQoL1xyXG4/fFxuLykpZm9yKGNvbnN0IGUgb2YgYS5zcGxpdCgiIikpe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMud2lkdGhzLmhhcyhhKSljb250aW51ZTtjb25zdCByPXQubWVhc3VyZVRleHQoZSksaT1NYXRoLmNlaWwoci53aWR0aCk7dGhpcy53aWR0aHMuc2V0KGEsaSk7dGhpcy5maXJzdENoYXI9TWF0aC5taW4oYSx0aGlzLmZpcnN0Q2hhcik7dGhpcy5sYXN0Q2hhcj1NYXRoLm1heChhLHRoaXMubGFzdENoYXIpfXJldHVybiB0aGlzLnJlc291cmNlc31zdGF0aWMgZ2V0Rmlyc3RQb3NpdGlvbkluZm8oZSx0LGkpe2NvbnN0W24scyxvLGNdPWU7bGV0IGw9by1uLGg9Yy1zO3QlMTgwIT0wJiYoW2wsaF09W2gsbF0pO2NvbnN0IHU9YSppO3JldHVybntjb29yZHM6WzAsaCtyKmktdV0sYmJveDpbMCwwLGwsaF0sbWF0cml4OjAhPT10P2dldFJvdGF0aW9uTWF0cml4KHQsaCx1KTp2b2lkIDB9fWNyZWF0ZUFwcGVhcmFuY2UoZSx0LGksbixzLG8pe2NvbnN0IGM9dGhpcy5fY3JlYXRlQ29udGV4dCgpLGw9W107bGV0IGg9LTEvMDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKXtsLnB1c2godCk7Y29uc3QgZT1jLm1lYXN1cmVUZXh0KHQpLndpZHRoO2g9TWF0aC5tYXgoaCxlKTtmb3IoY29uc3QgZSBvZiBjb2RlUG9pbnRJdGVyKHQpKXtjb25zdCB0PVN0cmluZy5mcm9tQ29kZVBvaW50KGUpO2xldCBhPXRoaXMud2lkdGhzLmdldChlKTtpZih2b2lkIDA9PT1hKXtjb25zdCByPWMubWVhc3VyZVRleHQodCk7YT1NYXRoLmNlaWwoci53aWR0aCk7dGhpcy53aWR0aHMuc2V0KGUsYSk7dGhpcy5maXJzdENoYXI9TWF0aC5taW4oZSx0aGlzLmZpcnN0Q2hhcik7dGhpcy5sYXN0Q2hhcj1NYXRoLm1heChlLHRoaXMubGFzdENoYXIpfX19aCo9bi8xZTM7Y29uc3RbdSxkLGYsZ109dDtsZXQgcD1mLXUsbT1nLWQ7aSUxODAhPTAmJihbcCxtXT1bbSxwXSk7bGV0IGI9MTtoPnAmJihiPXAvaCk7bGV0IHk9MTtjb25zdCB3PWEqbix4PXIqbixTPXcqbC5sZW5ndGg7Uz5tJiYoeT1tL1MpO2NvbnN0IGs9bipNYXRoLm1pbihiLHkpLEM9WyJxIixgMCAwICR7bnVtYmVyVG9TdHJpbmcocCl9ICR7bnVtYmVyVG9TdHJpbmcobSl9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7bnVtYmVyVG9TdHJpbmcobSt4KX0gVG0gMCBUYyAke2dldFBkZkNvbG9yKHMsITApfWAsYC8ke3RoaXMuZm9udE5hbWUubmFtZX0gJHtudW1iZXJUb1N0cmluZyhrKX0gVGZgXSx7cmVzb3VyY2VzOnZ9PXRoaXM7aWYoMSE9PShvPSJudW1iZXIiPT10eXBlb2YgbyYmbz49MCYmbzw9MT9vOjEpKXtDLnB1c2goIi9SMCBncyIpO2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQoImNhIixvKTt0LnNldCgiQ0EiLG8pO3Quc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIik7ZS5zZXQoIlIwIix0KTt2LnNldCgiRXh0R1N0YXRlIixlKX1jb25zdCBGPW51bWJlclRvU3RyaW5nKHcpO2Zvcihjb25zdCBlIG9mIGwpQy5wdXNoKGAwIC0ke0Z9IFRkIDwke3N0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl9PiBUamApO0MucHVzaCgiRVQiLCJRIik7Y29uc3QgVD1DLmpvaW4oIlxuIiksTz1uZXcgRGljdCh0aGlzLnhyZWYpO08uc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO08uc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO08uc2V0KCJCQm94IixbMCwwLHAsbV0pO08uc2V0KCJMZW5ndGgiLFQubGVuZ3RoKTtPLnNldCgiUmVzb3VyY2VzIix2KTtpZihpKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGkscCxtKTtPLnNldCgiTWF0cml4IixlKX1jb25zdCBEPW5ldyBTdHJpbmdTdHJlYW0oVCk7RC5kaWN0PU87cmV0dXJuIER9fWNvbnN0IGtuPVsibS9kIiwibS9kL3l5IiwibW0vZGQveXkiLCJtbS95eSIsImQtbW1tIiwiZC1tbW0teXkiLCJkZC1tbW0teXkiLCJ5eS1tbS1kZCIsIm1tbS15eSIsIm1tbW0teXkiLCJtbW0gZCwgeXl5eSIsIm1tbW0gZCwgeXl5eSIsIm0vZC95eSBoOk1NIHR0IiwibS9kL3l5IEhIOk1NIl0sQ249WyJISDpNTSIsImg6TU0gdHQiLCJISDpNTTpzcyIsImg6TU06c3MgdHQiXTtjbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKGU9ITEpe2NvbnN0IHQ9bmV3IE1hcDtpZighdGhpcy5yb290KXJldHVybiB0O2NvbnN0IGE9dGhpcy54cmVmLHI9bmV3IFJlZlNldDtyLnB1dCh0aGlzLnJvb3QpO2NvbnN0IGk9W3RoaXMucm9vdF07Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3Qgbj1hLmZldGNoSWZSZWYoaS5zaGlmdCgpKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihuLmhhcygiS2lkcyIpKXtjb25zdCBlPW4uZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoci5oYXModCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBEdXBsaWNhdGUgZW50cnkgaW4gIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7aS5wdXNoKHQpO3IucHV0KHQpfWNvbnRpbnVlfWNvbnN0IHM9bi5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShzKSlmb3IobGV0IHI9MCxpPXMubGVuZ3RoO3I8aTtyKz0yKXQuc2V0KGEuZmV0Y2hJZlJlZihzW3JdKSxlP3NbcisxXTphLmZldGNoSWZSZWYoc1tyKzFdKSl9cmV0dXJuIHR9Z2V0UmF3KGUpe2lmKCF0aGlzLnJvb3QpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnhyZWY7bGV0IGE9dC5mZXRjaElmUmVmKHRoaXMucm9vdCkscj0wO2Zvcig7YS5oYXMoIktpZHMiKTspe2lmKCsrcj4xMCl7d2FybihgU2VhcmNoIGRlcHRoIGxpbWl0IHJlYWNoZWQgZm9yICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO3JldHVybiBudWxsfWNvbnN0IGk9YS5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gbnVsbDtsZXQgbj0wLHM9aS5sZW5ndGgtMTtmb3IoO248PXM7KXtjb25zdCByPW4rcz4+MSxvPXQuZmV0Y2hJZlJlZihpW3JdKSxjPW8uZ2V0KCJMaW1pdHMiKTtpZihlPHQuZmV0Y2hJZlJlZihjWzBdKSlzPXItMTtlbHNle2lmKCEoZT50LmZldGNoSWZSZWYoY1sxXSkpKXthPW87YnJlYWt9bj1yKzF9fWlmKG4+cylyZXR1cm4gbnVsbH1jb25zdCBpPWEuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2xldCBhPTAscj1pLmxlbmd0aC0yO2Zvcig7YTw9cjspe2NvbnN0IG49YStyPj4xLHM9bisoMSZuKSxvPXQuZmV0Y2hJZlJlZihpW3NdKTtpZihlPG8pcj1zLTI7ZWxzZXtpZighKGU+bykpcmV0dXJuIGlbcysxXTthPXMrMn19fXJldHVybiBudWxsfWdldChlKXtyZXR1cm4gdGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5nZXRSYXcoZSkpfX1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fWNsYXNzIE51bWJlclRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOdW1zIil9fWZ1bmN0aW9uIGNsZWFyR2xvYmFsQ2FjaGVzKCl7IWZ1bmN0aW9uIGNsZWFyUGF0dGVybkNhY2hlcygpe2dpPU9iamVjdC5jcmVhdGUobnVsbCl9KCk7IWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7b2E9T2JqZWN0LmNyZWF0ZShudWxsKTtjYT1PYmplY3QuY3JlYXRlKG51bGwpO2xhPU9iamVjdC5jcmVhdGUobnVsbCl9KCk7IWZ1bmN0aW9uIGNsZWFyVW5pY29kZUNhY2hlcygpe3lyLmNsZWFyKCl9KCk7SnB4SW1hZ2UuY2xlYW51cCgpfWZ1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0P2UuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGw6bnVsbH1jbGFzcyBGaWxlU3BlY3sjcGU9ITE7Y29uc3RydWN0b3IoZSx0LGE9ITEpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnhyZWY9dDt0aGlzLnJvb3Q9ZTtlLmhhcygiRlMiKSYmKHRoaXMuZnM9ZS5nZXQoIkZTIikpO2UuaGFzKCJSRiIpJiZ3YXJuKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTthfHwoZS5oYXMoIkVGIik/dGhpcy4jcGU9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCwhMCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI3BlKXJldHVybiBudWxsO3RoaXMuX2NvbnRlbnRSZWZ8fD1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdD8uZ2V0KCJFRiIpKTtsZXQgZT1udWxsO2lmKHRoaXMuX2NvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5fY29udGVudFJlZik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZT10LmdldEJ5dGVzKCk6d2FybigiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIHBvaW50cyB0byBub24tZXhpc3RpbmcvaW52YWxpZCBjb250ZW50Iil9ZWxzZSB3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbnkgY29udGVudCIpO3JldHVybiBlfWdldCBkZXNjcmlwdGlvbigpe2xldCBlPSIiO2NvbnN0IHQ9dGhpcy5yb290Py5nZXQoIkRlc2MiKTt0JiYic3RyaW5nIj09dHlwZW9mIHQmJihlPXN0cmluZ1RvUERGU3RyaW5nKHQpKTtyZXR1cm4gc2hhZG93KHRoaXMsImRlc2NyaXB0aW9uIixlKX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3Jhd0ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsZmlsZW5hbWU6KGU9dGhpcy5maWxlbmFtZSxlLnN1YnN0cmluZyhlLmxhc3RJbmRleE9mKCIvIikrMSkpLGNvbnRlbnQ6dGhpcy5jb250ZW50LGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb259O3ZhciBlfX1jb25zdCB2bj0wLEZuPS0yLEluPS0zLFRuPS00LE9uPS01LERuPS02LE1uPS05O2Z1bmN0aW9uIGlzV2hpdGVzcGFjZShlLHQpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iICI9PT1hfHwiXG4iPT09YXx8IlxyIj09PWF8fCJcdCI9PT1hfWNsYXNzIFhNTFBhcnNlckJhc2V7X3Jlc29sdmVFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8mKFteO10rKTsvZywoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KX1fcGFyc2VDb250ZW50KGUsdCl7Y29uc3QgYT1bXTtsZXQgcj10O2Z1bmN0aW9uIHNraXBXcygpe2Zvcig7cjxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUscik7KSsrcn1mb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj4iIT09ZVtyXSYmIi8iIT09ZVtyXTspKytyO2NvbnN0IGk9ZS5zdWJzdHJpbmcodCxyKTtza2lwV3MoKTtmb3IoO3I8ZS5sZW5ndGgmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl0mJiI/IiE9PWVbcl07KXtza2lwV3MoKTtsZXQgdD0iIixpPSIiO2Zvcig7cjxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLHIpJiYiPSIhPT1lW3JdOyl7dCs9ZVtyXTsrK3J9c2tpcFdzKCk7aWYoIj0iIT09ZVtyXSlyZXR1cm4gbnVsbDsrK3I7c2tpcFdzKCk7Y29uc3Qgbj1lW3JdO2lmKCciJyE9PW4mJiInIiE9PW4pcmV0dXJuIG51bGw7Y29uc3Qgcz1lLmluZGV4T2YobiwrK3IpO2lmKHM8MClyZXR1cm4gbnVsbDtpPWUuc3Vic3RyaW5nKHIscyk7YS5wdXNoKHtuYW1lOnQsdmFsdWU6dGhpcy5fcmVzb2x2ZUVudGl0aWVzKGkpfSk7cj1zKzE7c2tpcFdzKCl9cmV0dXJue25hbWU6aSxhdHRyaWJ1dGVzOmEscGFyc2VkOnItdH19X3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsdCl7bGV0IGE9dDtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj4iIT09ZVthXSYmIj8iIT09ZVthXSYmIi8iIT09ZVthXTspKythO2NvbnN0IHI9ZS5zdWJzdHJpbmcodCxhKTshZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDthPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxhKTspKythfSgpO2NvbnN0IGk9YTtmb3IoO2E8ZS5sZW5ndGgmJigiPyIhPT1lW2FdfHwiPiIhPT1lW2ErMV0pOykrK2E7cmV0dXJue25hbWU6cix2YWx1ZTplLnN1YnN0cmluZyhpLGEpLHBhcnNlZDphLXR9fXBhcnNlWG1sKGUpe2xldCB0PTA7Zm9yKDt0PGUubGVuZ3RoOyl7bGV0IGE9dDtpZigiPCI9PT1lW3RdKXsrK2E7bGV0IHQ7c3dpdGNoKGVbYV0pe2Nhc2UiLyI6KythO3Q9ZS5pbmRleE9mKCI+IixhKTtpZih0PDApe3RoaXMub25FcnJvcihNbik7cmV0dXJufXRoaXMub25FbmRFbGVtZW50KGUuc3Vic3RyaW5nKGEsdCkpO2E9dCsxO2JyZWFrO2Nhc2UiPyI6KythO2NvbnN0IHI9dGhpcy5fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSxhKTtpZigiPz4iIT09ZS5zdWJzdHJpbmcoYStyLnBhcnNlZCxhK3IucGFyc2VkKzIpKXt0aGlzLm9uRXJyb3IoSW4pO3JldHVybn10aGlzLm9uUGkoci5uYW1lLHIudmFsdWUpO2ErPXIucGFyc2VkKzI7YnJlYWs7Y2FzZSIhIjppZigiLS0iPT09ZS5zdWJzdHJpbmcoYSsxLGErMykpe3Q9ZS5pbmRleE9mKCItLVx4M2UiLGErMyk7aWYodDwwKXt0aGlzLm9uRXJyb3IoT24pO3JldHVybn10aGlzLm9uQ29tbWVudChlLnN1YnN0cmluZyhhKzMsdCkpO2E9dCszfWVsc2UgaWYoIltDREFUQVsiPT09ZS5zdWJzdHJpbmcoYSsxLGErOCkpe3Q9ZS5pbmRleE9mKCJdXT4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoRm4pO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3IoRG4pO3JldHVybn17Y29uc3Qgcj1lLmluZGV4T2YoIlsiLGErOCk7bGV0IGk9ITE7dD1lLmluZGV4T2YoIj4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoVG4pO3JldHVybn1pZihyPjAmJnQ+cil7dD1lLmluZGV4T2YoIl0+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFRuKTtyZXR1cm59aT0hMH1jb25zdCBuPWUuc3Vic3RyaW5nKGErOCx0KyhpPzE6MCkpO3RoaXMub25Eb2N0eXBlKG4pO2E9dCsoaT8yOjEpfX1icmVhaztkZWZhdWx0OmNvbnN0IGk9dGhpcy5fcGFyc2VDb250ZW50KGUsYSk7aWYobnVsbD09PWkpe3RoaXMub25FcnJvcihEbik7cmV0dXJufWxldCBuPSExO2lmKCIvPiI9PT1lLnN1YnN0cmluZyhhK2kucGFyc2VkLGEraS5wYXJzZWQrMikpbj0hMDtlbHNlIGlmKCI+IiE9PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsxKSl7dGhpcy5vbkVycm9yKE1uKTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLG4pO2ErPWkucGFyc2VkKyhuPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fWNsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/LlswXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoZT0+ZS50ZXh0Q29udGVudCkuam9pbigiIik6dGhpcy5ub2RlVmFsdWV8fCIifWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN8fFtdfWhhc0NoaWxkTm9kZXMoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5sZW5ndGg+MH1zZWFyY2hOb2RlKGUsdCl7aWYodD49ZS5sZW5ndGgpcmV0dXJuIHRoaXM7Y29uc3QgYT1lW3RdO2lmKGEubmFtZS5zdGFydHNXaXRoKCIjIikmJnQ8ZS5sZW5ndGgtMSlyZXR1cm4gdGhpcy5zZWFyY2hOb2RlKGUsdCsxKTtjb25zdCByPVtdO2xldCBpPXRoaXM7Zm9yKDs7KXtpZihhLm5hbWU9PT1pLm5vZGVOYW1lKXtpZigwIT09YS5wb3Mpe2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDt7Y29uc3Rbbl09ci5wb3AoKTtsZXQgcz0wO2Zvcihjb25zdCByIG9mIG4uY2hpbGROb2RlcylpZihhLm5hbWU9PT1yLm5vZGVOYW1lKXtpZihzPT09YS5wb3MpcmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSk7cysrfXJldHVybiBpLnNlYXJjaE5vZGUoZSx0KzEpfX17Y29uc3QgYT1pLnNlYXJjaE5vZGUoZSx0KzEpO2lmKG51bGwhPT1hKXJldHVybiBhfX1pZihpLmNoaWxkTm9kZXM/Lmxlbmd0aD4wKXtyLnB1c2goW2ksMF0pO2k9aS5jaGlsZE5vZGVzWzBdfWVsc2V7aWYoMD09PXIubGVuZ3RoKXJldHVybiBudWxsO2Zvcig7MCE9PXIubGVuZ3RoOyl7Y29uc3RbZSx0XT1yLnBvcCgpLGE9dCsxO2lmKGE8ZS5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtlLGFdKTtpPWUuY2hpbGROb2Rlc1thXTticmVha319aWYoMD09PXIubGVuZ3RoKXJldHVybiBudWxsfX19ZHVtcChlKXtpZigiI3RleHQiIT09dGhpcy5ub2RlTmFtZSl7ZS5wdXNoKGA8JHt0aGlzLm5vZGVOYW1lfWApO2lmKHRoaXMuYXR0cmlidXRlcylmb3IoY29uc3QgdCBvZiB0aGlzLmF0dHJpYnV0ZXMpZS5wdXNoKGAgJHt0Lm5hbWV9PSIke2VuY29kZVRvWG1sU3RyaW5nKHQudmFsdWUpfSJgKTtpZih0aGlzLmhhc0NoaWxkTm9kZXMoKSl7ZS5wdXNoKCI+Iik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jaGlsZE5vZGVzKXQuZHVtcChlKTtlLnB1c2goYDwvJHt0aGlzLm5vZGVOYW1lfT5gKX1lbHNlIHRoaXMubm9kZVZhbHVlP2UucHVzaChgPiR7ZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpfTwvJHt0aGlzLm5vZGVOYW1lfT5gKTplLnB1c2goIi8+Iil9ZWxzZSBlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpKX19Y2xhc3MgU2ltcGxlWE1MUGFyc2VyIGV4dGVuZHMgWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3Rvcih7aGFzQXR0cmlidXRlczplPSExLGxvd2VyQ2FzZU5hbWU6dD0hMX0pe3N1cGVyKCk7dGhpcy5fY3VycmVudEZyYWdtZW50PW51bGw7dGhpcy5fc3RhY2s9bnVsbDt0aGlzLl9lcnJvckNvZGU9dm47dGhpcy5faGFzQXR0cmlidXRlcz1lO3RoaXMuX2xvd2VyQ2FzZU5hbWU9dH1wYXJzZUZyb21TdHJpbmcoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PVtdO3RoaXMuX3N0YWNrPVtdO3RoaXMuX2Vycm9yQ29kZT12bjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PXZuKXJldHVybjtjb25zdFt0XT10aGlzLl9jdXJyZW50RnJhZ21lbnQ7cmV0dXJuIHQ/e2RvY3VtZW50RWxlbWVudDp0fTp2b2lkIDB9b25UZXh0KGUpe2lmKGZ1bmN0aW9uIGlzV2hpdGVzcGFjZVN0cmluZyhlKXtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspaWYoIWlzV2hpdGVzcGFjZShlLHQpKXJldHVybiExO3JldHVybiEwfShlKSlyZXR1cm47Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQ2RhdGEoZSl7Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQmVnaW5FbGVtZW50KGUsdCxhKXt0aGlzLl9sb3dlckNhc2VOYW1lJiYoZT1lLnRvTG93ZXJDYXNlKCkpO2NvbnN0IHI9bmV3IFNpbXBsZURPTU5vZGUoZSk7ci5jaGlsZE5vZGVzPVtdO3RoaXMuX2hhc0F0dHJpYnV0ZXMmJihyLmF0dHJpYnV0ZXM9dCk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2gocik7aWYoIWEpe3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudEZyYWdtZW50KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9ci5jaGlsZE5vZGVzfX1vbkVuZEVsZW1lbnQoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PXRoaXMuX3N0YWNrLnBvcCgpfHxbXTtjb25zdCB0PXRoaXMuX2N1cnJlbnRGcmFnbWVudC5hdCgtMSk7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWUucGFyZW50Tm9kZT10O3JldHVybiB0fW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIE1ldGFkYXRhUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IFNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2VBbGwoLz5cXDM3NlxcMzc3KFtePF0rKS9nLGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csZnVuY3Rpb24oZSx0LGEscil7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjQqdCs4KmErMSpyKX0pLnJlcGxhY2VBbGwoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkscj1bIj4iXTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXtjb25zdCB0PTI1NiphLmNoYXJDb2RlQXQoZSkrYS5jaGFyQ29kZUF0KGUrMSk7dD49MzImJnQ8MTI3JiY2MCE9PXQmJjYyIT09dCYmMzghPT10P3IucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTpyLnB1c2goIiYjeCIrKDY1NTM2K3QpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSkrIjsiKX1yZXR1cm4gci5qb2luKCIiKX0pfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKX1fcGFyc2VBcnJheShlKXtpZighZS5oYXNDaGlsZE5vZGVzKCkpcmV0dXJuO2NvbnN0W3RdPWUuY2hpbGROb2RlcyxhPXRoaXMuX2dldFNlcXVlbmNlKHQpfHxbXTt0aGlzLl9tZXRhZGF0YU1hcC5zZXQoZS5ub2RlTmFtZSxhLm1hcChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jb25zdCBSbj0xLEJuPTIsTm49MyxQbj00LEVuPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMueHJlZj1lO3RoaXMuZGljdD10O3RoaXMucmVmPWEgaW5zdGFuY2VvZiBSZWY/YTpudWxsO3RoaXMucm9sZU1hcD1uZXcgTWFwO3RoaXMuc3RydWN0UGFyZW50SWRzPW51bGw7dGhpcy5raWRSZWZUb1Bvc2l0aW9uPXZvaWQgMDt0aGlzLnBhcmVudFRyZWU9bnVsbH1nZXRLaWRQb3NpdGlvbihlKXtpZih2b2lkIDA9PT10aGlzLmtpZFJlZlRvUG9zaXRpb24pe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9dGhpcy5raWRSZWZUb1Bvc2l0aW9uPW5ldyBNYXA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWVbYV07ciYmdC5zZXQoci50b1N0cmluZygpLGEpfX1lbHNlIHRoaXMua2lkUmVmVG9Qb3NpdGlvbj1lIGluc3RhbmNlb2YgRGljdD9uZXcgTWFwKFtbZS5vYmpJZCwwXV0pOmU/bnVsbDpuZXcgTWFwfXJldHVybiB0aGlzLmtpZFJlZlRvUG9zaXRpb24/dGhpcy5raWRSZWZUb1Bvc2l0aW9uLmdldChlKT8/TmFOOi0xfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCk7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7ZSYmKHRoaXMucGFyZW50VHJlZT1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikpfSNtZShlLHQsYSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKXx8dDwwKXJldHVybjt0aGlzLnN0cnVjdFBhcmVudElkc3x8PW5ldyBSZWZTZXRDYWNoZTtsZXQgcj10aGlzLnN0cnVjdFBhcmVudElkcy5nZXQoZSk7aWYoIXIpe3I9W107dGhpcy5zdHJ1Y3RQYXJlbnRJZHMucHV0KGUscil9ci5wdXNoKFt0LGFdKX1hZGRBbm5vdGF0aW9uSWRUb1BhZ2UoZSx0KXt0aGlzLiNtZShlLHQsUG4pfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsYV1vZiBlKWEgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KHQsYS5uYW1lKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTphfSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgcj0wLGk9ITA7Zm9yKGNvbnN0W2Usbl1vZiBhKXtjb25zdHtyZWY6YX09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEoYSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7aT0hMDticmVha31mb3IoY29uc3QgZSBvZiBuKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPXIrKztpPSExfX1pZihpKXtmb3IoY29uc3QgZSBvZiBhLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOmEscGRmTWFuYWdlcjpyLGNoYW5nZXM6aX0pe2NvbnN0IG49YXdhaXQgci5lbnN1cmVDYXRhbG9nKCJjbG9uZURpY3QiKSxzPW5ldyBSZWZTZXRDYWNoZTtzLnB1dChhLG4pO2NvbnN0IG89dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtuLnNldCgiU3RydWN0VHJlZVJvb3QiLG8pO2NvbnN0IGM9bmV3IERpY3QodCk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpKTtjb25zdCBsPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Yy5zZXQoIlBhcmVudFRyZWUiLGwpO2NvbnN0IGg9W107Yy5zZXQoIksiLGgpO3MucHV0KG8sYyk7Y29uc3QgdT1uZXcgRGljdCh0KSxkPVtdO3Uuc2V0KCJOdW1zIixkKTtjb25zdCBmPWF3YWl0IHRoaXMuI2JlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm8sc3RydWN0VHJlZVJvb3Q6bnVsbCxraWRzOmgsbnVtczpkLHhyZWY6dCxwZGZNYW5hZ2VyOnIsY2hhbmdlczppLGNhY2hlOnN9KTtjLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLGYpO3MucHV0KGwsdSk7Zm9yKGNvbnN0W2UsdF1vZiBzLml0ZW1zKCkpaS5wdXQoZSx7ZGF0YTp0fSl9YXN5bmMgY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjplLG5ld0Fubm90YXRpb25zQnlQYWdlOnR9KXtpZighdGhpcy5yZWYpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBubyByb290IHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlTmV4dEtleSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBpbnZhbGlkIG5leHQga2V5LiIpO3JldHVybiExfWNvbnN0IHI9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogUGFyZW50VHJlZSBpc24ndCBhIGRpY3QuIik7cmV0dXJuITF9Y29uc3QgaT1yLmdldCgiTnVtcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbnVtcyBpc24ndCBhbiBhcnJheS4iKTtyZXR1cm4hMX1jb25zdCBuPW5ldyBOdW1iZXJUcmVlKHIsdGhpcy54cmVmKTtmb3IoY29uc3QgYSBvZiB0LmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6dH09YXdhaXQgZS5nZXRQYWdlKGEpO2lmKCF0LmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IHI9dC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKXx8IUFycmF5LmlzQXJyYXkobi5nZXQocikpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHthfSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IHM9ITA7Zm9yKGNvbnN0W3IsaV1vZiB0KXtjb25zdHtwYWdlRGljdDp0fT1hd2FpdCBlLmdldFBhZ2Uocik7U3RydWN0VHJlZVJvb3QuI3llKHtlbGVtZW50czppLHhyZWY6dGhpcy54cmVmLHBhZ2VEaWN0OnQsbnVtYmVyVHJlZTpufSk7Zm9yKGNvbnN0IGUgb2YgaSlpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLmFjY2Vzc2liaWxpdHlEYXRhLnN0cnVjdFBhcmVudD49MHx8KGUucGFyZW50VHJlZUlkPWErKyk7cz0hMX19aWYocyl7Zm9yKGNvbnN0IGUgb2YgdC52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKXtkZWxldGUgdC5wYXJlbnRUcmVlSWQ7ZGVsZXRlIHQuc3RydWN0VHJlZVBhcmVudH1yZXR1cm4hMX1yZXR1cm4hMH1hc3luYyB1cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmF9KXtjb25zdHtyZWY6cix4cmVmOml9PXRoaXMsbj10aGlzLmRpY3QuY2xvbmUoKSxzPW5ldyBSZWZTZXRDYWNoZTtzLnB1dChyLG4pO2xldCBvLGM9bi5nZXRSYXcoIlBhcmVudFRyZWUiKTtpZihjIGluc3RhbmNlb2YgUmVmKW89aS5mZXRjaChjKTtlbHNle289YztjPWkuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7bi5zZXQoIlBhcmVudFRyZWUiLGMpfW89by5jbG9uZSgpO3MucHV0KGMsbyk7bGV0IGw9by5nZXRSYXcoIk51bXMiKSxoPW51bGw7aWYobCBpbnN0YW5jZW9mIFJlZil7aD1sO2w9aS5mZXRjaChoKX1sPWwuc2xpY2UoKTtofHxvLnNldCgiTnVtcyIsbCk7Y29uc3QgdT1hd2FpdCBTdHJ1Y3RUcmVlUm9vdC4jYmUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cixzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmwseHJlZjppLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmEsY2FjaGU6c30pO2lmKC0xIT09dSl7bi5zZXQoIlBhcmVudFRyZWVOZXh0S2V5Iix1KTtoJiZzLnB1dChoLGwpO2Zvcihjb25zdFtlLHRdb2Ygcy5pdGVtcygpKWEucHV0KGUse2RhdGE6dH0pfX1zdGF0aWMgYXN5bmMjYmUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6dCxzdHJ1Y3RUcmVlUm9vdDphLGtpZHM6cixudW1zOmkseHJlZjpuLHBkZk1hbmFnZXI6cyxjaGFuZ2VzOm8sY2FjaGU6Y30pe2NvbnN0IGw9TmFtZS5nZXQoIk9CSlIiKTtsZXQgaCx1PS0xO2Zvcihjb25zdFtkLGZdb2YgZSl7Y29uc3QgZT1hd2FpdCBzLmdldFBhZ2UoZCkse3JlZjpnfT1lLHA9ZyBpbnN0YW5jZW9mIFJlZjtmb3IoY29uc3R7YWNjZXNzaWJpbGl0eURhdGE6cyxyZWY6bSxwYXJlbnRUcmVlSWQ6YixzdHJ1Y3RUcmVlUGFyZW50Onl9b2YgZil7aWYoIXM/LnR5cGUpY29udGludWU7Y29uc3R7c3RydWN0UGFyZW50OmZ9PXM7aWYoYSYmTnVtYmVyLmlzSW50ZWdlcihmKSYmZj49MCl7bGV0IHQ9KGh8fD1uZXcgTWFwKS5nZXQoZCk7aWYodm9pZCAwPT09dCl7dD1uZXcgU3RydWN0VHJlZVBhZ2UoYSxlLnBhZ2VEaWN0KS5jb2xsZWN0T2JqZWN0cyhnKTtoLnNldChkLHQpfWNvbnN0IHI9dD8uZ2V0KGYpO2lmKHIpe2NvbnN0IGU9bi5mZXRjaChyKS5jbG9uZSgpO1N0cnVjdFRyZWVSb290LiN3ZShlLHMpO28ucHV0KHIse2RhdGE6ZX0pO2NvbnRpbnVlfX11PU1hdGgubWF4KHUsYik7Y29uc3Qgdz1uLmdldE5ld1RlbXBvcmFyeVJlZigpLHg9bmV3IERpY3Qobik7U3RydWN0VHJlZVJvb3QuI3dlKHgscyk7YXdhaXQgdGhpcy4jeGUoe3N0cnVjdFRyZWVQYXJlbnQ6eSx0YWdEaWN0OngsbmV3VGFnUmVmOncsc3RydWN0VHJlZVJvb3RSZWY6dCxmYWxsYmFja0tpZHM6cix4cmVmOm4sY2FjaGU6Y30pO2NvbnN0IFM9bmV3IERpY3Qobik7eC5zZXQoIksiLFMpO1Muc2V0KCJUeXBlIixsKTtwJiZTLnNldCgiUGciLGcpO1Muc2V0KCJPYmoiLG0pO2MucHV0KHcseCk7aS5wdXNoKGIsdyl9fXJldHVybiB1KzF9c3RhdGljI3dlKGUse3R5cGU6dCx0aXRsZTphLGxhbmc6cixhbHQ6aSxleHBhbmRlZDpuLGFjdHVhbFRleHQ6c30pe2Uuc2V0KCJTIixOYW1lLmdldCh0KSk7YSYmZS5zZXQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYSkpO3ImJmUuc2V0KCJMYW5nIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHIpKTtpJiZlLnNldCgiQWx0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKTtuJiZlLnNldCgiRSIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShuKSk7cyYmZS5zZXQoIkFjdHVhbFRleHQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocykpfXN0YXRpYyN5ZSh7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6YSxudW1iZXJUcmVlOnJ9KXtjb25zdCBpPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO2xldCBhPWkuZ2V0KGUpO2lmKCFhKXthPVtdO2kuc2V0KGUsYSl9YS5wdXNoKHQpfWNvbnN0IG49YS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihuKSlyZXR1cm47Y29uc3Qgcz1yLmdldChuKSx1cGRhdGVFbGVtZW50PShlLGEscik9Pntjb25zdCBuPWkuZ2V0KGUpO2lmKG4pe2NvbnN0IGU9YS5nZXRSYXcoIlAiKSxpPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOnIsZGljdDphfTtmb3IoY29uc3QgdCBvZiBuKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBzKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGE9dC5mZXRjaChlKSxyPWEuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihyKSl1cGRhdGVFbGVtZW50KHIsYSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBpIG9mIHIpe2k9dC5mZXRjaElmUmVmKGkpO2lmKE51bWJlci5pc0ludGVnZXIoaSkmJnVwZGF0ZUVsZW1lbnQoaSxhLGUpKWJyZWFrO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUoaS5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3Qgcj1pLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJnVwZGF0ZUVsZW1lbnQocixhLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI3hlKHtzdHJ1Y3RUcmVlUGFyZW50OmUsdGFnRGljdDp0LG5ld1RhZ1JlZjphLHN0cnVjdFRyZWVSb290UmVmOnIsZmFsbGJhY2tLaWRzOmkseHJlZjpuLGNhY2hlOnN9KXtsZXQgbyxjPW51bGw7aWYoZSl7KHtyZWY6Y309ZSk7bz1lLmRpY3QuZ2V0UmF3KCJQIil8fHJ9ZWxzZSBvPXI7dC5zZXQoIlAiLG8pO2NvbnN0IGw9bi5mZXRjaElmUmVmKG8pO2lmKCFsKXtpLnB1c2goYSk7cmV0dXJufWxldCBoPXMuZ2V0KG8pO2lmKCFoKXtoPWwuY2xvbmUoKTtzLnB1dChvLGgpfWNvbnN0IHU9aC5nZXRSYXcoIksiKTtsZXQgZD11IGluc3RhbmNlb2YgUmVmP3MuZ2V0KHUpOm51bGw7aWYoIWQpe2Q9bi5mZXRjaElmUmVmKHUpO2Q9QXJyYXkuaXNBcnJheShkKT9kLnNsaWNlKCk6W3VdO2NvbnN0IGU9bi5nZXROZXdUZW1wb3JhcnlSZWYoKTtoLnNldCgiSyIsZSk7cy5wdXQoZSxkKX1jb25zdCBmPWQuaW5kZXhPZihjKTtkLnNwbGljZShmPj0wP2YrMTpkLmxlbmd0aCwwLGEpfX1jbGFzcyBTdHJ1Y3RFbGVtZW50Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudHJlZT1lO3RoaXMueHJlZj1lLnhyZWY7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDphfT10aGlzLnRyZWU7cmV0dXJuIGEucm9sZU1hcC5nZXQodCk/P3R9Z2V0IG1hdGhNTCgpe2xldCBlPXRoaXMuZGljdC5nZXQoIkFGIil8fFtdO0FycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7Zm9yKGxldCB0IG9mIGUpe3Q9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoIWlzTmFtZSh0LmdldCgiVHlwZSIpLCJGaWxlc3BlYyIpKWNvbnRpbnVlO2lmKCFpc05hbWUodC5nZXQoIkFGUmVsYXRpb25zaGlwIiksIlN1cHBsZW1lbnQiKSljb250aW51ZTtjb25zdCBlPXQuZ2V0KCJFRiIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9ZS5nZXQoIlVGIil8fGUuZ2V0KCJGIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihpc05hbWUoYS5kaWN0LmdldCgiVHlwZSIpLCJFbWJlZGRlZEZpbGUiKSYmaXNOYW1lKGEuZGljdC5nZXQoIlN1YnR5cGUiKSwiYXBwbGljYXRpb24vbWF0aG1sK3htbCIpKSlyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGEuZ2V0U3RyaW5nKCkpfWNvbnN0IHQ9dGhpcy5kaWN0LmdldCgiQSIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUodC5nZXQoIk8iKSwiTVNGVF9PZmZpY2UiKSl7Y29uc3QgZT10LmdldCgiTVNGVF9NYXRoTUwiKTtyZXR1cm4gZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfX1yZXR1cm4gbnVsbH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2YgUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdGhpcy54cmVmLmZldGNoSWZSZWYodCkpO2EmJnRoaXMua2lkcy5wdXNoKGEpfWVsc2V7Y29uc3QgdD10aGlzLnBhcnNlS2lkKGUsYSk7dCYmdGhpcy5raWRzLnB1c2godCl9fXBhcnNlS2lkKGUsdCl7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm4gdGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZT9udWxsOm5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlJuLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXRSYXcoIlBnIik7YSBpbnN0YW5jZW9mIFJlZiYmKGU9YS50b1N0cmluZygpKTtjb25zdCByPXQuZ2V0KCJUeXBlIilpbnN0YW5jZW9mIE5hbWU/dC5nZXQoIlR5cGUiKS5uYW1lOm51bGw7aWYoIk1DUiI9PT1yKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXRSYXcoIlN0bSIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpCbixyZWZPYmpJZDphIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplLG1jaWQ6dC5nZXQoIk1DSUQiKX0pfWlmKCJPQkpSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT10LmdldFJhdygiT2JqIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOk5uLHJlZk9iaklkOmEgaW5zdGFuY2VvZiBSZWY/YS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KX1yZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6RW4sZGljdDp0fSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOmE9bnVsbCxwYWdlT2JqSWQ6cj1udWxsLHJlZk9iaklkOmk9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1hO3RoaXMucGFnZU9iaklkPXI7dGhpcy5yZWZPYmpJZD1pO3RoaXMucGFyZW50Tm9kZT1udWxsfX1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMueHJlZj1lPy54cmVmPz9udWxsO3RoaXMucm9vdERpY3Q9ZT8uZGljdD8/bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1jb2xsZWN0T2JqZWN0cyhlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IHI9bmV3IE1hcCxpPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy54cmVmKTtmb3IoY29uc3RbZV1vZiBhKXtjb25zdCB0PWkuZ2V0UmF3KGUpO3QgaW5zdGFuY2VvZiBSZWYmJnIuc2V0KGUsdCl9cmV0dXJuIHJ9cGFyc2UoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybjtjb25zdHtwYXJlbnRUcmVlOnR9PXRoaXMucm9vdDtpZighdClyZXR1cm47Y29uc3QgYT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLHI9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpJiYhcilyZXR1cm47Y29uc3QgaT1uZXcgTWFwO2lmKE51bWJlci5pc0ludGVnZXIoYSkpe2NvbnN0IGU9dC5nZXQoYSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnhyZWYuZmV0Y2godCksaSl9aWYocilmb3IoY29uc3RbZSxhXW9mIHIpe2NvbnN0IHI9dC5nZXQoZSk7aWYocil7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy54cmVmLmZldGNoSWZSZWYociksaSk7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT1ObiYmKGUua2lkc1swXS50eXBlPWEpfX19YWRkTm9kZShlLHQsYT0wKXtpZihhPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCByPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUscik7c3dpdGNoKHIucm9sZSl7Y2FzZSJMIjpjYXNlIkxCb2R5IjpjYXNlIkxJIjpjYXNlIlRhYmxlIjpjYXNlIlRIZWFkIjpjYXNlIlRCb2R5IjpjYXNlIlRGb290IjpjYXNlIlRSIjpmb3IoY29uc3QgZSBvZiByLmtpZHMpZS50eXBlPT09RW4mJnRoaXMuYWRkTm9kZShlLmRpY3QsdCxhLTEpfWNvbnN0IGk9ZS5nZXQoIlAiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KXx8aXNOYW1lKGkuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290Iikpe3RoaXMuYWRkVG9wTGV2ZWxOb2RlKGUscil8fHQuZGVsZXRlKGUpO3JldHVybiByfWNvbnN0IG49dGhpcy5hZGROb2RlKGksdCxhKzEpO2lmKCFuKXJldHVybiByO2xldCBzPSExO2Zvcihjb25zdCB0IG9mIG4ua2lkcylpZih0LnR5cGU9PT1FbiYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPXI7cz0hMH1zfHx0LmRlbGV0ZShlKTtyZXR1cm4gcn1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdC5nZXRLaWRQb3NpdGlvbihlLm9iaklkKTtpZihpc05hTihhKSlyZXR1cm4hMTstMSE9PWEmJih0aGlzLm5vZGVzW2FdPXQpO3JldHVybiEwfWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7d2FybigiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtsZXQgaT1lLmRpY3QuZ2V0KCJBbHQiKTsic3RyaW5nIiE9dHlwZW9mIGkmJihpPWUuZGljdC5nZXQoIkFjdHVhbFRleHQiKSk7InN0cmluZyI9PXR5cGVvZiBpJiYoci5hbHQ9c3RyaW5nVG9QREZTdHJpbmcoaSkpO2lmKCJGb3JtdWxhIj09PXIucm9sZSl7Y29uc3R7bWF0aE1MOnR9PWU7dCYmKHIubWF0aE1MPXQpfWNvbnN0IG49ZS5kaWN0LmdldCgiQSIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWxvb2t1cE5vcm1hbFJlY3Qobi5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKGUpci5iYm94PWU7ZWxzZXtjb25zdCBlPW4uZ2V0KCJXaWR0aCIpLHQ9bi5nZXQoIkhlaWdodCIpOyJudW1iZXIiPT10eXBlb2YgZSYmZT4wJiYibnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmKHIuYmJveD1bMCwwLGUsdF0pfX1jb25zdCBzPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIHMmJihyLmxhbmc9c3RyaW5nVG9QREZTdHJpbmcocykpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1Fbj90LnBhcmVudE5vZGU6bnVsbDtlP25vZGVUb1NlcmlhbGl6YWJsZShlLHIsYSsxKTp0LnR5cGU9PT1Sbnx8dC50eXBlPT09Qm4/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcCR7dC5wYWdlT2JqSWR9X21jJHt0Lm1jaWR9YH0pOnQudHlwZT09PU5uP3IuY2hpbGRyZW4ucHVzaCh7dHlwZToib2JqZWN0IixpZDp0LnJlZk9iaklkfSk6dC50eXBlPT09UG4mJnIuY2hpbGRyZW4ucHVzaCh7dHlwZToiYW5ub3RhdGlvbiIsaWQ6YHBkZmpzX2ludGVybmFsX2lkXyR7dC5yZWZPYmpJZH1gfSl9fWNvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmNoaWxkcmVuPVtdO2Uucm9sZT0iUm9vdCI7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ub2Rlcyl0JiZub2RlVG9TZXJpYWxpemFibGUodCxlKTtyZXR1cm4gZX19Y29uc3QgTG49ZnVuY3Rpb24gX2lzVmFsaWRFeHBsaWNpdERlc3QoZSx0LGEpe2lmKCFBcnJheS5pc0FycmF5KGEpfHxhLmxlbmd0aDwyKXJldHVybiExO2NvbnN0W3IsaSwuLi5uXT1hO2lmKCFlKHIpJiYhTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm4hMTtpZighdChpKSlyZXR1cm4hMTtjb25zdCBzPW4ubGVuZ3RoO2xldCBvPSEwO3N3aXRjaChpLm5hbWUpe2Nhc2UiWFlaIjppZihzPDJ8fHM+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PXM7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKHM+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1zKXJldHVybiExO289ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBuKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxvJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9LmJpbmQobnVsbCxlPT5lIGluc3RhbmNlb2YgUmVmLGlzTmFtZSk7ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gTG4oZSk/ZTpudWxsfWZ1bmN0aW9uIGZldGNoUmVtb3RlRGVzdChlKXtsZXQgdD1lLmdldCgiRCIpO2lmKHQpe3QgaW5zdGFuY2VvZiBOYW1lJiYodD10Lm5hbWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcodCwhMCk7aWYoTG4odCkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfXJldHVybiBudWxsfWNsYXNzIENhdGFsb2d7I1NlPW51bGw7I0FlPW51bGw7YnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwO2ZvbnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7Z2xvYmFsQ29sb3JTcGFjZUNhY2hlPW5ldyBHbG9iYWxDb2xvclNwYWNlQ2FjaGU7Z2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTtub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7cGFnZURpY3RDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7cGFnZUluZGV4Q2FjaGU9bmV3IFJlZlNldENhY2hlO3BhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7c3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7c3lzdGVtRm9udENhY2hlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLiNBZT10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuI0FlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3R9Y2xvbmVEaWN0KCl7cmV0dXJuIHRoaXMuI0FlLmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZih1YS50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJMYW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJsYW5nIixlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI0FlLmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jQWUuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuI0FlLmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLiNBZS5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5kaWN0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1hLmRpY3QuZ2V0KCJUeXBlIikscj1hLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoaXNOYW1lKGUsIk1ldGFkYXRhIikmJmlzTmFtZShyLCJYTUwiKSl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IE1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGBTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNrZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX0ja2UoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBhIGluIHQpe2NvbnN0IHI9ZS5nZXQoYSk7ImJvb2xlYW4iPT10eXBlb2YgciYmKHRbYV09cil9cmV0dXJuIHR9Z2V0IGhhc1N0cnVjdFRyZWUoKXtyZXR1cm4gdGhpcy4jQWUuaGFzKCJTdHJ1Y3RUcmVlUm9vdCIpfWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jQ2UoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfSNDZSgpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgU3RydWN0VHJlZVJvb3QodGhpcy54cmVmLHQsZSk7YS5pbml0KCk7cmV0dXJuIGF9Z2V0IHRvcGxldmVsUGFnZXNEaWN0KCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5LiIpO3JldHVybiBzaGFkb3codGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI3ZlKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9I3ZlKCl7bGV0IGU9dGhpcy4jQWUuZ2V0KCJPdXRsaW5lcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXtpdGVtczpbXX0sYT1be29iajplLHBhcmVudDp0fV0scj1uZXcgUmVmU2V0O3IucHV0KGUpO2NvbnN0IGk9dGhpcy54cmVmLG49bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO2Zvcig7YS5sZW5ndGg+MDspe2NvbnN0IHQ9YS5zaGlmdCgpLHM9aS5mZXRjaElmUmVmKHQub2JqKTtpZihudWxsPT09cyljb250aW51ZTtzLmhhcygiVGl0bGUiKXx8d2FybigiSW52YWxpZCBvdXRsaW5lIGl0ZW0gZW5jb3VudGVyZWQuIik7Y29uc3Qgbz17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnMscmVzdWx0T2JqOm8sZG9jQmFzZVVybDp0aGlzLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6dGhpcy5hdHRhY2htZW50c30pO2NvbnN0IGM9cy5nZXQoIlRpdGxlIiksbD1zLmdldCgiRiIpfHwwLGg9cy5nZXRBcnJheSgiQyIpLHU9cy5nZXQoIkNvdW50Iik7bGV0IGQ9bjshaXNOdW1iZXJBcnJheShoLDMpfHwwPT09aFswXSYmMD09PWhbMV0mJjA9PT1oWzJdfHwoZD1Db2xvclNwYWNlVXRpbHMucmdiLmdldFJnYihoLDApKTtjb25zdCBmPXthY3Rpb246by5hY3Rpb24sYXR0YWNobWVudDpvLmF0dGFjaG1lbnQsZGVzdDpvLmRlc3QsdXJsOm8udXJsLHVuc2FmZVVybDpvLnVuc2FmZVVybCxuZXdXaW5kb3c6by5uZXdXaW5kb3csc2V0T0NHU3RhdGU6by5zZXRPQ0dTdGF0ZSx0aXRsZToic3RyaW5nIj09dHlwZW9mIGM/c3RyaW5nVG9QREZTdHJpbmcoYyk6IiIsY29sb3I6ZCxjb3VudDpOdW1iZXIuaXNJbnRlZ2VyKHUpP3U6dm9pZCAwLGJvbGQ6ISEoMiZsKSxpdGFsaWM6ISEoMSZsKSxpdGVtczpbXX07dC5wYXJlbnQuaXRlbXMucHVzaChmKTtlPXMuZ2V0UmF3KCJGaXJzdCIpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhlKSl7YS5wdXNoKHtvYmo6ZSxwYXJlbnQ6Zn0pO3IucHV0KGUpfWU9cy5nZXRSYXcoIk5leHQiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI0ZlKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9I0ZlKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBhPVtdO2Zvcihjb25zdCBlIGluIHcpe2NvbnN0IHI9d1tlXTt0JnImJmEucHVzaChyKX1yZXR1cm4gYX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLiNBZS5nZXQoIk9DUHJvcGVydGllcyIpO2lmKCF0KXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHI9dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgaT1uZXcgUmVmU2V0Q2FjaGU7Zm9yKGNvbnN0IGUgb2YgcillIGluc3RhbmNlb2YgUmVmJiYhaS5oYXMoZSkmJmkucHV0KGUsdGhpcy4jSWUoZSkpO2U9dGhpcy4jVGUoYSxpKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jSWUoZSl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2goZSksYT17aWQ6ZS50b1N0cmluZygpLG5hbWU6bnVsbCxpbnRlbnQ6bnVsbCx1c2FnZTp7cHJpbnQ6bnVsbCx2aWV3Om51bGx9LHJiR3JvdXBzOltdfSxyPXQuZ2V0KCJOYW1lIik7InN0cmluZyI9PXR5cGVvZiByJiYoYS5uYW1lPXN0cmluZ1RvUERGU3RyaW5nKHIpKTtsZXQgaT10LmdldEFycmF5KCJJbnRlbnQiKTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2kuZXZlcnkoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpJiYoYS5pbnRlbnQ9aS5tYXAoZT0+ZS5uYW1lKSk7Y29uc3Qgbj10LmdldCgiVXNhZ2UiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gYTtjb25zdCBzPWEudXNhZ2Usbz1uLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpzLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGM9bi5nZXQoIlZpZXciKTtpZihjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOnMudmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBhfSNUZShlLHQpe2Z1bmN0aW9uIHBhcnNlT25PZmYoZSl7Y29uc3QgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCByIG9mIGUpciBpbnN0YW5jZW9mIFJlZiYmdC5oYXMocikmJmEucHVzaChyLnRvU3RyaW5nKCkpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlT3JkZXIoZSxhPTApe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBudWxsO2NvbnN0IGk9W107Zm9yKGNvbnN0IG4gb2YgZSl7aWYobiBpbnN0YW5jZW9mIFJlZiYmdC5oYXMobikpe3IucHV0KG4pO2kucHVzaChuLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihuLGEpO2UmJmkucHVzaChlKX1pZihhPjApcmV0dXJuIGk7Y29uc3Qgbj1bXTtmb3IoY29uc3RbZV1vZiB0Lml0ZW1zKCkpci5oYXMoZSl8fG4ucHVzaChlLnRvU3RyaW5nKCkpO24ubGVuZ3RoJiZpLnB1c2goe25hbWU6bnVsbCxvcmRlcjpufSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VOZXN0ZWRPcmRlcihlLHQpe2lmKCsrdD5pKXt3YXJuKCJwYXJzZU5lc3RlZE9yZGVyIC0gcmVhY2hlZCBNQVhfTkVTVEVEX0xFVkVMUy4iKTtyZXR1cm4gbnVsbH1jb25zdCByPWEuZmV0Y2hJZlJlZihlKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZmV0Y2hJZlJlZihyWzBdKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuIG51bGw7Y29uc3Qgcz1wYXJzZU9yZGVyKHIuc2xpY2UoMSksdCk7cmV0dXJuIHM/Lmxlbmd0aD97bmFtZTpzdHJpbmdUb1BERlN0cmluZyhuKSxvcmRlcjpzfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IFJlZlNldCxpPTEwOyFmdW5jdGlvbiBwYXJzZVJCR3JvdXBzKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1hLmZldGNoSWZSZWYocik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFlLmxlbmd0aCljb250aW51ZTtjb25zdCBpPW5ldyBTZXQ7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmIWkuaGFzKGEudG9TdHJpbmcoKSkpe2kuYWRkKGEudG9TdHJpbmcoKSk7dC5nZXQoYSkucmJHcm91cHMucHVzaChpKX19fShlLmdldCgiUkJHcm91cHMiKSk7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBOYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cGFyc2VPbk9mZihlLmdldCgiT04iKSksb2ZmOnBhcnNlT25PZmYoZS5nZXQoIk9GRiIpKSxvcmRlcjpwYXJzZU9yZGVyKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6Wy4uLnRdfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuI1NlPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLiNTZX1nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYWdlc0NvdW50IixlKX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy4jU2U/P3RoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy4jT2UoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgTmFtZVRyZWUpZm9yKGNvbnN0W2Uscl1vZiBhLmdldEFsbCgpKXtjb25zdCBhPWZldGNoRGVzdChyKTthJiYodFtzdHJpbmdUb1BERlN0cmluZyhlLCEwKV09YSl9ZWxzZSBpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbZSxyXW9mIGEpe2NvbnN0IGE9ZmV0Y2hEZXN0KHIpO2EmJih0W3N0cmluZ1RvUERGU3RyaW5nKGUsITApXXx8PWEpfXJldHVybiBzaGFkb3codGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtpZih0aGlzLmhhc093blByb3BlcnR5KCJkZXN0aW5hdGlvbnMiKSlyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbnNbZV0/P251bGw7Y29uc3QgdD10aGlzLiNPZSgpO2Zvcihjb25zdCBhIG9mIHQpaWYoYSBpbnN0YW5jZW9mIE5hbWVUcmVlfHxhIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1mZXRjaERlc3QoYS5nZXQoZSkpO2lmKHQpcmV0dXJuIHR9aWYodC5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5kZXN0aW5hdGlvbnNbZV07aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH0jT2UoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiTmFtZXMiKSx0PVtdO2U/LmhhcygiRGVzdHMiKSYmdC5wdXNoKG5ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpKTt0aGlzLiNBZS5oYXMoIkRlc3RzIikmJnQucHVzaCh0aGlzLiNBZS5nZXQoIkRlc3RzIikpO3JldHVybiB0fWdldCByYXdQYWdlTGFiZWxzKCl7Y29uc3QgZT10aGlzLiNBZS5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IE51bWJlclRyZWUoZSx0aGlzLnhyZWYpLmdldEFsbCgpfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNEZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybiBzaGFkb3codGhpcywicGFnZUxhYmVscyIsZSl9I0RlKCl7Y29uc3QgZT10aGlzLnJhd1BhZ2VMYWJlbHM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IGE9bnVsbCxyPSIiLGk9IiIsbj0xO2ZvcihsZXQgcz0wLG89dGhpcy5udW1QYWdlcztzPG87cysrKXtjb25zdCBvPWUuZ2V0KHMpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtyPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2Ugcj0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWV9ZWxzZSBuPTF9c3dpdGNoKGEpe2Nhc2UiRCI6aT1uO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjppPXRvUm9tYW5OdW1lcmFscyhuLCJyIj09PWEpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09YT85Nzo2NSxyPW4tMTtpPVN0cmluZy5mcm9tQ2hhckNvZGUodCtyJWUpLnJlcGVhdChNYXRoLmZsb29yKHIvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHthfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7aT0iIn10W3NdPXIraTtuKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZUxheW91dCIsdCl9Z2V0IHBhZ2VNb2RlKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTW9kZSIsdCl9Z2V0IHZpZXdlclByZWZlcmVuY2VzKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3RbYSxyXW9mIGUpe2xldCBlO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKGU9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiVXNlT0MiOmU9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iVXNlTm9uZSJ9YnJlYWs7Y2FzZSJEaXJlY3Rpb24iOmlmKHIgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6ZT1yLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYociBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjplPXIubmFtZTticmVhaztkZWZhdWx0OmU9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIk5vbmUiOmNhc2UiQXBwRGVmYXVsdCI6ZT1yLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJBcHBEZWZhdWx0In1icmVhaztjYXNlIkR1cGxleCI6aWYociBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjplPXIubmFtZTticmVhaztkZWZhdWx0OmU9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOmlmKEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoJTI9PTApe3IuZXZlcnkoKGUsdCxhKT0+TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wJiYoMD09PXR8fGU+PWFbdC0xXSkmJmU8PXRoaXMubnVtUGFnZXMpJiYoZT1yKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wJiYoZT1yKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09ZSl7dD8/PU9iamVjdC5jcmVhdGUobnVsbCk7dFthXT1lfWVsc2Ugd2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2F9IiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7cn0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgYT1uZXcgRGljdCh0aGlzLnhyZWYpO2Euc2V0KCJBIixlKTtjb25zdCByPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YSxyZXN1bHRPYmo6cn0pO0FycmF5LmlzQXJyYXkoci5kZXN0KT90LmRlc3Q9ci5kZXN0OnIuYWN0aW9uJiYodC5hY3Rpb249ci5hY3Rpb24pfWVsc2UgTG4oZSkmJih0LmRlc3Q9ZSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcGVuQWN0aW9uIixvYmplY3RTaXplKHQpPjA/dDpudWxsKX1nZXQgYXR0YWNobWVudHMoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Uscl1vZiBhLmdldEFsbCgpKXtjb25zdCBhPW5ldyBGaWxlU3BlYyhyLHRoaXMueHJlZik7dD8/PU9iamVjdC5jcmVhdGUobnVsbCk7dFtzdHJpbmdUb1BERlN0cmluZyhlLCEwKV09YS5zZXJpYWxpemFibGV9fXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IGE9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSlpZihyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dD8/PW5ldyBNYXA7dC5zZXQoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksci5nZXRCeXRlcygpKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfSNNZSgpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLGEpe2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZighaXNOYW1lKGEuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IHI9YS5nZXQoIkpTIik7aWYociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pcj1yLmdldFN0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiByKXJldHVybjtyPXN0cmluZ1RvUERGU3RyaW5nKHIsITApLnJlcGxhY2VBbGwoIlwwIiwiIik7ciYmKHR8fD1uZXcgTWFwKS5zZXQoZSxyKX1pZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KHN0cmluZ1RvUERGU3RyaW5nKGUsITApLGEpfWNvbnN0IGE9dGhpcy4jQWUuZ2V0KCJPcGVuQWN0aW9uIik7YSYmYXBwZW5kSWZKYXZhU2NyaXB0RGljdCgiT3BlbkFjdGlvbiIsYSk7cmV0dXJuIHR9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy4jTWUoKTtsZXQgdD1jb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy4jQWUsbmUpO2lmKGUpe3R8fD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSlhIGluIHQ/dFthXS5wdXNoKHIpOnRbYV09W3JdfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUuY2xlYXIoKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuY2xlYXIoZSk7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VJbmRleENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlRGljdENhY2hlLmNsZWFyKCk7dGhpcy5ub25CbGVuZE1vZGVzU2V0LmNsZWFyKCk7Zm9yKGNvbnN0e2RpY3Q6ZX1vZiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmZvbnRDYWNoZSkpZGVsZXRlIGUuY2FjaGVLZXk7dGhpcy5mb250Q2FjaGUuY2xlYXIoKTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuY2xlYXIoKTt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5jbGVhcigpO3RoaXMuc3lzdGVtRm9udENhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sYT1uZXcgUmVmU2V0LHI9dGhpcy4jQWUuZ2V0UmF3KCJQYWdlcyIpO3IgaW5zdGFuY2VvZiBSZWYmJmEucHV0KHIpO2NvbnN0IGk9dGhpcy54cmVmLG49dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUscz10aGlzLnBhZ2VJbmRleENhY2hlLG89dGhpcy5wYWdlRGljdENhY2hlO2xldCBjPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IHI9dC5wb3AoKTtpZihyIGluc3RhbmNlb2YgUmVmKXtjb25zdCBsPW4uZ2V0KHIpO2lmKGw+PTAmJmMrbDw9ZSl7Yys9bDtjb250aW51ZX1pZihhLmhhcyhyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpO2EucHV0KHIpO2NvbnN0IGg9YXdhaXQoby5nZXQocil8fGkuZmV0Y2hBc3luYyhyKSk7aWYoaCBpbnN0YW5jZW9mIERpY3Qpe2xldCB0PWguZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgaS5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhaC5oYXMoIktpZHMiKSl7bi5oYXMocil8fG4ucHV0KHIsMSk7cy5oYXMocil8fHMucHV0KHIsYyk7aWYoYz09PWUpcmV0dXJuW2gscl07YysrO2NvbnRpbnVlfX10LnB1c2goaCk7Y29udGludWV9aWYoIShyIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIik7Y29uc3R7b2JqSWQ6bH09cjtsZXQgaD1yLmdldFJhdygiQ291bnQiKTtoIGluc3RhbmNlb2YgUmVmJiYoaD1hd2FpdCBpLmZldGNoQXN5bmMoaCkpO2lmKE51bWJlci5pc0ludGVnZXIoaCkmJmg+PTApe2wmJiFuLmhhcyhsKSYmbi5wdXQobCxoKTtpZihjK2g8PWUpe2MrPWg7Y29udGludWV9fWxldCB1PXIuZ2V0UmF3KCJLaWRzIik7dSBpbnN0YW5jZW9mIFJlZiYmKHU9YXdhaXQgaS5mZXRjaEFzeW5jKHUpKTtpZighQXJyYXkuaXNBcnJheSh1KSl7bGV0IHQ9ci5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCBpLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFyLmhhcygiS2lkcyIpKXtpZihjPT09ZSlyZXR1cm5bcixudWxsXTtjKys7Y29udGludWV9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT11Lmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBhPXVbZV07dC5wdXNoKGEpO3I9PT10aGlzLnRvcGxldmVsUGFnZXNEaWN0JiZhIGluc3RhbmNlb2YgUmVmJiYhby5oYXMoYSkmJm8ucHV0KGEsaS5mZXRjaEFzeW5jKGEpKX19dGhyb3cgbmV3IEVycm9yKGBQYWdlIGluZGV4ICR7ZX0gbm90IGZvdW5kLmApfWFzeW5jIGdldEFsbFBhZ2VEaWN0cyhlPSExKXtjb25zdHtpZ25vcmVFcnJvcnM6dH09dGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMsYT1be2N1cnJlbnROb2RlOnRoaXMudG9wbGV2ZWxQYWdlc0RpY3QscG9zSW5LaWRzOjB9XSxyPW5ldyBSZWZTZXQsaT10aGlzLiNBZS5nZXRSYXcoIlBhZ2VzIik7aSBpbnN0YW5jZW9mIFJlZiYmci5wdXQoaSk7Y29uc3Qgbj1uZXcgTWFwLHM9dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgYz0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGMpO24uc2V0KGMrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGEpe2lmKGEgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IGE7aWYoZSYmdCYmMD09PWMpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7YX0iLmApO2E9RGljdC5lbXB0eX1uLnNldChjKyssW2EsbnVsbF0pfWZvcig7YS5sZW5ndGg+MDspe2NvbnN0IGU9YS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOml9PWU7bGV0IG49dC5nZXRSYXcoIktpZHMiKTtpZihuIGluc3RhbmNlb2YgUmVmKXRyeXtuPWF3YWl0IHMuZmV0Y2hBc3luYyhuKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobikpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKGk+PW4ubGVuZ3RoKXthLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89bltpXTtsZXQgYztpZihvIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfXIucHV0KG8pO3RyeXtjPWF3YWl0IHMuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgYz1vO2lmKCEoYyBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBsPWMuZ2V0UmF3KCJUeXBlIik7aWYobCBpbnN0YW5jZW9mIFJlZil0cnl7bD1hd2FpdCBzLmZldGNoQXN5bmMobCl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShsLCJQYWdlIil8fCFjLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGMsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOmEucHVzaCh7Y3VycmVudE5vZGU6Yyxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIG59Z2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2NvbnN0IGE9dGhpcy54cmVmO2xldCByPTA7Y29uc3QgbmV4dD10PT5mdW5jdGlvbiBwYWdlc0JlZm9yZVJlZih0KXtsZXQgcixpPTA7cmV0dXJuIGEuZmV0Y2hBc3luYyh0KS50aGVuKGZ1bmN0aW9uKGEpe2lmKGlzUmVmc0VxdWFsKHQsZSkmJiFpc0RpY3QoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBEaWN0JiYhYS5oYXMoIlR5cGUiKSYmYS5oYXMoIkNvbnRlbnRzIikpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIWEpcmV0dXJuIG51bGw7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJOb2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3I9YS5nZXRSYXcoIlBhcmVudCIpO3JldHVybiBhLmdldEFzeW5jKCJQYXJlbnQiKX0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtsZXQgcz0hMTtmb3IoY29uc3QgciBvZiBlKXtpZighKHIgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG11c3QgYmUgYSByZWZlcmVuY2UuIik7aWYoaXNSZWZzRXF1YWwocix0KSl7cz0hMDticmVha31uLnB1c2goYS5mZXRjaEFzeW5jKHIpLnRoZW4oZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9pKz1lLmdldCgiQ291bnQiKTppKyt9KSl9aWYoIXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgcmVmZXJlbmNlIG5vdCBmb3VuZCBpbiBwYXJlbnQncyBraWRzLiIpO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKCgpPT5baSxyXSl9KX0odCkudGhlbih0PT57aWYoIXQpe3RoaXMucGFnZUluZGV4Q2FjaGUucHV0KGUscik7cmV0dXJuIHJ9Y29uc3RbYSxpXT10O3IrPWE7cmV0dXJuIG5leHQoaSl9KTtyZXR1cm4gbmV4dChlKX1nZXQgYmFzZVVybCgpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJVUkkiKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLGUuaHJlZil9fXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsdGhpcy5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLHJlc3VsdE9iajp0LGRvY0Jhc2VVcmw6YT1udWxsLGRvY0F0dGFjaG1lbnRzOnI9bnVsbH0pe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1sZXQgaSxuLHM9ZS5nZXQoIkEiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlpZihlLmhhcygiRGVzdCIpKXM9ZS5nZXQoIkRlc3QiKTtlbHNle3M9ZS5nZXQoIkFBIik7cyBpbnN0YW5jZW9mIERpY3QmJihzLmhhcygiRCIpP3M9cy5nZXQoIkQiKTpzLmhhcygiVSIpJiYocz1zLmdldCgiVSIpKSl9aWYocyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9cy5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogSW52YWxpZCB0eXBlIGluIEFjdGlvbiBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUubmFtZTtzd2l0Y2goYSl7Y2FzZSJSZXNldEZvcm0iOmNvbnN0IGU9cy5nZXQoIkZsYWdzIiksbz0hKDEmKCJudW1iZXIiPT10eXBlb2YgZT9lOjApKSxjPVtdLGw9W107Zm9yKGNvbnN0IGUgb2Ygcy5nZXQoIkZpZWxkcyIpfHxbXSllIGluc3RhbmNlb2YgUmVmP2wucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmYy5wdXNoKHN0cmluZ1RvUERGU3RyaW5nKGUpKTt0LnJlc2V0Rm9ybT17ZmllbGRzOmMscmVmczpsLGluY2x1ZGU6b307YnJlYWs7Y2FzZSJVUkkiOmk9cy5nZXQoIlVSSSIpO2kgaW5zdGFuY2VvZiBOYW1lJiYoaT0iLyIraS5uYW1lKTticmVhaztjYXNlIkdvVG8iOm49cy5nZXQoIkQiKTticmVhaztjYXNlIkxhdW5jaCI6Y2FzZSJHb1RvUiI6Y29uc3QgaD1zLmdldCgiRiIpO2lmKGggaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW5ldyBGaWxlU3BlYyhoLG51bGwsITApLHtyYXdGaWxlbmFtZTp0fT1lLnNlcmlhbGl6YWJsZTtpPXR9ZWxzZSJzdHJpbmciPT10eXBlb2YgaCYmKGk9aCk7Y29uc3QgdT1mZXRjaFJlbW90ZURlc3Qocyk7dSYmInN0cmluZyI9PXR5cGVvZiBpJiYoaT1pLnNwbGl0KCIjIiwxKVswXSsiIyIrdSk7Y29uc3QgZD1zLmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgZCYmKHQubmV3V2luZG93PWQpO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGY9cy5nZXQoIlQiKTtsZXQgZztpZihyJiZmIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1mLmdldCgiUiIpLHQ9Zi5nZXQoIk4iKTtpc05hbWUoZSwiQyIpJiYic3RyaW5nIj09dHlwZW9mIHQmJihnPXJbc3RyaW5nVG9QREZTdHJpbmcodCwhMCldKX1pZihnKXt0LmF0dGFjaG1lbnQ9Zztjb25zdCBlPWZldGNoUmVtb3RlRGVzdChzKTtlJiYodC5hdHRhY2htZW50RGVzdD1lKX1lbHNlIHdhcm4oJ3BhcnNlRGVzdERpY3Rpb25hcnkgLSB1bmltcGxlbWVudGVkICJHb1RvRSIgYWN0aW9uLicpO2JyZWFrO2Nhc2UiTmFtZWQiOmNvbnN0IHA9cy5nZXQoIk4iKTtwIGluc3RhbmNlb2YgTmFtZSYmKHQuYWN0aW9uPXAubmFtZSk7YnJlYWs7Y2FzZSJTZXRPQ0dTdGF0ZSI6Y29uc3QgbT1zLmdldCgiU3RhdGUiKSxiPXMuZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkobSl8fDA9PT1tLmxlbmd0aClicmVhaztjb25zdCB5PVtdO2Zvcihjb25zdCBlIG9mIG0paWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjp5LnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBSZWYmJnkucHVzaChlLnRvU3RyaW5nKCkpO2lmKHkubGVuZ3RoIT09bS5sZW5ndGgpYnJlYWs7dC5zZXRPQ0dTdGF0ZT17c3RhdGU6eSxwcmVzZXJ2ZVJCOiJib29sZWFuIiE9dHlwZW9mIGJ8fGJ9O2JyZWFrO2Nhc2UiSmF2YVNjcmlwdCI6Y29uc3Qgdz1zLmdldCgiSlMiKTtsZXQgeDt3IGluc3RhbmNlb2YgQmFzZVN0cmVhbT94PXcuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB3JiYoeD13KTtjb25zdCBTPXgmJnJlY292ZXJKc1VSTChzdHJpbmdUb1BERlN0cmluZyh4LCEwKSk7aWYoUyl7aT1TLnVybDt0Lm5ld1dpbmRvdz1TLm5ld1dpbmRvdzticmVha31kZWZhdWx0OmlmKCJKYXZhU2NyaXB0Ij09PWF8fCJTdWJtaXRGb3JtIj09PWEpYnJlYWs7d2FybihgcGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuc3VwcG9ydGVkIGFjdGlvbjogIiR7YX0iLmApfX1lbHNlIGUuaGFzKCJEZXN0IikmJihuPWUuZ2V0KCJEZXN0IikpO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGksYSx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO2UmJih0LnVybD1lLmhyZWYpO3QudW5zYWZlVXJsPWl9aWYobil7biBpbnN0YW5jZW9mIE5hbWUmJihuPW4ubmFtZSk7InN0cmluZyI9PXR5cGVvZiBuP3QuZGVzdD1zdHJpbmdUb1BERlN0cmluZyhuLCEwKTpMbihuKSYmKHQuZGVzdD1uKX19fWZ1bmN0aW9uIG1heUhhdmVDaGlsZHJlbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZnx8ZSBpbnN0YW5jZW9mIERpY3R8fGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSltYXlIYXZlQ2hpbGRyZW4oYSkmJnQucHVzaChhKX1jbGFzcyBPYmplY3RMb2FkZXJ7cmVmU2V0PW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGljdD1lO3RoaXMua2V5cz10O3RoaXMueHJlZj1hfWFzeW5jIGxvYWQoKXtjb25zdHtrZXlzOmUsZGljdDp0fT10aGlzLGE9W107Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhyKTt2b2lkIDAhPT1lJiZhLnB1c2goZSl9YXdhaXQgdGhpcy4jUmUoYSk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyNSZShlKXtjb25zdCB0PVtdLGE9W107Zm9yKDtlLmxlbmd0aDspe2xldCByPWUucG9wKCk7aWYociBpbnN0YW5jZW9mIFJlZil7aWYodGhpcy5yZWZTZXQuaGFzKHIpKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQocik7cj10aGlzLnhyZWYuZmV0Y2gocil9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXt3YXJuKGBPYmplY3RMb2FkZXIuI3dhbGsgLSByZXF1ZXN0aW5nIGFsbCBkYXRhOiAiJHtlfSIuYCk7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RBbGxDaHVua3MoKTtyZXR1cm59dC5wdXNoKHIpO2EucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9ci5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCBpPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtpPSEwO2EucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1pJiZ0LnB1c2gocil9fWFkZENoaWxkcmVuKHIsZSl9aWYoYS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGEpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO2F3YWl0IHRoaXMuI1JlKHQpfX1zdGF0aWMgYXN5bmMgbG9hZChlLHQsYSl7aWYoYS5zdHJlYW0uaXNEYXRhTG9hZGVkKXJldHVybjtjb25zdCByPW5ldyBPYmplY3RMb2FkZXIoZSx0LGEpO2F3YWl0IHIubG9hZCgpfX1jb25zdCBfbj1TeW1ib2woKSxVbj1TeW1ib2woKSxqbj1TeW1ib2woKSxYbj1TeW1ib2woKSxxbj1TeW1ib2woKSxIbj1TeW1ib2woKSxXbj1TeW1ib2woKSx6bj1TeW1ib2woKSwkbj1TeW1ib2woKSxHbj1TeW1ib2woImNvbnRlbnQiKSxWbj1TeW1ib2woImRhdGEiKSxLbj1TeW1ib2woKSxKbj1TeW1ib2woImV4dHJhIiksWW49U3ltYm9sKCksWm49U3ltYm9sKCksUW49U3ltYm9sKCksZXM9U3ltYm9sKCksdHM9U3ltYm9sKCksYXM9U3ltYm9sKCkscnM9U3ltYm9sKCksaXM9U3ltYm9sKCksbnM9U3ltYm9sKCksc3M9U3ltYm9sKCksb3M9U3ltYm9sKCksY3M9U3ltYm9sKCksbHM9U3ltYm9sKCksaHM9U3ltYm9sKCksdXM9U3ltYm9sKCksZHM9U3ltYm9sKCksZnM9U3ltYm9sKCksZ3M9U3ltYm9sKCkscHM9U3ltYm9sKCksbXM9U3ltYm9sKCksYnM9U3ltYm9sKCkseXM9U3ltYm9sKCksd3M9U3ltYm9sKCkseHM9U3ltYm9sKCksU3M9U3ltYm9sKCksQXM9U3ltYm9sKCksa3M9U3ltYm9sKCksQ3M9U3ltYm9sKCksdnM9U3ltYm9sKCksRnM9U3ltYm9sKCksSXM9U3ltYm9sKCksVHM9U3ltYm9sKCksT3M9U3ltYm9sKCJuYW1lc3BhY2VJZCIpLERzPVN5bWJvbCgibm9kZU5hbWUiKSxNcz1TeW1ib2woKSxScz1TeW1ib2woKSxCcz1TeW1ib2woKSxOcz1TeW1ib2woKSxFcz1TeW1ib2woKSxMcz1TeW1ib2woKSxfcz1TeW1ib2woKSxVcz1TeW1ib2woKSxqcz1TeW1ib2woInJvb3QiKSxYcz1TeW1ib2woKSxxcz1TeW1ib2woKSxIcz1TeW1ib2woKSxXcz1TeW1ib2woKSx6cz1TeW1ib2woKSwkcz1TeW1ib2woKSxHcz1TeW1ib2woKSxWcz1TeW1ib2woKSxLcz1TeW1ib2woKSxKcz1TeW1ib2woKSxZcz1TeW1ib2woKSxacz1TeW1ib2woInVpZCIpLFFzPVN5bWJvbCgpLGVvPXtjb25maWc6e2lkOjAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hjaS8iKX0sY29ubmVjdGlvblNldDp7aWQ6MSxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWNvbm5lY3Rpb24tc2V0LyIpfSxkYXRhc2V0czp7aWQ6MixjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvIil9LGZvcm06e2lkOjMsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1mb3JtLyIpfSxsb2NhbGVTZXQ6e2lkOjQsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1sb2NhbGUtc2V0LyIpfSxwZGY6e2lkOjUsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwL3BkZi8iPT09ZX0sc2lnbmF0dXJlOntpZDo2LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj09PWV9LHNvdXJjZVNldDp7aWQ6NyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXNvdXJjZS1zZXQvIil9LHN0eWxlc2hlZXQ6e2lkOjgsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI9PT1lfSx0ZW1wbGF0ZTp7aWQ6OSxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXRlbXBsYXRlLyIpfSx4ZGM6e2lkOjEwLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZGMvIil9LHhkcDp7aWQ6MTEsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwLyI9PT1lfSx4ZmRmOntpZDoxMixjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZmRmLyI9PT1lfSx4aHRtbDp7aWQ6MTMsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZX0seG1wbWV0YTp7aWQ6MTQsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veG1wbWV0YS8iPT09ZX19LHRvPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxhbz0vKFsrLV0/XGQrXC4/XGQqKSguKikvO2Z1bmN0aW9uIHN0cmlwUXVvdGVzKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJyk/ZS5zbGljZSgxLC0xKTplfWZ1bmN0aW9uIGdldEludGVnZXIoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTphfSl7aWYoIWUpcmV0dXJuIHQ7ZT1lLnRyaW0oKTtjb25zdCByPXBhcnNlSW50KGUsMTApO3JldHVybiFpc05hTihyKSYmYShyKT9yOnR9ZnVuY3Rpb24gZ2V0RmxvYXQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTphfSl7aWYoIWUpcmV0dXJuIHQ7ZT1lLnRyaW0oKTtjb25zdCByPXBhcnNlRmxvYXQoZSk7cmV0dXJuIWlzTmFOKHIpJiZhKHIpP3I6dH1mdW5jdGlvbiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe3JldHVybiBlJiZhKGU9ZS50cmltKCkpP2U6dH1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX1mdW5jdGlvbiBnZXRNZWFzdXJlbWVudChlLHQ9IjAiKXt0fHw9IjAiO2lmKCFlKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdCBhPWUudHJpbSgpLm1hdGNoKGFvKTtpZighYSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3RbLHIsaV09YSxuPXBhcnNlRmxvYXQocik7aWYoaXNOYU4obikpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2lmKDA9PT1uKXJldHVybiAwO2NvbnN0IHM9dG9baV07cmV0dXJuIHM/cyhuKTpufWZ1bmN0aW9uIGdldFJhdGlvKGUpe2lmKCFlKXJldHVybntudW06MSxkZW46MX07Y29uc3QgdD1lLnNwbGl0KCI6IiwyKS5tYXAoZT0+cGFyc2VGbG9hdChlLnRyaW0oKSkpLmZpbHRlcihlPT4haXNOYU4oZSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe3JldHVybiBlP2UudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoZT0+KHtleGNsdWRlZDoiLSI9PT1lWzBdLHZpZXduYW1lOmUuc3Vic3RyaW5nKDEpfSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1hO3RoaXMuYnJlYWtOb2RlPXJ9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBhPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsYSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8sYT10LmZvbnRGYW1pbHk7bGV0IHI9dGhpcy5mb250cy5nZXQoYSk7aWYoIXIpe3I9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChhLHIpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PXIpfWxldCBpPSIiO2NvbnN0IG49cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP2k9bj49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpuPj03MDAmJihpPSJib2xkIik7aWYoIWkpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYoaT0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihpKz0iaXRhbGljIil9aXx8KGk9InJlZ3VsYXIiKTtyW2ldPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgYT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoYSlyZXR1cm4gYTtjb25zdCByPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgaT1lLnJlcGxhY2VBbGwociwiIik7YT10aGlzLmZvbnRzLmdldChpKTtpZihhKXt0aGlzLmNhY2hlLnNldChlLGEpO3JldHVybiBhfWk9aS50b0xvd2VyQ2FzZSgpO2NvbnN0IG49W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2godCk7aWYoMD09PW4ubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoaSkmJm4ucHVzaChlKTtpZigwPT09bi5sZW5ndGgpe2k9aS5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoaSkmJm4ucHVzaCh0KX1pZigwPT09bi5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoaSkmJm4ucHVzaChlKTtpZihuLmxlbmd0aD49MSl7MSE9PW4ubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLG5bMF0pO3JldHVybiBuWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgdGV4dF9Gb250SW5mb3tjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLmxpbmVIZWlnaHQ9YTt0aGlzLnBhcmFNYXJnaW49dHx8e3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowfTtpZighZSl7W3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQocik7cmV0dXJufXRoaXMueGZhRm9udD17dHlwZWZhY2U6ZS50eXBlZmFjZSxwb3N0dXJlOmUucG9zdHVyZSx3ZWlnaHQ6ZS53ZWlnaHQsc2l6ZTplLnNpemUsbGV0dGVyU3BhY2luZzplLmxldHRlclNwYWNpbmd9O2NvbnN0IGk9ci5maW5kKGUudHlwZWZhY2UpO2lmKGkpe3RoaXMucGRmRm9udD1zZWxlY3RGb250KGUsaSk7dGhpcy5wZGZGb250fHwoW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQocikpfWVsc2VbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChyKX1kZWZhdWx0Rm9udChlKXtjb25zdCB0PWUuZmluZCgiSGVsdmV0aWNhIiwhMSl8fGUuZmluZCgiTXlyaWFkIFBybyIsITEpfHxlLmZpbmQoIkFyaWFsIiwhMSl8fGUuZ2V0RGVmYXVsdCgpO2lmKHQ/LnJlZ3VsYXIpe2NvbnN0IGU9dC5yZWd1bGFyO3JldHVybltlLHt0eXBlZmFjZTplLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHkscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX1yZXR1cm5bbnVsbCx7dHlwZWZhY2U6IkNvdXJpZXIiLHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19fWNsYXNzIEZvbnRTZWxlY3Rvcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLmZvbnRGaW5kZXI9cjt0aGlzLnN0YWNrPVtuZXcgdGV4dF9Gb250SW5mbyhlLHQsYSxyKV19cHVzaERhdGEoZSx0LGEpe2NvbnN0IHI9dGhpcy5zdGFjay5hdCgtMSk7Zm9yKGNvbnN0IHQgb2ZbInR5cGVmYWNlIiwicG9zdHVyZSIsIndlaWdodCIsInNpemUiLCJsZXR0ZXJTcGFjaW5nIl0pZVt0XXx8KGVbdF09ci54ZmFGb250W3RdKTtmb3IoY29uc3QgZSBvZlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0paXNOYU4odFtlXSkmJih0W2VdPXIucGFyYU1hcmdpbltlXSk7Y29uc3QgaT1uZXcgdGV4dF9Gb250SW5mbyhlLHQsYXx8ci5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7aS5wZGZGb250fHwoaS5wZGZGb250PXIucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKGkpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGEscik7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxhKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsYSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxhPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3Qgcj10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxpPXQucGRmRm9udCxuPWkubGluZUhlaWdodHx8MS4yLHM9dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIsbikqYSxvPW4tKHZvaWQgMD09PWkubGluZUdhcD8uMjppLmxpbmVHYXApLGM9TWF0aC5tYXgoMSxvKSphLGw9YS8xZTMsaD1pLmRlZmF1bHRXaWR0aHx8aS5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPWkuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGE9aS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9ZS53aWR0aHx8aDt0aGlzLmdseXBocy5wdXNoKFt0KmwrcixzLGMsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpO3JldHVybn1mb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWNvbXB1dGUoZSl7bGV0IHQ9LTEsYT0wLHI9MCxpPTAsbj0wLHM9MCxvPSExLGM9ITA7Zm9yKGxldCBsPTAsaD10aGlzLmdseXBocy5sZW5ndGg7bDxoO2wrKyl7Y29uc3RbaCx1LGQsZixnXT10aGlzLmdseXBoc1tsXSxwPSIgIj09PWYsbT1jP2Q6dTtpZihnKXtyPU1hdGgubWF4KHIsbik7bj0wO2krPXM7cz1tO3Q9LTE7YT0wO2M9ITF9ZWxzZSBpZihwKWlmKG4raD5lKXtyPU1hdGgubWF4KHIsbik7bj0wO2krPXM7cz1tO3Q9LTE7YT0wO289ITA7Yz0hMX1lbHNle3M9TWF0aC5tYXgobSxzKTthPW47bis9aDt0PWx9ZWxzZSBpZihuK2g+ZSl7aSs9cztzPW07aWYoLTEhPT10KXtsPXQ7cj1NYXRoLm1heChyLGEpO249MDt0PS0xO2E9MH1lbHNle3I9TWF0aC5tYXgocixuKTtuPWh9bz0hMDtjPSExfWVsc2V7bis9aDtzPU1hdGgubWF4KG0scyl9fXI9TWF0aC5tYXgocixuKTtpKz1zK3RoaXMuZXh0cmFIZWlnaHQ7cmV0dXJue3dpZHRoOjEuMDIqcixoZWlnaHQ6aSxpc0Jyb2tlbjpvfX19Y29uc3Qgcm89L15bXi5bXSsvLGlvPS9eW15cXV0rLyxubz0wLHNvPTEsb289Mixjbz0zLGxvPTQsaG89bmV3IE1hcChbWyIkZGF0YSIsKGUsdCk9PmUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmVdLFsiJHJlY29yZCIsKGUsdCk9PihlLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplKVtjc10oKVswXV0sWyIkdGVtcGxhdGUiLChlLHQpPT5lLnRlbXBsYXRlXSxbIiRjb25uZWN0aW9uU2V0IiwoZSx0KT0+ZS5jb25uZWN0aW9uU2V0XSxbIiRmb3JtIiwoZSx0KT0+ZS5mb3JtXSxbIiRsYXlvdXQiLChlLHQpPT5lLmxheW91dF0sWyIkaG9zdCIsKGUsdCk9PmUuaG9zdF0sWyIkZGF0YVdpbmRvdyIsKGUsdCk9PmUuZGF0YVdpbmRvd10sWyIkZXZlbnQiLChlLHQpPT5lLmV2ZW50XSxbIiEiLChlLHQpPT5lLmRhdGFzZXRzXSxbIiR4ZmEiLChlLHQpPT5lXSxbInhmYSIsKGUsdCk9PmVdLFsiJCIsKGUsdCk9PnRdXSksdW89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcGFyc2VJbmRleChlKXtyZXR1cm4iKiI9PT0oZT1lLnRyaW0oKSk/MS8wOnBhcnNlSW50KGUsMTApfHwwfWZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihlLHQsYT0hMCl7bGV0IHI9ZS5tYXRjaChybyk7aWYoIXIpcmV0dXJuIG51bGw7bGV0W2ldPXI7Y29uc3Qgbj1be25hbWU6aSxjYWNoZU5hbWU6Ii4iK2ksaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGwsb3BlcmF0b3I6bm99XTtsZXQgcz1pLmxlbmd0aDtmb3IoO3M8ZS5sZW5ndGg7KXtjb25zdCBvPXM7aWYoIlsiPT09ZS5jaGFyQXQocysrKSl7cj1lLnNsaWNlKHMpLm1hdGNoKGlvKTtpZighcil7d2FybigiWEZBIC0gSW52YWxpZCBpbmRleCBpbiBTT00gZXhwcmVzc2lvbiIpO3JldHVybiBudWxsfW4uYXQoLTEpLmluZGV4PXBhcnNlSW5kZXgoclswXSk7cys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYztzd2l0Y2goZS5jaGFyQXQocykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7cysrO2M9c287YnJlYWs7Y2FzZSIjIjpzKys7Yz1vbzticmVhaztjYXNlIlsiOmlmKGEpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Yz1jbzticmVhaztjYXNlIigiOmlmKGEpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWxvO2JyZWFrO2RlZmF1bHQ6Yz1ub31yPWUuc2xpY2UocykubWF0Y2gocm8pO2lmKCFyKWJyZWFrO1tpXT1yO3MrPWkubGVuZ3RoO24ucHVzaCh7bmFtZTppLGNhY2hlTmFtZTplLnNsaWNlKG8scyksb3BlcmF0b3I6YyxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXJldHVybiBufWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEscj0hMCxpPSEwKXtjb25zdCBuPXBhcnNlRXhwcmVzc2lvbihhLHIpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHM9aG8uZ2V0KG5bMF0ubmFtZSk7bGV0IG8sYz0wO2lmKHMpe289ITA7ZT1bcyhlLHQpXTtjPTF9ZWxzZXtvPW51bGw9PT10O2U9W3R8fGVdfWZvcihsZXQgYT1uLmxlbmd0aDtjPGE7YysrKXtjb25zdHtuYW1lOmEsY2FjaGVOYW1lOnIsb3BlcmF0b3I6cyxpbmRleDpsfT1uW2NdLGg9W107Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuaXNYRkFPYmplY3QpY29udGludWU7bGV0IGUsbjtpZihpKXtuPXVvLmdldCh0KTtpZighbil7bj1uZXcgTWFwO3VvLnNldCh0LG4pfWU9bi5nZXQocil9aWYoIWUpe3N3aXRjaChzKXtjYXNlIG5vOmU9dFtyc10oYSwhMSk7YnJlYWs7Y2FzZSBzbzplPXRbcnNdKGEsITApO2JyZWFrO2Nhc2Ugb286ZT10W2FzXShhKTtlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1pJiZuLnNldChyLGUpfWUubGVuZ3RoPjAmJmgucHVzaChlKX1pZigwPT09aC5sZW5ndGgmJiFvJiYwPT09Yyl7Y29uc3QgYT10W2RzXSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtjPS0xO2U9W3RdO2NvbnRpbnVlfWU9aXNGaW5pdGUobCk/aC5maWx0ZXIoZT0+bDxlLmxlbmd0aCkubWFwKGU9PmVbbF0pOmguZmxhdCgpfXJldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIGNyZWF0ZURhdGFOb2RlKGUsdCxhKXtjb25zdCByPXBhcnNlRXhwcmVzc2lvbihhKTtpZighcilyZXR1cm4gbnVsbDtpZihyLnNvbWUoZT0+ZS5vcGVyYXRvcj09PXNvKSlyZXR1cm4gbnVsbDtjb25zdCBpPWhvLmdldChyWzBdLm5hbWUpO2xldCBuPTA7aWYoaSl7ZT1pKGUsdCk7bj0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1yLmxlbmd0aDtuPHQ7bisrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6YSxpbmRleDppfT1yW25dO2lmKCFpc0Zpbml0ZShpKSl7cltuXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKHIuc2xpY2UobikpfWxldCBzO3N3aXRjaChhKXtjYXNlIG5vOnM9ZVtyc10odCwhMSk7YnJlYWs7Y2FzZSBzbzpzPWVbcnNdKHQsITApO2JyZWFrO2Nhc2Ugb286cz1lW2FzXSh0KTtzPXMuaXNYRkFPYmplY3RBcnJheT9zLmNoaWxkcmVuOltzXX1pZigwPT09cy5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoci5zbGljZShuKSk7aWYoIShpPHMubGVuZ3RoKSl7cltuXS5pbmRleD1pLXMubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKHIuc2xpY2UobikpfXtjb25zdCB0PXNbaV07aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgZm89U3ltYm9sKCksZ289U3ltYm9sKCkscG89U3ltYm9sKCksbW89U3ltYm9sKCJfY2hpbGRyZW4iKSxibz1TeW1ib2woKSx5bz1TeW1ib2woKSx3bz1TeW1ib2woKSx4bz1TeW1ib2woKSxTbz1TeW1ib2woKSxBbz1TeW1ib2woKSxrbz1TeW1ib2woKSxDbz1TeW1ib2woKSx2bz1TeW1ib2woKSxGbz1TeW1ib2woInBhcmVudCIpLElvPVN5bWJvbCgpLE9vPVN5bWJvbCgpLERvPVN5bWJvbCgpO2xldCBNbz0wO2NvbnN0IFJvPWVvLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT0hMSl7dGhpc1tPc109ZTt0aGlzW0RzXT10O3RoaXNba29dPWE7dGhpc1tGb109bnVsbDt0aGlzW21vXT1bXTt0aGlzW1pzXT1gJHt0fSR7TW8rK31gO3RoaXNbZ3NdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGE9bnVsbDtmb3IoY29uc3R7bmFtZTpyLGluZGV4Oml9b2YgZSl7Zm9yKGxldCBlPTAsbj1pc0Zpbml0ZShpKT9pOjA7ZTw9bjtlKyspe2NvbnN0IGU9dFtPc109PT1Sbz8tMTp0W09zXTthPW5ldyBYbWxPYmplY3QoZSxyKTt0W2puXShhKX10PWF9cmV0dXJuIGF9W1JzXShlKXtpZighdGhpc1trb118fCF0aGlzW0JzXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbRHNdLGE9dGhpc1t0XTtpZighKGEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1hJiZ0aGlzW1VzXShhKTt0aGlzW3RdPWU7dGhpc1tqbl0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW2puXShlKTtyZXR1cm4hMH1sZXQgcj0iIjt0aGlzLmlkP3I9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihyPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW0RzXX0iJHtyfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtCc10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtEc10pJiZlW09zXT09PXRoaXNbT3NdfVtrc10oKXtyZXR1cm4hMX1bX25dKCl7cmV0dXJuITF9W3dzXSgpe3JldHVybiExfVt4c10oKXtyZXR1cm4hMX1bTHNdKCl7dGhpcy5wYXJhJiZ0aGlzW2ZzXSgpW0puXS5wYXJhU3RhY2sucG9wKCl9W19zXSgpe3RoaXNbZnNdKClbSm5dLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W0hzXShlKXt0aGlzLmlkJiZ0aGlzW09zXT09PWVvLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtmc10oKXtyZXR1cm4gdGhpc1tnc10udGVtcGxhdGV9W0NzXSgpe3JldHVybiExfVt2c10oKXtyZXR1cm4hMX1bam5dKGUpe2VbRm9dPXRoaXM7dGhpc1ttb10ucHVzaChlKTshZVtnc10mJnRoaXNbZ3NdJiYoZVtnc109dGhpc1tnc10pfVtVc10oZSl7Y29uc3QgdD10aGlzW21vXS5pbmRleE9mKGUpO3RoaXNbbW9dLnNwbGljZSh0LDEpfVtwc10oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1benNdKGUpe31bTnNdKGUpe31bWW5dKCl7fVtxbl0oZSl7ZGVsZXRlIHRoaXNba29dO2lmKHRoaXNbV25dKXtlLmNsZWFuKHRoaXNbV25dKTtkZWxldGUgdGhpc1tXbl19fVtic10oZSl7cmV0dXJuIHRoaXNbbW9dLmluZGV4T2YoZSl9W3lzXShlLHQpe3RbRm9dPXRoaXM7dGhpc1ttb10uc3BsaWNlKGUsMCx0KTshdFtnc10mJnRoaXNbZ3NdJiYodFtnc109dGhpc1tnc10pfVtGc10oKXtyZXR1cm4hdGhpcy5uYW1lfVtUc10oKXtyZXR1cm4iIn1bR3NdKCl7cmV0dXJuIDA9PT10aGlzW21vXS5sZW5ndGg/dGhpc1tHbl06dGhpc1ttb10ubWFwKGU9PmVbR3NdKCkpLmpvaW4oIiIpfWdldFtwb10oKXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighZS5fYXR0cmlidXRlcyl7Y29uc3QgdD1lLl9hdHRyaWJ1dGVzPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKG51bGw9PT10aGlzW2VdfHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KWJyZWFrO3QuYWRkKGUpfX1yZXR1cm4gc2hhZG93KHRoaXMscG8sZS5fYXR0cmlidXRlcyl9W0FzXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFtkc10oKX1yZXR1cm4hMX1bZHNdKCl7cmV0dXJuIHRoaXNbRm9dfVt1c10oKXtyZXR1cm4gdGhpc1tkc10oKX1bY3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW21vXX1bS25dKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbR25dJiYoZS4kY29udGVudD10aGlzW0duXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW0tuXSgpOmEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9hLmlzRW1wdHkoKXx8KGVbdF09YS5kdW1wKCkpOmVbdF09YSl9cmV0dXJuIGV9W1lzXSgpe3JldHVybiBudWxsfVtLc10oKXtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX0qW2xzXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbY3NdKCkpeWllbGQgZX0qW3hvXShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXNbbHNdKCkpaWYoIWV8fHQ9PT1lLmhhcyhhW0RzXSkpe2NvbnN0IGU9dGhpc1t0c10oKSx0PWFbS3NdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbSm5dLmZhaWxpbmdOb2RlPWEpO3lpZWxkIHR9fVtabl0oKXtyZXR1cm4gbnVsbH1bVW5dKGUsdCl7dGhpc1tKbl0uY2hpbGRyZW4ucHVzaChlKX1bdHNdKCl7fVtYbl0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tKbl0uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbdHNdKCksdD10aGlzW0puXS5mYWlsaW5nTm9kZVtLc10oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbVW5dKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW0puXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbSm5dLmdlbmVyYXRvcj10aGlzW3hvXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW0puXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbVW5dKHQuaHRtbCx0LmJib3gpfXRoaXNbSm5dLmdlbmVyYXRvcj1udWxsO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfVtXc10oZSl7dGhpc1tPb109bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W0FvXShlKXtjb25zdCB0PXRoaXNbcG9dLGE9dGhpc1tPb107cmV0dXJuWy4uLmVdLmZpbHRlcihlPT50LmhhcyhlKSYmIWEuaGFzKGUpKX1bWHNdKGUsdD1uZXcgU2V0KXtmb3IoY29uc3QgYSBvZiB0aGlzW21vXSlhW0lvXShlLHQpfVtJb10oZSx0KXtjb25zdCBhPXRoaXNbU29dKGUsdCk7YT90aGlzW2ZvXShhLGUsdCk6dGhpc1tYc10oZSx0KX1bU29dKGUsdCl7Y29uc3R7dXNlOmEsdXNlaHJlZjpyfT10aGlzO2lmKCFhJiYhcilyZXR1cm4gbnVsbDtsZXQgaT1udWxsLG49bnVsbCxzPW51bGwsbz1hO2lmKHIpe289cjtyLnN0YXJ0c1dpdGgoIiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9uPXIuc2xpY2UoNSwtMSk6ci5zdGFydHNXaXRoKCIuI3NvbSgiKSYmci5lbmRzV2l0aCgiKSIpP249ci5zbGljZSg2LC0xKTpyLnN0YXJ0c1dpdGgoIiMiKT9zPXIuc2xpY2UoMSk6ci5zdGFydHNXaXRoKCIuIyIpJiYocz1yLnNsaWNlKDIpKX1lbHNlIGEuc3RhcnRzV2l0aCgiIyIpP3M9YS5zbGljZSgxKTpuPWE7dGhpcy51c2U9dGhpcy51c2VocmVmPSIiO2lmKHMpaT1lLmdldChzKTtlbHNle2k9c2VhcmNoTm9kZShlLmdldChqcyksdGhpcyxuLCEwLCExKTtpJiYoaT1pWzBdKX1pZighaSl7d2FybihgWEZBIC0gSW52YWxpZCBwcm90b3R5cGUgcmVmZXJlbmNlOiAke299LmApO3JldHVybiBudWxsfWlmKGlbRHNdIT09dGhpc1tEc10pe3dhcm4oYFhGQSAtIEluY29tcGF0aWJsZSBwcm90b3R5cGU6ICR7aVtEc119ICE9PSAke3RoaXNbRHNdfS5gKTtyZXR1cm4gbnVsbH1pZih0LmhhcyhpKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJuIG51bGx9dC5hZGQoaSk7Y29uc3QgYz1pW1NvXShlLHQpO2MmJmlbZm9dKGMsZSx0KTtpW1hzXShlLHQpO3QuZGVsZXRlKGkpO3JldHVybiBpfVtmb10oZSx0LGEpe2lmKGEuaGFzKGUpKXt3YXJuKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm59IXRoaXNbR25dJiZlW0duXSYmKHRoaXNbR25dPWVbR25dKTtuZXcgU2V0KGEpLmFkZChlKTtmb3IoY29uc3QgdCBvZiB0aGlzW0FvXShlW09vXSkpe3RoaXNbdF09ZVt0XTt0aGlzW09vXSYmdGhpc1tPb10uYWRkKHQpfWZvcihjb25zdCByIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW3BvXS5oYXMocikpY29udGludWU7Y29uc3QgaT10aGlzW3JdLG49ZVtyXTtpZihpIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpe2Zvcihjb25zdCBlIG9mIGlbbW9dKWVbSW9dKHQsYSk7Zm9yKGxldCByPWlbbW9dLmxlbmd0aCxzPW5bbW9dLmxlbmd0aDtyPHM7cisrKXtjb25zdCBuPWVbbW9dW3JdW3puXSgpO2lmKCFpLnB1c2gobikpYnJlYWs7bltGb109dGhpczt0aGlzW21vXS5wdXNoKG4pO25bSW9dKHQsYSl9fWVsc2UgaWYobnVsbD09PWkpe2lmKG51bGwhPT1uKXtjb25zdCBlPW5bem5dKCk7ZVtGb109dGhpczt0aGlzW3JdPWU7dGhpc1ttb10ucHVzaChlKTtlW0lvXSh0LGEpfX1lbHNle2lbWHNdKHQsYSk7biYmaVtmb10obix0LGEpfX19c3RhdGljW2JvXShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLm1hcChlPT5YRkFPYmplY3RbYm9dKGUpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bem5dKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVtac109YCR7ZVtEc119JHtNbysrfWA7ZVttb109W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbcG9dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbYm9dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtDb10pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1ttb10pe2NvbnN0IGE9dFtEc10scj10W3puXSgpO2VbbW9dLnB1c2gocik7cltGb109ZTtudWxsPT09ZVthXT9lW2FdPXI6ZVthXVttb10ucHVzaChyKX1yZXR1cm4gZX1bY3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1ttb10uZmlsdGVyKHQ9PnRbRHNdPT09ZSk6dGhpc1ttb119W2FzXShlKXtyZXR1cm4gdGhpc1tlXX1bcnNdKGUsdCxhPSEwKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzW2lzXShlLHQsYSkpfSpbaXNdKGUsdCxhPSEwKXtpZigicGFyZW50IiE9PWUpe2Zvcihjb25zdCBhIG9mIHRoaXNbbW9dKXthW0RzXT09PWUmJih5aWVsZCBhKTthLm5hbWU9PT1lJiYoeWllbGQgYSk7KHR8fGFbRnNdKCkpJiYoeWllbGQqYVtpc10oZSx0LCExKSl9YSYmdGhpc1twb10uaGFzKGUpJiYoeWllbGQgbmV3IFhGQUF0dHJpYnV0ZSh0aGlzLGUsdGhpc1tlXSkpfWVsc2UgeWllbGQgdGhpc1tGb119fWNsYXNzIFhGQU9iamVjdEFycmF5e2NvbnN0cnVjdG9yKGU9MS8wKXt0aGlzW0NvXT1lO3RoaXNbbW9dPVtdfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiExfWdldCBpc1hGQU9iamVjdEFycmF5KCl7cmV0dXJuITB9cHVzaChlKXtpZih0aGlzW21vXS5sZW5ndGg8PXRoaXNbQ29dKXt0aGlzW21vXS5wdXNoKGUpO3JldHVybiEwfXdhcm4oYFhGQSAtIG5vZGUgIiR7ZVtEc119IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbQ29dfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbbW9dLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW21vXS5sZW5ndGg/dGhpc1ttb11bMF1bS25dKCk6dGhpc1ttb10ubWFwKGU9PmVbS25dKCkpfVt6bl0oKXtjb25zdCBlPW5ldyBYRkFPYmplY3RBcnJheSh0aGlzW0NvXSk7ZVttb109dGhpc1ttb10ubWFwKGU9PmVbem5dKCkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW21vXX1jbGVhcigpe3RoaXNbbW9dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXNbRm9dPWU7dGhpc1tEc109dDt0aGlzW0duXT1hO3RoaXNbJG5dPSExO3RoaXNbWnNdPSJhdHRyaWJ1dGUiK01vKyt9W2RzXSgpe3JldHVybiB0aGlzW0ZvXX1bU3NdKCl7cmV0dXJuITB9W25zXSgpe3JldHVybiB0aGlzW0duXS50cmltKCl9W3pzXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbR25dPWUudG9TdHJpbmcoKX1bR3NdKCl7cmV0dXJuIHRoaXNbR25dfVtBc10oZSl7cmV0dXJuIHRoaXNbRm9dPT09ZXx8dGhpc1tGb11bQXNdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGE9e30pe3N1cGVyKGUsdCk7dGhpc1tHbl09IiI7dGhpc1t5b109bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbZ29dPWU7Zm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhhKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LHIpKTtpZihhLmhhc093blByb3BlcnR5KE1zKSl7Y29uc3QgZT1hW01zXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3lvXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3lvXT0hMCkpfX10aGlzWyRuXT0hMX1bSnNdKGUpe2NvbnN0IHQ9dGhpc1tEc107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW0duXSkpO3JldHVybn1jb25zdCBhPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxyPXRoaXNbT3NdPT09Um8/InhmYToiOiIiO2UucHVzaChgPCR7cn0ke2F9YCk7Zm9yKGNvbnN0W3QsYV1vZiB0aGlzW2dvXS5lbnRyaWVzKCkpe2NvbnN0IHI9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7cn09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoYVtHbl0pfSJgKX1udWxsIT09dGhpc1t5b10mJih0aGlzW3lvXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tHbl18fDAhPT10aGlzW21vXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbR25dKSJzdHJpbmciPT10eXBlb2YgdGhpc1tHbl0/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbR25dKSk6dGhpc1tHbl1bSnNdKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1ttb10pdFtKc10oZSk7ZS5wdXNoKGA8LyR7cn0ke2F9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtSc10oZSl7aWYodGhpc1tHbl0pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW09zXSwiI3RleHQiKTt0aGlzW2puXShlKTtlW0duXT10aGlzW0duXTt0aGlzW0duXT0iIn10aGlzW2puXShlKTtyZXR1cm4hMH1bTnNdKGUpe3RoaXNbR25dKz1lfVtZbl0oKXtpZih0aGlzW0duXSYmdGhpc1ttb10ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW09zXSwiI3RleHQiKTt0aGlzW2puXShlKTtlW0duXT10aGlzW0duXTtkZWxldGUgdGhpc1tHbl19fVtLc10oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tEc10/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tHbl19KTpIVE1MUmVzdWx0LkVNUFRZfVtjc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW21vXS5maWx0ZXIodD0+dFtEc109PT1lKTp0aGlzW21vXX1bZXNdKCl7cmV0dXJuIHRoaXNbZ29dfVthc10oZSl7Y29uc3QgdD10aGlzW2dvXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW2NzXShlKX0qW2lzXShlLHQpe2NvbnN0IGE9dGhpc1tnb10uZ2V0KGUpO2EmJih5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW21vXSl7YVtEc109PT1lJiYoeWllbGQgYSk7dCYmKHlpZWxkKmFbaXNdKGUsdCkpfX0qW1FuXShlLHQpe2NvbnN0IGE9dGhpc1tnb10uZ2V0KGUpOyFhfHx0JiZhWyRuXXx8KHlpZWxkIGEpO2Zvcihjb25zdCBhIG9mIHRoaXNbbW9dKXlpZWxkKmFbUW5dKGUsdCl9Kltvc10oZSx0LGEpe2Zvcihjb25zdCByIG9mIHRoaXNbbW9dKXtyW0RzXSE9PWV8fGEmJnJbJG5dfHwoeWllbGQgcik7dCYmKHlpZWxkKnJbb3NdKGUsdCxhKSl9fVtTc10oKXtyZXR1cm4gbnVsbD09PXRoaXNbeW9dPzA9PT10aGlzW21vXS5sZW5ndGh8fHRoaXNbbW9dWzBdW09zXT09PWVvLnhodG1sLmlkOnRoaXNbeW9dfVtuc10oKXtyZXR1cm4gbnVsbD09PXRoaXNbeW9dPzA9PT10aGlzW21vXS5sZW5ndGg/dGhpc1tHbl0udHJpbSgpOnRoaXNbbW9dWzBdW09zXT09PWVvLnhodG1sLmlkP3RoaXNbbW9dWzBdW0dzXSgpLnRyaW0oKTpudWxsOnRoaXNbR25dLnRyaW0oKX1benNdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tHbl09ZS50b1N0cmluZygpfVtLbl0oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW09zXSk7dGhpc1tHbl0mJih0LiRjb250ZW50PXRoaXNbR25dKTt0LiRuYW1lPXRoaXNbRHNdO3QuY2hpbGRyZW49W107Zm9yKGNvbnN0IGEgb2YgdGhpc1ttb10pdC5jaGlsZHJlbi5wdXNoKGFbS25dKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbZ29dKXQuYXR0cmlidXRlc1tlXT1hW0duXTtyZXR1cm4gdH19Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tHbl09IiJ9W05zXShlKXt0aGlzW0duXSs9ZX1bWW5dKCl7fX1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbdm9dPWF9W1luXSgpe3RoaXNbR25dPWdldEtleXdvcmQoe2RhdGE6dGhpc1tHbl0sZGVmYXVsdFZhbHVlOnRoaXNbdm9dWzBdLHZhbGlkYXRlOmU9PnRoaXNbdm9dLmluY2x1ZGVzKGUpfSl9W3FuXShlKXtzdXBlcltxbl0oZSk7ZGVsZXRlIHRoaXNbdm9dfX1jbGFzcyBTdHJpbmdPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e1tZbl0oKXt0aGlzW0duXT10aGlzW0duXS50cmltKCl9fWNsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1t3b109YTt0aGlzW0RvXT1yfVtZbl0oKXt0aGlzW0duXT1nZXRJbnRlZ2VyKHtkYXRhOnRoaXNbR25dLGRlZmF1bHRWYWx1ZTp0aGlzW3dvXSx2YWxpZGF0ZTp0aGlzW0RvXX0pfVtxbl0oZSl7c3VwZXJbcW5dKGUpO2RlbGV0ZSB0aGlzW3dvXTtkZWxldGUgdGhpc1tEb119fWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLGU9PjE9PT1lKX19Y2xhc3MgT3B0aW9uMTAgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDEsZT0+MD09PWUpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBCbz17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGE9ZVt1c10oKTtpZihhJiYoIWEubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgYT1lW3VzXSgpO2xldCByPWUudztjb25zdCBpPWUuaDtpZihhLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWFbSm5dLGk9ZS5jb2xTcGFuO2xldCBuO2lmKC0xPT09aSl7bj1NYXRoLnN1bVByZWNpc2UodC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKSk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtuPU1hdGguc3VtUHJlY2lzZSh0LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK2kpKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihuKXx8KHI9ZS53PW4pfXQud2lkdGg9IiIhPT1yP21lYXN1cmVUb1N0cmluZyhyKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1pP21lYXN1cmVUb1N0cmluZyhpKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgYT1lW3VzXSgpO2lmKCFhPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW0RzXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bWXNdKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVt1c10oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsYSxyLGksbil7Y29uc3Qgcz1uZXcgVGV4dE1lYXN1cmUodCxhLHIsaSk7InN0cmluZyI9PXR5cGVvZiBlP3MuYWRkU3RyaW5nKGUpOmVbRXNdKHMpO3JldHVybiBzLmNvbXB1dGUobil9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBhPW51bGwscj1udWxsLGk9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgbj0wLHM9MDtpZihlLm1hcmdpbil7bj1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtzPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsYz1udWxsO2lmKGUucGFyYSl7Yz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2MudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtjLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Yy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtjLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBsPWUuZm9udDtpZighbCl7Y29uc3QgdD1lW2ZzXSgpO2xldCBhPWVbZHNdKCk7Zm9yKDthJiZhIT09dDspe2lmKGEuZm9udCl7bD1hLmZvbnQ7YnJlYWt9YT1hW2RzXSgpfX1jb25zdCBoPShlLnd8fHQud2lkdGgpLW4sdT1lW2dzXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtHbl0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtHbl0sbCxjLG8sdSxoKTtyPXQud2lkdGg7YT10LmhlaWdodDtpPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbR3NdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsbCxjLG8sdSxoKTtyPWUud2lkdGg7YT1lLmhlaWdodDtpPWUuaXNCcm9rZW59fW51bGw9PT1yfHxlLnd8fChyKz1uKTtudWxsPT09YXx8ZS5ofHwoYSs9cyl9cmV0dXJue3c6cixoOmEsaXNCcm9rZW46aX19ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGEpe2xldCByO2lmKCIiIT09ZS53JiYiIiE9PWUuaClyPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWEpcmV0dXJuIG51bGw7bGV0IGk9ZS53O2lmKCIiPT09aSl7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW3VzXSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IG49ZS5oO2lmKCIiPT09bil7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3VzXSgpO249InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIG49TWF0aC5taW4oZS5tYXhILGEuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhuKX1yPVtlLngsZS55LGksbl19cmV0dXJuIHJ9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbdXNdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgYT10W0puXSxyPWUuY29sU3BhbjtsZXQgaTtpPS0xPT09cj9NYXRoLnN1bVByZWNpc2UoYS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uKSk6TWF0aC5zdW1QcmVjaXNlKGEuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbixhLmN1cnJlbnRDb2x1bW4rcikpO2lzTmFOKGkpfHwoZS53PWkpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PU1hdGguc3VtUHJlY2lzZShlLmNvbHVtbldpZHRocykpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgciBvZiB0KXtjb25zdCB0PWVbcl07aWYobnVsbCE9PXQpaWYoQm8uaGFzT3duUHJvcGVydHkocikpQm9bcl0oZSxhKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtZc10oKTtlP09iamVjdC5hc3NpZ24oYSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7cn0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczphfT10LHtzdHlsZTpyfT1hLGk9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2EuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6YSxpbnNldHM6bn09ZS5ib3JkZXJbSm5dO2xldCBzLG8sYz1uWzBdLGw9blszXTtjb25zdCBoPW5bMF0rblsyXSx1PW5bMV0rblszXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpjLT1hWzBdLzI7bC09YVszXS8yO3M9YGNhbGMoMTAwJSArICR7KGFbMV0rYVszXSkvMi11fXB4KWA7bz1gY2FsYygxMDAlICsgJHsoYVswXSthWzJdKS8yLWh9cHgpYDticmVhaztjYXNlImxlZnQiOmMtPWFbMF07bC09YVszXTtzPWBjYWxjKDEwMCUgKyAke2FbMV0rYVszXS11fXB4KWA7bz1gY2FsYygxMDAlICsgJHthWzBdK2FbMl0taH1weClgO2JyZWFrO2Nhc2UicmlnaHQiOnM9dT9gY2FsYygxMDAlIC0gJHt1fXB4KWA6IjEwMCUiO289aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUifWNvbnN0IGQ9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJmQucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgZj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpkLHN0eWxlOnt0b3A6YCR7Y31weGAsbGVmdDpgJHtsfXB4YCx3aWR0aDpzLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1yW2VdKXtmLmF0dHJpYnV0ZXMuc3R5bGVbZV09cltlXTtkZWxldGUgcltlXX1pLmNoaWxkcmVuLnB1c2goZix0KX1lbHNlIGkuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1yW2VdKXtpLmF0dHJpYnV0ZXMuc3R5bGVbZV09cltlXTtkZWxldGUgcltlXX1pLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PXIucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSByLnBvc2l0aW9uO2lmKHIuYWxpZ25TZWxmKXtpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPXIuYWxpZ25TZWxmO2RlbGV0ZSByLmFsaWduU2VsZn1yZXR1cm4gaX1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBhPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLHI9Z2V0TWVhc3VyZW1lbnQoZVthXSwiMHB4Iik7ZVthXT1yLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbZnNdKClbSm5dLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxhKXtpZihhLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCByPWdldEN1cnJlbnRQYXJhKGUpO2lmKHIpe2NvbnN0IGU9YS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChyLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PXJbWXNdKCk7Zm9yKGNvbnN0W2Escl1vZiBPYmplY3QuZW50cmllcyh0KSlhIGluIGV8fChlW2FdPXIpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxyKXtpZighYSl7ZGVsZXRlIHIuZm9udEZhbWlseTtyZXR1cm59Y29uc3QgaT1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTtyLmZvbnRGYW1pbHk9YCIke2l9ImA7Y29uc3Qgbj1hLmZpbmQoaSk7aWYobil7Y29uc3R7Zm9udEZhbWlseTphfT1uLnJlZ3VsYXIuY3NzRm9udEluZm87YSE9PWkmJihyLmZvbnRGYW1pbHk9YCIke2F9ImApO2NvbnN0IHM9Z2V0Q3VycmVudFBhcmEodCk7aWYocyYmIiIhPT1zLmxpbmVIZWlnaHQpcmV0dXJuO2lmKHIubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUsbik7byYmKHIubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW0puXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtKbl0uYXR0cmlidXRlcyxjaGlsZHJlbjplW0puXS5jaGlsZHJlbn07aWYoZVtKbl0uZmFpbGluZ05vZGUpe2NvbnN0IGE9ZVtKbl0uZmFpbGluZ05vZGVbWm5dKCk7YSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFthXSkpOnQuY2hpbGRyZW4ucHVzaChhKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsYSl7Y29uc3Qgcj1lW0puXSxpPXIuYXZhaWxhYmxlU3BhY2UsW24scyxvLGNdPWE7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpyLndpZHRoPU1hdGgubWF4KHIud2lkdGgsbitvKTtyLmhlaWdodD1NYXRoLm1heChyLmhlaWdodCxzK2MpO3IuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighci5saW5lfHwxPT09ci5hdHRlbXB0KXtyLmxpbmU9Y3JlYXRlTGluZShlLFtdKTtyLmNoaWxkcmVuLnB1c2goci5saW5lKTtyLm51bWJlckluTGluZT0wfXIubnVtYmVySW5MaW5lKz0xO3IubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1yLmF0dGVtcHQpe3IuY3VycmVudFdpZHRoKz1vO3IuaGVpZ2h0PU1hdGgubWF4KHIuaGVpZ2h0LHIucHJldkhlaWdodCtjKX1lbHNle3IuY3VycmVudFdpZHRoPW87ci5wcmV2SGVpZ2h0PXIuaGVpZ2h0O3IuaGVpZ2h0Kz1jO3IuYXR0ZW1wdD0wfXIud2lkdGg9TWF0aC5tYXgoci53aWR0aCxyLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7ci5jaGlsZHJlbi5wdXNoKHQpO3Iud2lkdGgrPW87ci5oZWlnaHQ9TWF0aC5tYXgoci5oZWlnaHQsYyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoci5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIHIuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOnIud2lkdGg9TWF0aENsYW1wKG8sci53aWR0aCxpLndpZHRoKTtyLmhlaWdodCs9YztyLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtKbl0uYXZhaWxhYmxlU3BhY2UsYT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLHI9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtKbl0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1yLWVbSm5dLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtYS1lW0puXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1yLGhlaWdodDp0LmhlaWdodC1hLWVbSm5dLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6TWF0aC5zdW1QcmVjaXNlKGVbSm5dLmNvbHVtbldpZHRocy5zbGljZShlW0puXS5jdXJyZW50Q29sdW1uKSksaGVpZ2h0OnQuaGVpZ2h0LXJ9O2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybnt3aWR0aDp0LndpZHRoLXIsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtKbl0uaGVpZ2h0fTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBjaGVja0RpbWVuc2lvbnMoZSx0KXtpZihudWxsPT09ZVtmc10oKVtKbl0uZmlyc3RVbnNwbGl0dGFibGUpcmV0dXJuITA7aWYoMD09PWUud3x8MD09PWUuaClyZXR1cm4hMDtjb25zdCBhPWVbdXNdKCkscj1hW0puXT8uYXR0ZW1wdHx8MCxbLGksbixzXT1mdW5jdGlvbiBnZXRUcmFuc2Zvcm1lZEJCb3goZSl7bGV0IHQsYSxyPSIiPT09ZS53P05hTjplLncsaT0iIj09PWUuaD9OYU46ZS5oLFtuLHNdPVswLDBdO3N3aXRjaChlLmFuY2hvclR5cGV8fCIiKXtjYXNlImJvdHRvbUNlbnRlciI6W24sc109W3IvMixpXTticmVhaztjYXNlImJvdHRvbUxlZnQiOltuLHNdPVswLGldO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOltuLHNdPVtyLGldO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjpbbixzXT1bci8yLGkvMl07YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0IjpbbixzXT1bMCxpLzJdO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOltuLHNdPVtyLGkvMl07YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOltuLHNdPVtyLzIsMF07YnJlYWs7Y2FzZSJ0b3BSaWdodCI6W24sc109W3IsMF19c3dpdGNoKGUucm90YXRlfHwwKXtjYXNlIDA6W3QsYV09Wy1uLC1zXTticmVhaztjYXNlIDkwOlt0LGFdPVstcyxuXTtbcixpXT1baSwtcl07YnJlYWs7Y2FzZSAxODA6W3QsYV09W24sc107W3IsaV09Wy1yLC1pXTticmVhaztjYXNlIDI3MDpbdCxhXT1bcywtbl07W3IsaV09Wy1pLHJdfXJldHVybltlLngrdCtNYXRoLm1pbigwLHIpLGUueSthK01hdGgubWluKDAsaSksTWF0aC5hYnMociksTWF0aC5hYnMoaSldfShlKTtzd2l0Y2goYS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09cj9lW2ZzXSgpW0puXS5ub0xheW91dEZhaWx1cmU/IiIhPT1lLnc/TWF0aC5yb3VuZChuLXQud2lkdGgpPD0yOnQud2lkdGg+MjohKCIiIT09ZS5oJiZNYXRoLnJvdW5kKHMtdC5oZWlnaHQpPjIpJiYoIiIhPT1lLnc/TWF0aC5yb3VuZChuLXQud2lkdGgpPD0yfHwwPT09YVtKbl0ubnVtYmVySW5MaW5lJiZ0LmhlaWdodD4yOnQud2lkdGg+Mik6ISFlW2ZzXSgpW0puXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQocy10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQobi10LndpZHRoKTw9Mnx8IWFbdnNdKCkpJiZ0LmhlaWdodD4yKTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm4hIWVbZnNdKClbSm5dLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW0NzXSgpPygiIj09PWUud3x8TWF0aC5yb3VuZChuLXQud2lkdGgpPD0yfHwhYVt2c10oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChzLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtmc10oKVtKbl0ubm9MYXlvdXRGYWlsdXJlKXJldHVybiEwO2lmKCIiPT09ZS5ofHxNYXRoLnJvdW5kKHMraS10LmhlaWdodCk8PTIpcmV0dXJuITA7cmV0dXJuIHMraT5lW2ZzXSgpW0puXS5jdXJyZW50Q29udGVudEFyZWEuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtmc10oKVtKbl0ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fE1hdGgucm91bmQocy10LmhlaWdodCk8PTIpO2RlZmF1bHQ6cmV0dXJuITB9fWNvbnN0IE5vPWVvLnRlbXBsYXRlLmlkLFBvPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsRW89L15IKFxkKykkLyxMbz1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLF9vPVtbWzY2LDc3XSwiaW1hZ2UvYm1wIl0sW1syNTUsMjE2LDI1NV0sImltYWdlL2pwZWciXSxbWzczLDczLDQyLDBdLCJpbWFnZS90aWZmIl0sW1s3Nyw3NywwLDQyXSwiaW1hZ2UvdGlmZiJdLFtbNzEsNzMsNzAsNTYsNTcsOTddLCJpbWFnZS9naWYiXSxbWzEzNyw4MCw3OCw3MSwxMywxMCwyNiwxMF0sImltYWdlL3BuZyJdXTtmdW5jdGlvbiBnZXRCb3JkZXJEaW1zKGUpe2lmKCFlfHwhZS5ib3JkZXIpcmV0dXJue3c6MCxoOjB9O2NvbnN0IHQ9ZS5ib3JkZXJbc3NdKCk7cmV0dXJuIHQ/e3c6dC53aWR0aHNbMF0rdC53aWR0aHNbMl0rdC5pbnNldHNbMF0rdC5pbnNldHNbMl0saDp0LndpZHRoc1sxXSt0LndpZHRoc1szXSt0Lmluc2V0c1sxXSt0Lmluc2V0c1szXX06e3c6MCxoOjB9fWZ1bmN0aW9uIGhhc01hcmdpbihlKXtyZXR1cm4gZS5tYXJnaW4mJihlLm1hcmdpbi50b3BJbnNldHx8ZS5tYXJnaW4ucmlnaHRJbnNldHx8ZS5tYXJnaW4uYm90dG9tSW5zZXR8fGUubWFyZ2luLmxlZnRJbnNldCl9ZnVuY3Rpb24gX3NldFZhbHVlKGUsdCl7aWYoIWUudmFsdWUpe2NvbnN0IHQ9bmV3IFZhbHVlKHt9KTtlW2puXSh0KTtlLnZhbHVlPXR9ZS52YWx1ZVt6c10odCl9ZnVuY3Rpb24qZ2V0Q29udGFpbmVkQ2hpbGRyZW4oZSl7Zm9yKGNvbnN0IHQgb2YgZVtjc10oKSl0IGluc3RhbmNlb2YgU3ViZm9ybVNldD95aWVsZCp0W2xzXSgpOnlpZWxkIHR9ZnVuY3Rpb24gaXNSZXF1aXJlZChlKXtyZXR1cm4iZXJyb3IiPT09ZS52YWxpZGF0ZT8ubnVsbFRlc3R9ZnVuY3Rpb24gc2V0VGFiSW5kZXgoZSl7Zm9yKDtlOyl7aWYoIWUudHJhdmVyc2FsKXtlWyRzXT1lW2RzXSgpWyRzXTtyZXR1cm59aWYoZVskc10pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS50cmF2ZXJzYWxbY3NdKCkpaWYoIm5leHQiPT09YS5vcGVyYXRpb24pe3Q9YTticmVha31pZighdHx8IXQucmVmKXtlWyRzXT1lW2RzXSgpWyRzXTtyZXR1cm59Y29uc3QgYT1lW2ZzXSgpO2VbJHNdPSsrYVskc107Y29uc3Qgcj1hW3FzXSh0LnJlZixlKTtpZighcilyZXR1cm47ZT1yWzBdfX1mdW5jdGlvbiBhcHBseUFzc2lzdChlLHQpe2NvbnN0IGE9ZS5hc3Npc3Q7aWYoYSl7Y29uc3QgZT1hW0tzXSgpO2UmJih0LnRpdGxlPWUpO2NvbnN0IHI9YS5yb2xlLm1hdGNoKEVvKTtpZihyKXtjb25zdCBlPSJoZWFkaW5nIixhPXJbMV07dC5yb2xlPWU7dFsiYXJpYS1sZXZlbCJdPWF9fWlmKCJ0YWJsZSI9PT1lLmxheW91dCl0LnJvbGU9InRhYmxlIjtlbHNlIGlmKCJyb3ciPT09ZS5sYXlvdXQpdC5yb2xlPSJyb3ciO2Vsc2V7Y29uc3QgYT1lW2RzXSgpOyJyb3ciPT09YS5sYXlvdXQmJih0LnJvbGU9IlRIIj09PWEuYXNzaXN0Py5yb2xlPyJjb2x1bW5oZWFkZXIiOiJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW0duXT90LnNwZWFrW0duXTp0LnRvb2xUaXA/dC50b29sVGlwW0duXTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W3tuYW1lOiJzcGFuIixhdHRyaWJ1dGVzOntzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSx2YWx1ZTplfV19KX1mdW5jdGlvbiBzZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbZnNdKCk7aWYobnVsbD09PXRbSm5dLmZpcnN0VW5zcGxpdHRhYmxlKXt0W0puXS5maXJzdFVuc3BsaXR0YWJsZT1lO3RbSm5dLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbZnNdKCk7dFtKbl0uZmlyc3RVbnNwbGl0dGFibGU9PT1lJiYodFtKbl0ubm9MYXlvdXRGYWlsdXJlPSExKX1mdW5jdGlvbiBoYW5kbGVCcmVhayhlKXtpZihlW0puXSlyZXR1cm4hMTtlW0puXT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCJhdXRvIj09PWUudGFyZ2V0VHlwZSlyZXR1cm4hMTtjb25zdCB0PWVbZnNdKCk7bGV0IGE9bnVsbDtpZihlLnRhcmdldCl7YT10W3FzXShlLnRhcmdldCxlW2RzXSgpKTtpZighYSlyZXR1cm4hMTthPWFbMF19Y29uc3R7Y3VycmVudFBhZ2VBcmVhOnIsY3VycmVudENvbnRlbnRBcmVhOml9PXRbSm5dO2lmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2EgaW5zdGFuY2VvZiBQYWdlQXJlYXx8KGE9bnVsbCk7aWYoZS5zdGFydE5ldyl7ZVtKbl0udGFyZ2V0PWF8fHI7cmV0dXJuITB9aWYoYSYmYSE9PXIpe2VbSm5dLnRhcmdldD1hO3JldHVybiEwfXJldHVybiExfWEgaW5zdGFuY2VvZiBDb250ZW50QXJlYXx8KGE9bnVsbCk7Y29uc3Qgbj1hJiZhW2RzXSgpO2xldCBzLG89bjtpZihlLnN0YXJ0TmV3KWlmKGEpe2NvbnN0IGU9bi5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihpKSxyPWUuaW5kZXhPZihhKTstMSE9PXQmJnQ8ciYmKG89bnVsbCk7cz1yLTF9ZWxzZSBzPXIuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKTtlbHNle2lmKCFhfHxhPT09aSlyZXR1cm4hMTtzPW4uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKS0xO289bj09PXI/bnVsbDpufWVbSm5dLnRhcmdldD1vO2VbSm5dLmluZGV4PXM7cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGEpe2NvbnN0IHI9ZVtmc10oKSxpPXJbSm5dLm5vTGF5b3V0RmFpbHVyZSxuPXRbdXNdO3RbdXNdPSgpPT5lO3JbSm5dLm5vTGF5b3V0RmFpbHVyZT0hMDtjb25zdCBzPXRbS3NdKGEpO2VbVW5dKHMuaHRtbCxzLmJib3gpO3JbSm5dLm5vTGF5b3V0RmFpbHVyZT1pO3RbdXNdPW59Y2xhc3MgQXBwZWFyYW5jZUZpbHRlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYXBwZWFyYW5jZUZpbHRlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQXJjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPWdldEludGVnZXIoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT1nZXRGbG9hdCh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W0tzXSgpe2NvbnN0IGU9dGhpcy5lZGdlfHxuZXcgRWRnZSh7fSksdD1lW1lzXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlP09iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbWXNdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgcjtjb25zdCBpPXt4bWxuczpQbyxzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb3ZlcmZsb3c6InZpc2libGUifX07aWYoMzYwPT09dGhpcy5zd2VlcEFuZ2xlKXI9e25hbWU6ImVsbGlwc2UiLGF0dHJpYnV0ZXM6e3htbG5zOlBvLGN4OiI1MCUiLGN5OiI1MCUiLHJ4OiI1MCUiLHJ5OiI1MCUiLHN0eWxlOmF9fTtlbHNle2NvbnN0IGU9dGhpcy5zdGFydEFuZ2xlKk1hdGguUEkvMTgwLHQ9dGhpcy5zd2VlcEFuZ2xlKk1hdGguUEkvMTgwLG49dGhpcy5zd2VlcEFuZ2xlPjE4MD8xOjAsW3MsbyxjLGxdPVs1MCooMStNYXRoLmNvcyhlKSksNTAqKDEtTWF0aC5zaW4oZSkpLDUwKigxK01hdGguY29zKGUrdCkpLDUwKigxLU1hdGguc2luKGUrdCkpXTtyPXtuYW1lOiJwYXRoIixhdHRyaWJ1dGVzOnt4bWxuczpQbyxkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtufSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IG49e25hbWU6InN2ZyIsY2hpbGRyZW46W3JdLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbZHNdKClbZHNdKCkpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbbl19KTtuLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKG4pfX1jbGFzcyBBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJhcmVhIiwhMCk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW2xzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtGc10oKXtyZXR1cm4hMH1beHNdKCl7cmV0dXJuITB9W1VuXShlLHQpe2NvbnN0W2EscixpLG5dPXQ7dGhpc1tKbl0ud2lkdGg9TWF0aC5tYXgodGhpc1tKbl0ud2lkdGgsYStpKTt0aGlzW0puXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tKbl0uaGVpZ2h0LHIrbik7dGhpc1tKbl0uY2hpbGRyZW4ucHVzaChlKX1bdHNdKCl7cmV0dXJuIHRoaXNbSm5dLmF2YWlsYWJsZVNwYWNlfVtLc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsInBvc2l0aW9uIiksYT17c3R5bGU6dCxpZDp0aGlzW1pzXSxjbGFzczpbInhmYUFyZWEiXX07aXNQcmludE9ubHkodGhpcykmJmEuY2xhc3MucHVzaCgieGZhUHJpbnRPbmx5Iik7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3Qgcj1bXTt0aGlzW0puXT17Y2hpbGRyZW46cix3aWR0aDowLGhlaWdodDowLGF2YWlsYWJsZVNwYWNlOmV9O2NvbnN0IGk9dGhpc1tYbl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsImV4Y2xHcm91cCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pLGluY2x1ZGU6ITB9KTtpZighaS5zdWNjZXNzKXtpZihpLmlzQnJlYWsoKSlyZXR1cm4gaTtkZWxldGUgdGhpc1tKbl07cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10LndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzW0puXS53aWR0aCk7dC5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXNbSm5dLmhlaWdodCk7Y29uc3Qgbj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46cn0scz1bdGhpcy54LHRoaXMueSx0aGlzW0puXS53aWR0aCx0aGlzW0puXS5oZWlnaHRdO2RlbGV0ZSB0aGlzW0puXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKG4scyl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYXNzaXN0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJvbGU9ZS5yb2xlfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zcGVhaz1udWxsO3RoaXMudG9vbFRpcD1udWxsfVtLc10oKXtyZXR1cm4gdGhpcy50b29sVGlwPy5bR25dfHxudWxsfX1jbGFzcyBCYXJjb2RlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJiYXJjb2RlIiwhMCk7dGhpcy5jaGFyRW5jb2Rpbmc9Z2V0S2V5d29yZCh7ZGF0YTplLmNoYXJFbmNvZGluZz9lLmNoYXJFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSk7dGhpcy5jaGVja3N1bT1nZXRTdHJpbmdPcHRpb24oZS5jaGVja3N1bSxbIm5vbmUiLCIxbW9kMTAiLCIxbW9kMTBfMW1vZDExIiwiMm1vZDEwIiwiYXV0byJdKTt0aGlzLmRhdGFDb2x1bW5Db3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUNvbHVtbkNvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5kYXRhTGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5kYXRhTGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5kYXRhUHJlcD1nZXRTdHJpbmdPcHRpb24oZS5kYXRhUHJlcCxbIm5vbmUiLCJmbGF0ZUNvbXByZXNzIl0pO3RoaXMuZGF0YVJvd0NvdW50PWdldEludGVnZXIoe2RhdGE6ZS5kYXRhUm93Q291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmVuZENoYXI9ZS5lbmRDaGFyfHwiIjt0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsPWdldEludGVnZXIoe2RhdGE6ZS5lcnJvckNvcnJlY3Rpb25MZXZlbCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9OH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tb2R1bGVIZWlnaHQ9Z2V0TWVhc3VyZW1lbnQoZS5tb2R1bGVIZWlnaHQsIjVtbSIpO3RoaXMubW9kdWxlV2lkdGg9Z2V0TWVhc3VyZW1lbnQoZS5tb2R1bGVXaWR0aCwiMC4yNW1tIik7dGhpcy5wcmludENoZWNrRGlnaXQ9Z2V0SW50ZWdlcih7ZGF0YTplLnByaW50Q2hlY2tEaWdpdCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucm93Q29sdW1uUmF0aW89Z2V0UmF0aW8oZS5yb3dDb2x1bW5SYXRpbyk7dGhpcy5zdGFydENoYXI9ZS5zdGFydENoYXJ8fCIiO3RoaXMudGV4dExvY2F0aW9uPWdldFN0cmluZ09wdGlvbihlLnRleHRMb2NhdGlvbixbImJlbG93IiwiYWJvdmUiLCJhYm92ZUVtYmVkZGVkIiwiYmVsb3dFbWJlZGRlZCIsIm5vbmUiXSk7dGhpcy50cnVuY2F0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUudHJ1bmNhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZT9lLnR5cGUudG9Mb3dlckNhc2UoKToiIixbImF6dGVjIiwiY29kYWJhciIsImNvZGUyb2Y1aW5kdXN0cmlhbCIsImNvZGUyb2Y1aW50ZXJsZWF2ZWQiLCJjb2RlMm9mNW1hdHJpeCIsImNvZGUyb2Y1c3RhbmRhcmQiLCJjb2RlM29mOSIsImNvZGUzb2Y5ZXh0ZW5kZWQiLCJjb2RlMTEiLCJjb2RlNDkiLCJjb2RlOTMiLCJjb2RlMTI4IiwiY29kZTEyOGEiLCJjb2RlMTI4YiIsImNvZGUxMjhjIiwiY29kZTEyOHNzY2MiLCJkYXRhbWF0cml4IiwiZWFuOCIsImVhbjhhZGQyIiwiZWFuOGFkZDUiLCJlYW4xMyIsImVhbjEzYWRkMiIsImVhbjEzYWRkNSIsImVhbjEzcHdjZCIsImZpbSIsImxvZ21hcnMiLCJtYXhpY29kZSIsIm1zaSIsInBkZjQxNyIsInBkZjQxN21hY3JvIiwicGxlc3NleSIsInBvc3RhdXNjdXN0MiIsInBvc3RhdXNjdXN0MyIsInBvc3RhdXNyZXBseXBhaWQiLCJwb3N0YXVzc3RhbmRhcmQiLCJwb3N0dWtybTRzY2MiLCJwb3N0dXNkcGJjIiwicG9zdHVzaW1iIiwicG9zdHVzc3RhbmRhcmQiLCJwb3N0dXM1emlwIiwicXJjb2RlIiwicmZpZCIsInJzczE0IiwicnNzMTRleHBhbmRlZCIsInJzczE0bGltaXRlZCIsInJzczE0c3RhY2tlZCIsInJzczE0c3RhY2tlZG9tbmkiLCJyc3MxNHRydW5jYXRlZCIsInRlbGVwZW4iLCJ1Y2MxMjgiLCJ1Y2MxMjhyYW5kb20iLCJ1Y2MxMjhzc2NjIiwidXBjYSIsInVwY2FhZGQyIiwidXBjYWFkZDUiLCJ1cGNhcHdjZCIsInVwY2UiLCJ1cGNlYWRkMiIsInVwY2VhZGQ1IiwidXBjZWFuMiIsInVwY2VhbjUiLCJ1cHNtYXhpY29kZSJdKTt0aGlzLnVwc01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUudXBzTW9kZSxbInVzQ2FycmllciIsImludGVybmF0aW9uYWxDYXJyaWVyIiwic2VjdXJlU3ltYm9sIiwic3RhbmRhcmRTeW1ib2wiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2lkZU5hcnJvd1JhdGlvPWdldFJhdGlvKGUud2lkZU5hcnJvd1JhdGlvKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCaW5kIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD1nZXRTdHJpbmdPcHRpb24oZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYmluZEl0ZW1zIik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5sYWJlbFJlZj1lLmxhYmVsUmVmfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy52YWx1ZVJlZj1lLnZhbHVlUmVmfHwiIn19Y2xhc3MgQm9va2VuZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYm9vbGVhbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtLc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKDE9PT10aGlzW0duXT8iMSI6IjAiKX19Y2xhc3MgQm9yZGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJib3JkZXIiLCEwKTt0aGlzLmJyZWFrPWdldFN0cmluZ09wdGlvbihlLmJyZWFrLFsiY2xvc2UiLCJvcGVuIl0pO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtzc10oKXtpZighdGhpc1tKbl0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKGU9PmUudGhpY2tuZXNzKSxhPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7YVswXT10aGlzLm1hcmdpbi50b3BJbnNldDthWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7YVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDthWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW0puXT17d2lkdGhzOnQsaW5zZXRzOmEsZWRnZXM6ZX19cmV0dXJuIHRoaXNbSm5dfVtZc10oKXtjb25zdHtlZGdlczplfT10aGlzW3NzXSgpLHQ9ZS5tYXAoZT0+e2NvbnN0IHQ9ZVtZc10oKTt0LmNvbG9yfHw9IiMwMDAwMDAiO3JldHVybiB0fSksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGEsdGhpcy5tYXJnaW5bWXNdKCkpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbWXNdKCkpO2lmKHRoaXMuY29ybmVyLmNoaWxkcmVuLnNvbWUoZT0+MCE9PWUucmFkaXVzKSl7Y29uc3QgZT10aGlzLmNvcm5lci5jaGlsZHJlbi5tYXAoZT0+ZVtZc10oKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBhPWUubGVuZ3RoO2E8NDthKyspZS5wdXNoKHQpfWEuYm9yZGVyUmFkaXVzPWUubWFwKGU9PmUucmFkaXVzKS5qb2luKCIgIil9c3dpdGNoKHRoaXMucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjpjYXNlImhpZGRlbiI6YS5ib3JkZXJTdHlsZT0iIjticmVhaztjYXNlImluYWN0aXZlIjphLmJvcmRlclN0eWxlPSJub25lIjticmVhaztkZWZhdWx0OmEuYm9yZGVyU3R5bGU9dC5tYXAoZT0+ZS5zdHlsZSkuam9pbigiICIpfWEuYm9yZGVyV2lkdGg9dC5tYXAoZT0+ZS53aWR0aCkuam9pbigiICIpO2EuYm9yZGVyQ29sb3I9dC5tYXAoZT0+ZS5jb2xvcikuam9pbigiICIpO3JldHVybiBhfX1jbGFzcyBCcmVhayBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYnJlYWsiLCEwKTt0aGlzLmFmdGVyPWdldFN0cmluZ09wdGlvbihlLmFmdGVyLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5hZnRlclRhcmdldD1lLmFmdGVyVGFyZ2V0fHwiIjt0aGlzLmJlZm9yZT1nZXRTdHJpbmdPcHRpb24oZS5iZWZvcmUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmJlZm9yZVRhcmdldD1lLmJlZm9yZVRhcmdldHx8IiI7dGhpcy5ib29rZW5kTGVhZGVyPWUuYm9va2VuZExlYWRlcnx8IiI7dGhpcy5ib29rZW5kVHJhaWxlcj1lLmJvb2tlbmRUcmFpbGVyfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcmZsb3dMZWFkZXI9ZS5vdmVyZmxvd0xlYWRlcnx8IiI7dGhpcy5vdmVyZmxvd1RhcmdldD1lLm92ZXJmbG93VGFyZ2V0fHwiIjt0aGlzLm92ZXJmbG93VHJhaWxlcj1lLm92ZXJmbG93VHJhaWxlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQnJlYWtBZnRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT1nZXRTdHJpbmdPcHRpb24oZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJicmVha0JlZm9yZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT1nZXRTdHJpbmdPcHRpb24oZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9W0tzXShlKXt0aGlzW0puXT17fTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfX1jbGFzcyBCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImJ1dHRvbiIsITApO3RoaXMuaGlnaGxpZ2h0PWdldFN0cmluZ09wdGlvbihlLmhpZ2hsaWdodCxbImludmVydGVkIiwibm9uZSIsIm91dGxpbmUiLCJwdXNoIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W0tzXShlKXtjb25zdCB0PXRoaXNbZHNdKClbZHNdKCksYT17bmFtZToiYnV0dG9uIixhdHRyaWJ1dGVzOntpZDp0aGlzW1pzXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PXJlY292ZXJKc1VSTChlLnNjcmlwdFtHbl0pO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9Zml4VVJMKHQudXJsKTtyJiZhLmNoaWxkcmVuLnB1c2goe25hbWU6ImEiLGF0dHJpYnV0ZXM6e2lkOiJsaW5rIit0aGlzW1pzXSxocmVmOnIsbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoYSl9fWNsYXNzIENhbGN1bGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldFN0cmluZ09wdGlvbihlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY2FwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wbGFjZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUucGxhY2VtZW50LFsibGVmdCIsImJvdHRvbSIsImlubGluZSIsInJpZ2h0IiwidG9wIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZXNlcnZlPU1hdGguY2VpbChnZXRNZWFzdXJlbWVudChlLnJlc2VydmUpKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudmFsdWU9bnVsbH1benNdKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVtzc10oZSl7aWYoIXRoaXNbSm5dKXtsZXR7d2lkdGg6dCxoZWlnaHQ6YX09ZTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQ9dGhpcy5yZXNlcnZlPD0wP3Q6dGhpcy5yZXNlcnZlO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6YT10aGlzLnJlc2VydmU8PTA/YTp0aGlzLnJlc2VydmV9dGhpc1tKbl09bGF5b3V0Tm9kZSh0aGlzLHt3aWR0aDp0LGhlaWdodDphfSl9cmV0dXJuIHRoaXNbSm5dfVtLc10oZSl7aWYoIXRoaXMudmFsdWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpc1tfc10oKTtjb25zdCB0PXRoaXMudmFsdWVbS3NdKGUpLmh0bWw7aWYoIXQpe3RoaXNbTHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgYT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDphfT10aGlzW3NzXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWF9fWNvbnN0IHI9W107InN0cmluZyI9PXR5cGVvZiB0P3IucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTpyLnB1c2godCk7Y29uc3QgaT10b1N0eWxlKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoaS53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKGkuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKX1zZXRQYXJhKHRoaXMsbnVsbCx0KTt0aGlzW0xzXSgpO3RoaXMucmVzZXJ2ZT1hO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6aSxjbGFzczpbInhmYUNhcHRpb24iXX0sY2hpbGRyZW46cn0pfX1jbGFzcyBDZXJ0aWZpY2F0ZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY2VydGlmaWNhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ2VydGlmaWNhdGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJjaGVja0J1dHRvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXJrPWdldFN0cmluZ09wdGlvbihlLm1hcmssWyJkZWZhdWx0IiwiY2hlY2siLCJjaXJjbGUiLCJjcm9zcyIsImRpYW1vbmQiLCJzcXVhcmUiLCJzdGFyIl0pO3RoaXMuc2hhcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2hhcGUsWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnNpemU9Z2V0TWVhc3VyZW1lbnQoZS5zaXplLCIxMHB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtLc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsIm1hcmdpbiIpLGE9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1hO2xldCByLGksbjtjb25zdCBzPXRoaXNbZHNdKClbZHNdKCksbz1zLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmcy5pdGVtcy5jaGlsZHJlblswXVtLc10oKS5odG1sfHxbXSxjPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGw9KHMudmFsdWU/LltHc10oKXx8Im9mZiIpPT09Yy5vbnx8dm9pZCAwLGg9c1t1c10oKSx1PXNbWnNdO2xldCBkO2lmKGggaW5zdGFuY2VvZiBFeGNsR3JvdXApe249aFtac107cj0icmFkaW8iO2k9InhmYVJhZGlvIjtkPWhbVm5dPy5bWnNdfHxoW1pzXX1lbHNle3I9ImNoZWNrYm94IjtpPSJ4ZmFDaGVja2JveCI7ZD1zW1ZuXT8uW1pzXXx8c1tac119Y29uc3QgZj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltpXSxzdHlsZTp0LGZpZWxkSWQ6dSxkYXRhSWQ6ZCx0eXBlOnIsY2hlY2tlZDpsLHhmYU9uOmMub24seGZhT2ZmOmMub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwocyksImFyaWEtcmVxdWlyZWQiOiExfX07biYmKGYuYXR0cmlidXRlcy5uYW1lPW4pO2lmKGlzUmVxdWlyZWQocykpe2YuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2YuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbZl19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtLc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGE9dGhpc1tkc10oKVtkc10oKSxyPXtmb250U2l6ZTpgY2FsYygke2EuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS10b3RhbC1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAsbj0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7bj0xLXR9Y29uc3Qgcz1lLmNoaWxkcmVuW3RdW0tzXSgpLmh0bWwsbz1lLmNoaWxkcmVuW25dW0tzXSgpLmh0bWw7bGV0IGM9ITE7Y29uc3QgbD1hLnZhbHVlPy5bR3NdKCl8fCIiO2ZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxzW2VdLHN0eWxlOnJ9LHZhbHVlOnNbZV19O29bZV09PT1sJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWM9ITApO2kucHVzaCh0KX1jfHxpLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCBuPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6YVtac10sZGF0YUlkOmFbVm5dPy5bWnNdfHxhW1pzXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGEpKXtuWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYobi5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOmksYXR0cmlidXRlczpufV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFthLHIsaV09dDtpZighZSlyZXR1cm57cjphLGc6cixiOml9O2NvbnN0IG49ZS5zcGxpdCgiLCIsMykubWFwKGU9Pk1hdGhDbGFtcChwYXJzZUludChlLnRyaW0oKSwxMCksMCwyNTUpKS5tYXAoZT0+aXNOYU4oZSk/MDplKTtpZihuLmxlbmd0aDwzKXJldHVybntyOmEsZzpyLGI6aX07W2EscixpXT1uO3JldHVybntyOmEsZzpyLGI6aX19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W3BzXSgpe3JldHVybiExfVtZc10oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W0tzXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGE9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZhLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczphLGlkOnRoaXNbWnNdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtZc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe2NvbnN0IGU9dGhpc1tHbl0udHJpbSgpO3RoaXNbR25dPWU/bmV3IERhdGUoZSk6bnVsbH1bS3NdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW0duXT90aGlzW0duXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtZbl0oKXtjb25zdCBlPXRoaXNbR25dLnRyaW0oKTt0aGlzW0duXT1lP25ldyBEYXRlKGUpOm51bGx9W0tzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tHbl0/dGhpc1tHbl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W0tzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tkc10oKVtkc10oKSxyPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW1pzXSxkYXRhSWQ6YVtWbl0/Lltac118fGFbWnNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe3IuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO3IuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbcl19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW0duXS50cmltKCkpO3RoaXNbR25dPWlzTmFOKGUpP251bGw6ZX1bS3NdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tHbl0/dGhpc1tHbl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W3pzXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bS3NdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW19zXSgpO2NvbnN0IHQ9dGhpcy53LGE9dGhpcy5oLHt3OnIsaDppLGlzQnJva2VuOm59PWxheW91dE5vZGUodGhpcyxlKTtpZihyJiYiIj09PXRoaXMudyl7aWYobiYmdGhpc1t1c10oKVt2c10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1yfWkmJiIiPT09dGhpcy5oJiYodGhpcy5oPWkpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgcz10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMscyk7aWYocy5tYXJnaW4pe3MucGFkZGluZz1zLm1hcmdpbjtkZWxldGUgcy5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGM9e3N0eWxlOnMsaWQ6dGhpc1tac10sY2xhc3M6b307dGhpcy5uYW1lJiYoYy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgbD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsYyk7Y29uc3QgaD1jb21wdXRlQmJveCh0aGlzLGwsZSksdT10aGlzLnZhbHVlP3RoaXMudmFsdWVbS3NdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09dSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxsKSxoKX1sLmNoaWxkcmVuLnB1c2godSk7c2V0UGFyYSh0aGlzLHMsdSk7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxsKSxoKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1lzXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW1lzXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVt3c10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W1JzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVbT3NdPT09ZW8ueGh0bWwuaWQpe3RoaXNbR25dPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbR25dPWU7cmV0dXJuITB9cmV0dXJuITF9W0tzXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbR25dP3RoaXNbR25dW0tzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W3hzXSgpe3JldHVybiEwfVtwc10oKXtyZXR1cm4hMH1benNdKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtqbl0oZSk7dC52YWx1ZT1lfXQudmFsdWVbenNdKGUpfX1bdnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbSm5dLmF0dGVtcHQmJnRoaXNbSm5dLm51bWJlckluTGluZT4wfHx0aGlzW2RzXSgpW3ZzXSgpfVtDc10oKXtjb25zdCBlPXRoaXNbdXNdKCk7aWYoIWVbQ3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tKbl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tKbl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tKbl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtKbl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbSm5dLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W1puXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W1VuXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVt0c10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W0tzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW1pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsYS5jbGFzcyk7dGhpc1tKbl18fD1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5hc3NpZ24odGhpc1tKbl0se2NoaWxkcmVuOnQsYXR0cmlidXRlczphLGF0dGVtcHQ6MCxsaW5lOm51bGwsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3Qgcj10aGlzW0NzXSgpO3J8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IGk9bmV3IFNldChbImZpZWxkIl0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW3VzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW0puXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW0puXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG49dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxzPVsieGZhRXhjbGdyb3VwIl0sbz1sYXlvdXRDbGFzcyh0aGlzKTtvJiZzLnB1c2gobyk7aXNQcmludE9ubHkodGhpcykmJnMucHVzaCgieGZhUHJpbnRPbmx5Iik7YS5zdHlsZT1uO2EuY2xhc3M9czt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTt0aGlzW19zXSgpO2NvbnN0IGM9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbD1jPzI6MTtmb3IoO3RoaXNbSm5dLmF0dGVtcHQ8bDt0aGlzW0puXS5hdHRlbXB0Kyspe2MmJjE9PT10aGlzW0puXS5hdHRlbXB0JiYodGhpc1tKbl0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tYbl0oe2ZpbHRlcjppLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbTHNdKCk7cmV0dXJuIGV9aWYoYyYmMD09PXRoaXNbSm5dLmF0dGVtcHQmJjA9PT10aGlzW0puXS5udW1iZXJJbkxpbmUmJiF0aGlzW2ZzXSgpW0puXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbSm5dLmF0dGVtcHQ9bDticmVha319dGhpc1tMc10oKTtyfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbSm5dLmF0dGVtcHQ9PT1sKXtyfHxkZWxldGUgdGhpc1tKbl07cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1sZXQgaD0wLHU9MDtpZih0aGlzLm1hcmdpbil7aD10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDt1PXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWNvbnN0IGQ9TWF0aC5tYXgodGhpc1tKbl0ud2lkdGgraCx0aGlzLnd8fDApLGY9TWF0aC5tYXgodGhpc1tKbl0uaGVpZ2h0K3UsdGhpcy5ofHwwKSxnPVt0aGlzLngsdGhpcy55LGQsZl07IiI9PT10aGlzLncmJihuLndpZHRoPW1lYXN1cmVUb1N0cmluZyhkKSk7IiI9PT10aGlzLmgmJihuLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZikpO2NvbnN0IHA9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7ZGVsZXRlIHRoaXNbSm5dO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHApLGcpfX1jbGFzcyBFeGVjdXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJleGVjdXRlIik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5leGVjdXRlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5leGVjdXRlVHlwZSxbImltcG9ydCIsInJlbWVyZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEV4dHJhcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRmllbGQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImZpZWxkIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMuZm9ybWF0PW51bGw7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVt4c10oKXtyZXR1cm4hMH1benNdKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVtLc10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW2dzXT10aGlzW2dzXTt0aGlzW2puXSh0aGlzLnVpKTtsZXQgZTtzd2l0Y2godGhpcy5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2Nhc2UgMDplPW5ldyBUZXh0RWRpdCh7fSk7dGhpcy51aS50ZXh0RWRpdD1lO2JyZWFrO2Nhc2UgMTplPW5ldyBDaGVja0J1dHRvbih7fSk7dGhpcy51aS5jaGVja0J1dHRvbj1lO2JyZWFrO2Nhc2UgMjplPW5ldyBDaG9pY2VMaXN0KHt9KTt0aGlzLnVpLmNob2ljZUxpc3Q9ZX10aGlzLnVpW2puXShlKX1pZighdGhpcy51aXx8ImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bSm5dO3RoaXNbX3NdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW0tzXShlKS5odG1sOm51bGwsYT10aGlzLncscj10aGlzLmg7bGV0IGk9MCxuPTA7aWYodGhpcy5tYXJnaW4pe2k9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7bj10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgcz1udWxsO2lmKCIiPT09dGhpcy53fHwiIj09PXRoaXMuaCl7bGV0IHQ9bnVsbCxhPW51bGwscj0wLG89MDtpZih0aGlzLnVpLmNoZWNrQnV0dG9uKXI9bz10aGlzLnVpLmNoZWNrQnV0dG9uLnNpemU7ZWxzZXtjb25zdHt3OnQsaDphfT1sYXlvdXROb2RlKHRoaXMsZSk7aWYobnVsbCE9PXQpe3I9dDtvPWF9ZWxzZSBvPWZ1bmN0aW9uIGZvbnRzX2dldE1ldHJpY3MoZSx0PSExKXtsZXQgYT1udWxsO2lmKGUpe2NvbnN0IHQ9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSkscj1lW2dzXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUscil9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3Qgcj1lLnNpemV8fDEwLGk9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbj12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OmkqcixsaW5lR2FwOm4qcixsaW5lTm9HYXA6TWF0aC5tYXgoMSxpLW4pKnJ9fSh0aGlzLmZvbnQsITApLmxpbmVOb0dhcH1zPWdldEJvcmRlckRpbXModGhpcy51aVtzc10oKSk7cis9cy53O28rPXMuaDtpZih0aGlzLmNhcHRpb24pe2NvbnN0e3c6aSxoOm4saXNCcm9rZW46c309dGhpcy5jYXB0aW9uW3NzXShlKTtpZihzJiZ0aGlzW3VzXSgpW3ZzXSgpKXt0aGlzW0xzXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dD1pO2E9bjtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dCs9cjticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmErPW99fWVsc2V7dD1yO2E9b31pZih0JiYiIj09PXRoaXMudyl7dCs9aTt0aGlzLnc9TWF0aC5taW4odGhpcy5tYXhXPD0wPzEvMDp0aGlzLm1heFcsdGhpcy5taW5XKzE8dD90OnRoaXMubWluVyl9aWYoYSYmIiI9PT10aGlzLmgpe2ErPW47dGhpcy5oPU1hdGgubWluKHRoaXMubWF4SDw9MD8xLzA6dGhpcy5tYXhILHRoaXMubWluSCsxPGE/YTp0aGlzLm1pbkgpfX10aGlzW0xzXSgpO2ZpeERpbWVuc2lvbnModGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9cjt0aGlzW0xzXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtjb25zdCBvPXRvU3R5bGUodGhpcywiZm9udCIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJwcmVzZW5jZSIsIm1hcmdpbiIsImhBbGlnbiIpO3NldE1pbk1heERpbWVuc2lvbnModGhpcyxvKTtjb25zdCBjPVsieGZhRmllbGQiXTt0aGlzLmZvbnQmJmMucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZjLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGw9e3N0eWxlOm8saWQ6dGhpc1tac10sY2xhc3M6Y307aWYoby5tYXJnaW4pe28ucGFkZGluZz1vLm1hcmdpbjtkZWxldGUgby5tYXJnaW59c2V0QWNjZXNzKHRoaXMsYyk7dGhpcy5uYW1lJiYobC54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgaD1bXSx1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bCxjaGlsZHJlbjpofTthcHBseUFzc2lzdCh0aGlzLGwpO2NvbnN0IGQ9dGhpcy5ib3JkZXI/dGhpcy5ib3JkZXJbWXNdKCk6bnVsbCxmPWNvbXB1dGVCYm94KHRoaXMsdSxlKSxnPXRoaXMudWlbS3NdKCkuaHRtbDtpZighZyl7T2JqZWN0LmFzc2lnbihvLGQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHUpLGYpfXRoaXNbJHNdJiYoZy5jaGlsZHJlbj8uWzBdP2cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50YWJpbmRleD10aGlzWyRzXTpnLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1skc10pO2cuYXR0cmlidXRlcy5zdHlsZXx8PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHA9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PWcuY2hpbGRyZW4ubGVuZ3RoJiYoW3BdPWcuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oZy5hdHRyaWJ1dGVzLnN0eWxlLGQpfWVsc2UgT2JqZWN0LmFzc2lnbihvLGQpO2gucHVzaChnKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KWcuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW0tzXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW0dzXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3NzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW0tzXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihnLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1nLmNoaWxkcmVuWzBdLm5hbWU/Zy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6Zy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmZy5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe3M9c3x8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3NzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bc3NdKGUpLmgpO2NvbnN0IGE9dGhpcy5oLXQtbi1zLmg7Zy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoYSl9ZWxzZSBnLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn1wJiZnLmNoaWxkcmVuLnB1c2gocCk7aWYoIXQpe2cuYXR0cmlidXRlcy5jbGFzcyYmZy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9YTt0aGlzLmg9cjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxmKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7Zy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3ModSxmKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtnLmF0dHJpYnV0ZXMuY2xhc3N8fD1bXTtnLmNoaWxkcmVuLnNwbGljZSgwLDAsdCk7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJpbmxpbmUiOmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7YnJlYWs7Y2FzZSJyaWdodCI6Zy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVJpZ2h0Iik7YnJlYWs7Y2FzZSJ0b3AiOmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFUb3AiKTticmVhaztjYXNlImJvdHRvbSI6Zy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUJvdHRvbSIpfXRoaXMudz1hO3RoaXMuaD1yO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHUpLGYpfX1jbGFzcyBGaWxsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtZc10oKXtjb25zdCBlPXRoaXNbZHNdKCksdD1lW2RzXSgpW2RzXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcj0iY29sb3IiLGk9cjtpZihlIGluc3RhbmNlb2YgQm9yZGVyKXtyPSJiYWNrZ3JvdW5kLWNvbG9yIjtpPSJiYWNrZ3JvdW5kIjt0IGluc3RhbmNlb2YgVWkmJihhLmJhY2tncm91bmRDb2xvcj0id2hpdGUiKX1pZihlIGluc3RhbmNlb2YgUmVjdGFuZ2xlfHxlIGluc3RhbmNlb2YgQXJjKXtyPWk9ImZpbGwiO2EuZmlsbD0id2hpdGUifWZvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJjb2xvciI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZighKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpKWNvbnRpbnVlO2NvbnN0IG49dFtZc10odGhpcy5jb2xvcik7biYmKGFbbi5zdGFydHNXaXRoKCIjIik/cjppXT1uKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yPy52YWx1ZSl7Y29uc3QgZT10aGlzLmNvbG9yW1lzXSgpO2FbZS5zdGFydHNXaXRoKCIjIik/cjppXT1lfXJldHVybiBhfX1jbGFzcyBGaWx0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImZpbHRlciIsITApO3RoaXMuYWRkUmV2b2NhdGlvbkluZm89Z2V0U3RyaW5nT3B0aW9uKGUuYWRkUmV2b2NhdGlvbkluZm8sWyIiLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwibm9uZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZlcnNpb249Z2V0SW50ZWdlcih7ZGF0YTp0aGlzLnZlcnNpb24sZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9NX0pO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1udWxsO3RoaXMuY2VydGlmaWNhdGVzPW51bGw7dGhpcy5kaWdlc3RNZXRob2RzPW51bGw7dGhpcy5lbmNvZGluZ3M9bnVsbDt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW51bGw7dGhpcy5oYW5kbGVyPW51bGw7dGhpcy5sb2NrRG9jdW1lbnQ9bnVsbDt0aGlzLm1kcD1udWxsO3RoaXMucmVhc29ucz1udWxsO3RoaXMudGltZVN0YW1wPW51bGx9fWNsYXNzIEZsb2F0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bWW5dKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbR25dLnRyaW0oKSk7dGhpc1tHbl09aXNOYU4oZSk/bnVsbDplfVtLc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW0duXT90aGlzW0duXS50b1N0cmluZygpOiIiKX19Y2xhc3MgdGVtcGxhdGVfRm9udCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZm9udCIsITApO3RoaXMuYmFzZWxpbmVTaGlmdD1nZXRNZWFzdXJlbWVudChlLmJhc2VsaW5lU2hpZnQpO3RoaXMuZm9udEhvcml6b250YWxTY2FsZT1nZXRGbG9hdCh7ZGF0YTplLmZvbnRIb3Jpem9udGFsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5mb250VmVydGljYWxTY2FsZT1nZXRGbG9hdCh7ZGF0YTplLmZvbnRWZXJ0aWNhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXJuaW5nTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5rZXJuaW5nTW9kZSxbIm5vbmUiLCJwYWlyIl0pO3RoaXMubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudChlLmxldHRlclNwYWNpbmcsIjAiKTt0aGlzLmxpbmVUaHJvdWdoPWdldEludGVnZXIoe2RhdGE6ZS5saW5lVGhyb3VnaCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLmxpbmVUaHJvdWdoUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLmxpbmVUaHJvdWdoUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLm92ZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS5vdmVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLm92ZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLm92ZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnBvc3R1cmU9Z2V0U3RyaW5nT3B0aW9uKGUucG9zdHVyZSxbIm5vcm1hbCIsIml0YWxpYyJdKTt0aGlzLnNpemU9Z2V0TWVhc3VyZW1lbnQoZS5zaXplLCIxMHB0Iik7dGhpcy50eXBlZmFjZT1lLnR5cGVmYWNlfHwiQ291cmllciI7dGhpcy51bmRlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLnVuZGVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLnVuZGVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS51bmRlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndlaWdodD1nZXRTdHJpbmdPcHRpb24oZS53ZWlnaHQsWyJub3JtYWwiLCJib2xkIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGx9W3FuXShlKXtzdXBlcltxbl0oZSk7dGhpc1tnc10udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W1lzXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJmaWxsIiksdD1lLmNvbG9yO2lmKHQpaWYoIiMwMDAwMDAiPT09dClkZWxldGUgZS5jb2xvcjtlbHNlIGlmKCF0LnN0YXJ0c1dpdGgoIiMiKSl7ZS5iYWNrZ3JvdW5kPXQ7ZS5iYWNrZ3JvdW5kQ2xpcD0idGV4dCI7ZS5jb2xvcj0idHJhbnNwYXJlbnQifXRoaXMuYmFzZWxpbmVTaGlmdCYmKGUudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcodGhpcy5iYXNlbGluZVNoaWZ0KSk7ZS5mb250S2VybmluZz0ibm9uZSI9PT10aGlzLmtlcm5pbmdNb2RlPyJub25lIjoibm9ybWFsIjtlLmxldHRlclNwYWNpbmc9bWVhc3VyZVRvU3RyaW5nKHRoaXMubGV0dGVyU3BhY2luZyk7aWYoMCE9PXRoaXMubGluZVRocm91Z2gpe2UudGV4dERlY29yYXRpb249ImxpbmUtdGhyb3VnaCI7Mj09PXRoaXMubGluZVRocm91Z2gmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWlmKDAhPT10aGlzLm92ZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJvdmVybGluZSI7Mj09PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFN0eWxlPXRoaXMucG9zdHVyZTtlLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyguOTkqdGhpcy5zaXplKTtzZXRGb250RmFtaWx5KHRoaXMsdGhpcyx0aGlzW2dzXS5mb250RmluZGVyLGUpO2lmKDAhPT10aGlzLnVuZGVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0idW5kZXJsaW5lIjsyPT09dGhpcy51bmRlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFdlaWdodD10aGlzLndlaWdodDtyZXR1cm4gZX19Y2xhc3MgRm9ybWF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJmb3JtYXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBIYW5kbGVyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiaHlwaGVuYXRpb24iKTt0aGlzLmV4Y2x1ZGVBbGxDYXBzPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlQWxsQ2FwcyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZXhjbHVkZUluaXRpYWxDYXA9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVJbml0aWFsQ2FwLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oeXBoZW5hdGU9Z2V0SW50ZWdlcih7ZGF0YTplLmh5cGhlbmF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wdXNoQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnB1c2hDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5yZW1haW5DaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucmVtYWluQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndvcmRDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUud29yZENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTo3LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgSW1hZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImltYWdlIik7dGhpcy5hc3BlY3Q9Z2V0U3RyaW5nT3B0aW9uKGUuYXNwZWN0LFsiZml0IiwiYWN0dWFsIiwiaGVpZ2h0Iiwibm9uZSIsIndpZHRoIl0pO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbImJhc2U2NCIsIm5vbmUiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bS3NdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIUxvLmhhcyh0aGlzLmNvbnRlbnRUeXBlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBlPXRoaXNbZ3NdLmltYWdlcz8uZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW0duXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPWZ1bmN0aW9uIGZyb21CYXNlNjRVdGlsKGUpe3JldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQ/VWludDhBcnJheS5mcm9tQmFzZTY0KGUpOnN0cmluZ1RvQnl0ZXMoYXRvYihlKSl9KHRoaXNbR25dKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGFdb2YgX28paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKHQsYSk9PnQ9PT1lW2FdKSl7dGhpcy5jb250ZW50VHlwZT1hO2JyZWFrfWlmKCF0aGlzLmNvbnRlbnRUeXBlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IHQ9bmV3IEJsb2IoW2VdLHt0eXBlOnRoaXMuY29udGVudFR5cGV9KTtsZXQgYTtzd2l0Y2godGhpcy5hc3BlY3Qpe2Nhc2UiZml0IjpjYXNlImFjdHVhbCI6YnJlYWs7Y2FzZSJoZWlnaHQiOmE9e2hlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJub25lIjphPXt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIndpZHRoIjphPXt3aWR0aDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn19Y29uc3Qgcj10aGlzW2RzXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImltZyIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFJbWFnZSJdLHN0eWxlOmEsc3JjOlVSTC5jcmVhdGVPYmplY3RVUkwodCksYWx0OnI/YXJpYUxhYmVsKHJbZHNdKCkpOm51bGx9fSl9fWNsYXNzIEltYWdlRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPWdldFN0cmluZ09wdGlvbihlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W0tzXShlKXtyZXR1cm4iZW1iZWQiPT09dGhpcy5kYXRhP0hUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgSW50ZWdlciBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bWW5dKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW0duXS50cmltKCksMTApO3RoaXNbR25dPWlzTmFOKGUpP251bGw6ZX1bS3NdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tHbl0/dGhpc1tHbl0udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImlzc3VlcnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJpdGVtcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5zYXZlPWdldEludGVnZXIoe2RhdGE6ZS5zYXZlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bS3NdKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzW2NzXSgpKWUucHVzaCh0W0dzXSgpKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfX1jbGFzcyBLZWVwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJrZWVwIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjtjb25zdCB0PVsibm9uZSIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXTt0aGlzLmludGFjdD1nZXRTdHJpbmdPcHRpb24oZS5pbnRhY3QsdCk7dGhpcy5uZXh0PWdldFN0cmluZ09wdGlvbihlLm5leHQsdCk7dGhpcy5wcmV2aW91cz1nZXRTdHJpbmdPcHRpb24oZS5wcmV2aW91cyx0KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgS2V5VXNhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPWdldFN0cmluZ09wdGlvbihlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PWdldFN0cmluZ09wdGlvbihlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PWdldFN0cmluZ09wdGlvbihlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PWdldFN0cmluZ09wdGlvbihlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPWdldFN0cmluZ09wdGlvbihlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PWdldFN0cmluZ09wdGlvbihlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPWdldFN0cmluZ09wdGlvbihlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImxpbmUiLCEwKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNsb3BlPWdldFN0cmluZ09wdGlvbihlLnNsb3BlLFsiXFwiLCIvIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVkZ2U9bnVsbH1bS3NdKCl7Y29uc3QgZT10aGlzW2RzXSgpW2RzXSgpLHQ9dGhpcy5lZGdlfHxuZXcgRWRnZSh7fSksYT10W1lzXSgpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxpPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtyLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZyhpKTtyLnN0cm9rZT1hLmNvbG9yO2xldCBuLHMsbyxjLGw9IjEwMCUiLGg9IjEwMCUiO2lmKGUudzw9aSl7W24scyxvLGNdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07bD1yLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1pKXtbbixzLG8sY109WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtoPXIuc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tuLHMsbyxjXT1bMCwwLCIxMDAlIiwiMTAwJSJdOltuLHMsbyxjXT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHU9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpQbyx4MTpuLHkxOnMseDI6byx5MjpjLHN0eWxlOnJ9fV0sYXR0cmlidXRlczp7eG1sbnM6UG8sd2lkdGg6bCxoZWlnaHQ6aCxzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifX19O2lmKGhhc01hcmdpbihlKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3VdfSk7dS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh1KX19Y2xhc3MgTGluZWFyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtZc10oZSl7ZT1lP2VbWXNdKCk6IiNGRkZGRkYiO3JldHVybmBsaW5lYXItZ3JhZGllbnQoJHt0aGlzLnR5cGUucmVwbGFjZSgvKFtSQkxUXSkvLCIgJDEiKS50b0xvd2VyQ2FzZSgpfSwgJHtlfSwgJHt0aGlzLmNvbG9yP3RoaXMuY29sb3JbWXNdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJsb2NrRG9jdW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe3RoaXNbR25dPWdldFN0cmluZ09wdGlvbih0aGlzW0duXSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgTWFuaWZlc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1hcmdpbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD1nZXRNZWFzdXJlbWVudChlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD1nZXRNZWFzdXJlbWVudChlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD1nZXRNZWFzdXJlbWVudChlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PWdldE1lYXN1cmVtZW50KGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bWXNdKCl7cmV0dXJue21hcmdpbjptZWFzdXJlVG9TdHJpbmcodGhpcy50b3BJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLnJpZ2h0SW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5ib3R0b21JbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmxlZnRJbnNldCl9fX1jbGFzcyBNZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz1nZXRJbnRlZ2VyKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPWdldFN0cmluZ09wdGlvbihlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm1lZGl1bSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbWFnaW5nQkJveD1mdW5jdGlvbiBnZXRCQm94KGUpe2NvbnN0IHQ9LTE7aWYoIWUpcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3QgYT1lLnNwbGl0KCIsIiw0KS5tYXAoZT0+Z2V0TWVhc3VyZW1lbnQoZS50cmltKCksIi0xIikpO2lmKGEubGVuZ3RoPDR8fGFbMl08MHx8YVszXTwwKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0W3IsaSxuLHNdPWE7cmV0dXJue3g6cix5Omksd2lkdGg6bixoZWlnaHQ6c319KGUuaW1hZ2luZ0JCb3gpO3RoaXMubG9uZz1nZXRNZWFzdXJlbWVudChlLmxvbmcpO3RoaXMub3JpZW50YXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3JpZW50YXRpb24sWyJwb3J0cmFpdCIsImxhbmRzY2FwZSJdKTt0aGlzLnNob3J0PWdldE1lYXN1cmVtZW50KGUuc2hvcnQpO3RoaXMuc3RvY2s9ZS5zdG9ja3x8IiI7dGhpcy50cmF5SW49Z2V0U3RyaW5nT3B0aW9uKGUudHJheUluLFsiYXV0byIsImRlbGVnYXRlIiwicGFnZUZyb250Il0pO3RoaXMudHJheU91dD1nZXRTdHJpbmdPcHRpb24oZS50cmF5T3V0LFsiYXV0byIsImRlbGVnYXRlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywibWVzc2FnZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE51bWVyaWNFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJudW1lcmljRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtLc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbZHNdKClbZHNdKCkscj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6YVtac10sZGF0YUlkOmFbVm5dPy5bWnNdfHxhW1pzXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtyLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtyLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3JdfSl9fWNsYXNzIE9jY3VyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJvY2N1ciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsPSIiIT09ZS5pbml0aWFsP2dldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMubWF4PSIiIT09ZS5tYXg/Z2V0SW50ZWdlcih7ZGF0YTplLm1heCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1pbj0iIiE9PWUubWluP2dldEludGVnZXIoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bcW5dKCl7Y29uc3QgZT10aGlzW2RzXSgpLHQ9dGhpcy5taW47IiI9PT10aGlzLm1pbiYmKHRoaXMubWluPWUgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/MDoxKTsiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/LTE6MTp0aGlzLm1pbik7LTEhPT10aGlzLm1heCYmdGhpcy5tYXg8dGhpcy5taW4mJih0aGlzLm1heD10aGlzLm1pbik7IiI9PT10aGlzLmluaXRpYWwmJih0aGlzLmluaXRpYWw9ZSBpbnN0YW5jZW9mIFRlbXBsYXRlPzE6dGhpcy5taW4pfX1jbGFzcyBPaWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJvaWRzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm92ZXJmbG93Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bc3NdKCl7aWYoIXRoaXNbSm5dKXtjb25zdCBlPXRoaXNbZHNdKCksdD10aGlzW2ZzXSgpLGE9dFtxc10odGhpcy50YXJnZXQsZSkscj10W3FzXSh0aGlzLmxlYWRlcixlKSxpPXRbcXNdKHRoaXMudHJhaWxlcixlKTt0aGlzW0puXT17dGFyZ2V0OmE/LlswXXx8bnVsbCxsZWFkZXI6cj8uWzBdfHxudWxsLHRyYWlsZXI6aT8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tKbl19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJwYWdlQXJlYSIsITApO3RoaXMuYmxhbmtPck5vdEJsYW5rPWdldFN0cmluZ09wdGlvbihlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWxOdW1iZXI9Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm51bWJlcmVkPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMub2RkT3JFdmVuPWdldFN0cmluZ09wdGlvbihlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSk7dGhpcy5wYWdlUG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lZGl1bT1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W0lzXSgpe2lmKCF0aGlzW0puXSl7dGhpc1tKbl09e251bWJlck9mVXNlOjB9O3JldHVybiEwfXJldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW0puXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bSG5dKCl7ZGVsZXRlIHRoaXNbSm5dfVtoc10oKXt0aGlzW0puXXx8PXtudW1iZXJPZlVzZTowfTtjb25zdCBlPXRoaXNbZHNdKCk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PWUucmVsYXRpb24mJnRoaXNbSXNdKCkpe3RoaXNbSm5dLm51bWJlck9mVXNlKz0xO3JldHVybiB0aGlzfXJldHVybiBlW2hzXSgpfVt0c10oKXtyZXR1cm4gdGhpc1tKbl0uc3BhY2V8fHt3aWR0aDowLGhlaWdodDowfX1bS3NdKCl7dGhpc1tKbl18fD17bnVtYmVyT2ZVc2U6MX07Y29uc3QgZT1bXTt0aGlzW0puXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tKbl0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbSm5dLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tYbl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbWG5dKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1tac10sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W0huXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtIbl0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtIbl0oKX1bSXNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbSm5dLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtoc10oKXt0aGlzW0puXXx8PXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9O2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW0puXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tKbl0ucGFnZUluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuW3RoaXNbSm5dLnBhZ2VJbmRleF1baHNdKCl9aWYodGhpc1tKbl0ucGFnZVNldEluZGV4KzE8dGhpcy5wYWdlU2V0LmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tKbl0ucGFnZVNldEluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1tKbl0ucGFnZVNldEluZGV4XVtoc10oKX1pZih0aGlzW0lzXSgpKXt0aGlzW0puXS5udW1iZXJPZlVzZSs9MTt0aGlzW0puXS5wYWdlSW5kZXg9LTE7dGhpc1tKbl0ucGFnZVNldEluZGV4PS0xO3JldHVybiB0aGlzW2hzXSgpfWNvbnN0IGU9dGhpc1tkc10oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtoc10oKTt0aGlzW0huXSgpO3JldHVybiB0aGlzW2hzXSgpfWNvbnN0IGU9dGhpc1tmc10oKVtKbl0ucGFnZU51bWJlcix0PWUlMj09MD8iZXZlbiI6Im9kZCIsYT0wPT09ZT8iZmlyc3QiOiJyZXN0IjtsZXQgcj10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpO2lmKHIpcmV0dXJuIHI7cj10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmZS5wYWdlUG9zaXRpb249PT1hKTtpZihyKXJldHVybiByO3I9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pO3JldHVybiByfHx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuWzBdfX1jbGFzcyBQYXJhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz1nZXRJbnRlZ2VyKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/Z2V0TWVhc3VyZW1lbnQoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT9nZXRNZWFzdXJlbWVudChlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0P2dldE1lYXN1cmVtZW50KHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlLHQpPT50JTI9PTE/Z2V0TWVhc3VyZW1lbnQoZSk6ZSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtZc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW1lzXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1lzXShlKXtlPWU/ZVtZc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbWXNdKCk6IiMwMDAwMDAiLGE9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLHI9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke2F9KHRvIHRvcCwke3J9KSAke2F9KHRvIHJpZ2h0LCR7cn0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke2F9KDQ1ZGVnLCR7cn0pICR7YX0oLTQ1ZGVnLCR7cn0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7YX0oNDVkZWcsJHtyfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7YX0oLTQ1ZGVnLCR7cn0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke2F9KHRvIHRvcCwke3J9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7YX0odG8gcmlnaHQsJHtyfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1lzXShlKXtlPWU/ZVtZc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbWXNdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVtLc10oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbWXNdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtZc10oKSk6YS5maWxsPSJ0cmFuc3BhcmVudCI7YS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTthLnN0cm9rZT10LmNvbG9yO2NvbnN0IHI9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbWXNdKCksaT17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOlBvLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6ci5yYWRpdXMscnk6ci5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpQbyxzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifSx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19O2lmKGhhc01hcmdpbih0aGlzW2RzXSgpW2RzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgUmVmRWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInNldFByb3BlcnR5Iik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInNpZ25EYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W1lzXShlKXtyZXR1cm4gZT9lW1lzXSgpOiIjRkZGRkZGIn19Y2xhc3MgU3BlYWsgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInNwZWFrIik7dGhpcy5kaXNhYmxlPWdldEludGVnZXIoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PWdldFN0cmluZ09wdGlvbihlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtZc10oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihNYXRoLnJvdW5kKGUudmFsdWUuciooMS10KSt0aGlzLnZhbHVlLnIqdCksTWF0aC5yb3VuZChlLnZhbHVlLmcqKDEtdCkrdGhpcy52YWx1ZS5nKnQpLE1hdGgucm91bmQoZS52YWx1ZS5iKigxLXQpK3RoaXMudmFsdWUuYip0KSl9fWNsYXNzIFN1YmZvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoZT0+Ii0xIj09PWU/LTE6Z2V0TWVhc3VyZW1lbnQoZSkpO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9Z2V0U3RyaW5nT3B0aW9uKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5tZXJnZU1vZGU9Z2V0U3RyaW5nT3B0aW9uKGUubWVyZ2VNb2RlLFsiY29uc3VtZURhdGEiLCJtYXRjaFRlbXBsYXRlIl0pO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJlc3RvcmVTdGF0ZT1nZXRTdHJpbmdPcHRpb24oZS5yZXN0b3JlU3RhdGUsWyJtYW51YWwiLCJhdXRvIl0pO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJuYW1lIiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLnBhZ2VTZXQ9bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhcmlhYmxlcz1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHJvdG89bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX1bdXNdKCl7Y29uc3QgZT10aGlzW2RzXSgpO3JldHVybiBlIGluc3RhbmNlb2YgU3ViZm9ybVNldD9lW3VzXSgpOmV9W3hzXSgpe3JldHVybiEwfVt2c10oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1tKbl0uYXR0ZW1wdCYmdGhpc1tKbl0ubnVtYmVySW5MaW5lPjB8fHRoaXNbZHNdKClbdnNdKCl9Kltsc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bWm5dKCl7cmV0dXJuIGZsdXNoSFRNTCh0aGlzKX1bVW5dKGUsdCl7YWRkSFRNTCh0aGlzLGUsdCl9W3RzXSgpe3JldHVybiBnZXRBdmFpbGFibGVTcGFjZSh0aGlzKX1bQ3NdKCl7Y29uc3QgZT10aGlzW3VzXSgpO2lmKCFlW0NzXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbSm5dLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbSm5dLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbSm5dLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW0puXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW0puXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tKbl0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bS3NdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKHRoaXMuYnJlYWspe2lmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYWZ0ZXJ8fCIiIT09dGhpcy5icmVhay5hZnRlclRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtBZnRlcih7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmFmdGVyLHRhcmdldDp0aGlzLmJyZWFrLmFmdGVyVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbZ3NdPXRoaXNbZ3NdO3RoaXNbam5dKGUpO3RoaXMuYnJlYWtBZnRlci5wdXNoKGUpfWlmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYmVmb3JlfHwiIiE9PXRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0JlZm9yZSh7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmJlZm9yZSx0YXJnZXQ6dGhpcy5icmVhay5iZWZvcmVUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtnc109dGhpc1tnc107dGhpc1tqbl0oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW2dzXT10aGlzW2dzXTt0aGlzW2puXShlKTt0aGlzLm92ZXJmbG93LnB1c2goZSl9dGhpc1tVc10odGhpcy5icmVhayk7dGhpcy5icmVhaz1udWxsfWlmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJndhcm4oIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9aWYodGhpc1tKbl0/LmFmdGVyQnJlYWtBZnRlcilyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10sYT17aWQ6dGhpc1tac10sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGEuY2xhc3MpO3RoaXNbSm5dfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtPYmplY3QuYXNzaWduKHRoaXNbSm5dLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IHI9dGhpc1tmc10oKSxpPXJbSm5dLm5vTGF5b3V0RmFpbHVyZSxuPXRoaXNbQ3NdKCk7bnx8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgcz1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW3VzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW0puXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW0puXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG89dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxjPVsieGZhU3ViZm9ybSJdLGw9bGF5b3V0Q2xhc3ModGhpcyk7bCYmYy5wdXNoKGwpO2Euc3R5bGU9bzthLmNsYXNzPWM7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3NzXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW19zXSgpO2NvbnN0IGg9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsdT1oPzI6MTtmb3IoO3RoaXNbSm5dLmF0dGVtcHQ8dTt0aGlzW0puXS5hdHRlbXB0Kyspe2gmJjE9PT10aGlzW0puXS5hdHRlbXB0JiYodGhpc1tKbl0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tYbl0oe2ZpbHRlcjpzLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbTHNdKCk7cmV0dXJuIGV9aWYoaCYmMD09PXRoaXNbSm5dLmF0dGVtcHQmJjA9PT10aGlzW0puXS5udW1iZXJJbkxpbmUmJiFyW0puXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbSm5dLmF0dGVtcHQ9dTticmVha319dGhpc1tMc10oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO3JbSm5dLm5vTGF5b3V0RmFpbHVyZT1pO2lmKHRoaXNbSm5dLmF0dGVtcHQ9PT11KXt0aGlzLm92ZXJmbG93JiYodGhpc1tmc10oKVtKbl0ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpO258fGRlbGV0ZSB0aGlzW0puXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tzc10oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IGQ9MCxmPTA7aWYodGhpcy5tYXJnaW4pe2Q9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7Zj10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBnPU1hdGgubWF4KHRoaXNbSm5dLndpZHRoK2QsdGhpcy53fHwwKSxwPU1hdGgubWF4KHRoaXNbSm5dLmhlaWdodCtmLHRoaXMuaHx8MCksbT1bdGhpcy54LHRoaXMueSxnLHBdOyIiPT09dGhpcy53JiYoby53aWR0aD1tZWFzdXJlVG9TdHJpbmcoZykpOyIiPT09dGhpcy5oJiYoby5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHApKTtpZigoIjBweCI9PT1vLndpZHRofHwiMHB4Ij09PW8uaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGI9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7Y29uc3QgeT1IVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGIpLG0pO2lmKHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXt0aGlzW0puXS5hZnRlckJyZWFrQWZ0ZXI9eTtyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW0puXTtyZXR1cm4geX19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywic3ViZm9ybVNldCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWQiLCJjaG9pY2UiLCJ1bm9yZGVyZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW2xzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVt1c10oKXtsZXQgZT10aGlzW2RzXSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtkc10oKTtyZXR1cm4gZX1beHNdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInN1YmplY3RETiIpO3RoaXMuZGVsaW1pdGVyPWUuZGVsaW1pdGVyfHwiLCI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe3RoaXNbR25dPW5ldyBNYXAodGhpc1tHbl0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcChlPT57KGU9ZS5zcGxpdCgiPSIsMikpWzBdPWVbMF0udHJpbSgpO3JldHVybiBlfSkpfX1jbGFzcyBTdWJqZWN0RE5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU3VibWl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPWdldEludGVnZXIoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZVByb2ZpbGU9Z2V0U3RyaW5nT3B0aW9uKGUuYmFzZVByb2ZpbGUsWyJmdWxsIiwiaW50ZXJhY3RpdmVGb3JtcyJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W1luXSgpezA9PT10aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoJiZ3YXJuKCJYRkEgLSBObyBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlLiIpO3RoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTImJndhcm4oIlhGQSAtIFNldmVyYWwgc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1skc109NWUzfVtDc10oKXtyZXR1cm4hMH1bcXNdKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiIyIpP1t0aGlzW21zXS5nZXQoZS5zbGljZSgxKSldOnNlYXJjaE5vZGUodGhpcyx0LGUsITAsITApfSpbVnNdKCl7aWYoIXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbSm5dPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W0huXSgpO2NvbnN0IHQ9ZS5wYWdlU2V0LnBhZ2VBcmVhLmNoaWxkcmVuLGE9e25hbWU6ImRpdiIsY2hpbGRyZW46W119O2xldCByPW51bGwsaT1udWxsLG49bnVsbDtpZihlLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO249aS50YXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtpPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtuPWkudGFyZ2V0fWVsc2UgaWYoZS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7bj1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtpPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaztuPWkuYmVmb3JlVGFyZ2V0fWlmKGkpe2NvbnN0IGU9dGhpc1txc10obixpW2RzXSgpKTtpZihlIGluc3RhbmNlb2YgUGFnZUFyZWEpe3I9ZTtpW0puXT17fX19cnx8PXRbMF07cltKbl09e251bWJlck9mVXNlOjF9O2NvbnN0IHM9cltkc10oKTtzW0puXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6cy5wYWdlQXJlYS5jaGlsZHJlbi5pbmRleE9mKHIpLHBhZ2VTZXRJbmRleDowfTtsZXQgbyxjPW51bGwsbD1udWxsLGg9ITAsdT0wLGQ9MDtmb3IoOzspe2lmKGgpdT0wO2Vsc2V7YS5jaGlsZHJlbi5wb3AoKTtpZigzPT09Kyt1KXt3YXJuKCJYRkEgLSBTb21ldGhpbmcgZ29lcyB3cm9uZzogcGxlYXNlIGZpbGUgYSBidWcuIik7cmV0dXJuIGF9fW89bnVsbDt0aGlzW0puXS5jdXJyZW50UGFnZUFyZWE9cjtjb25zdCB0PXJbS3NdKCkuaHRtbDthLmNoaWxkcmVuLnB1c2godCk7aWYoYyl7dGhpc1tKbl0ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChjW0tzXShyW0puXS5zcGFjZSkuaHRtbCk7Yz1udWxsfWlmKGwpe3RoaXNbSm5dLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2gobFtLc10ocltKbl0uc3BhY2UpLmh0bWwpO2w9bnVsbH1jb25zdCBpPXIuY29udGVudEFyZWEuY2hpbGRyZW4sbj10LmNoaWxkcmVuLmZpbHRlcihlPT5lLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYUNvbnRlbnRhcmVhIikpO2g9ITE7dGhpc1tKbl0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW0puXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGE9ZVtabl0oKTtpZihhKXtofHw9YS5jaGlsZHJlbj8ubGVuZ3RoPjA7blt0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PWQscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPXRoaXNbSm5dLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLHM9e3dpZHRoOnIudyxoZWlnaHQ6ci5ofTtkPTA7aWYoYyl7blt0XS5jaGlsZHJlbi5wdXNoKGNbS3NdKHMpLmh0bWwpO2M9bnVsbH1pZihsKXtuW3RdLmNoaWxkcmVuLnB1c2gobFtLc10ocykuaHRtbCk7bD1udWxsfWNvbnN0IHU9ZVtLc10ocyk7aWYodS5zdWNjZXNzKXtpZih1Lmh0bWwpe2h8fD11Lmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO25bdF0uY2hpbGRyZW4ucHVzaCh1Lmh0bWwpfWVsc2UhaCYmYS5jaGlsZHJlbi5sZW5ndGg+MSYmYS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gYX1pZih1LmlzQnJlYWsoKSl7Y29uc3QgZT11LmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe2M9dGhpc1txc10oZS5sZWFkZXIsZVtkc10oKSk7Yz1jP2NbMF06bnVsbH1pZihlLnRyYWlsZXIpe2w9dGhpc1txc10oZS50cmFpbGVyLGVbZHNdKCkpO2w9bD9sWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7bz1lW0puXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW0puXS50YXJnZXQpe289ZVtKbl0udGFyZ2V0O2Q9ZVtKbl0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtKbl0uaW5kZXg7Y29udGludWV9aWYodGhpc1tKbl0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbSm5dLm92ZXJmbG93Tm9kZTt0aGlzW0puXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbc3NdKCkscj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgbj10O3Q9MS8wO2lmKHIgaW5zdGFuY2VvZiBQYWdlQXJlYSlvPXI7ZWxzZSBpZihyIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKHIpO2lmKC0xIT09ZSllPm4/dD1lLTE6ZD1lO2Vsc2V7bz1yW2RzXSgpO2Q9by5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKHIpfX1jb250aW51ZX1mbHVzaCh0KX10aGlzW0puXS5wYWdlTnVtYmVyKz0xO28mJihvW0lzXSgpP29bSm5dLm51bWJlck9mVXNlKz0xOm89bnVsbCk7cj1vfHxyW2hzXSgpO3lpZWxkIG51bGx9fX1jbGFzcyBUZXh0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidGV4dCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhDaGFycz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19uXSgpe3JldHVybiEwfVtSc10oZSl7aWYoZVtPc109PT1lby54aHRtbC5pZCl7dGhpc1tHbl09ZTtyZXR1cm4hMH13YXJuKGBYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogJHtlW0RzXX0uYCk7cmV0dXJuITF9W05zXShlKXt0aGlzW0duXWluc3RhbmNlb2YgWEZBT2JqZWN0fHxzdXBlcltOc10oZSl9W1luXSgpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tHbl0mJih0aGlzW0duXT10aGlzW0duXS5yZXBsYWNlQWxsKCJcclxuIiwiXG4iKSl9W3NzXSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tHbl0/dGhpc1tHbl0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5maWx0ZXIoZT0+ISFlKS5qb2luKCJcbiIpOnRoaXNbR25dW0dzXSgpfVtLc10oZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzW0duXSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW0duXSkuaHRtbDtpZih0aGlzW0duXS5pbmNsdWRlcygiXHUyMDI5Iikpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbR25dLnNwbGl0KCJcdTIwMjkiKS5tYXAoZT0+ZS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZsYXRNYXAoZT0+W3tuYW1lOiJzcGFuIix2YWx1ZTplfSx7bmFtZToiYnIifV0pKS5mb3JFYWNoKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InAiLGNoaWxkcmVuOnR9KX0pfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tHbl0pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW0duXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2godD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gdGhpc1tHbl1bS3NdKGUpfX1jbGFzcyBUZXh0RWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidGV4dEVkaXQiLCEwKTt0aGlzLmFsbG93UmljaFRleHQ9Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubXVsdGlMaW5lPWdldEludGVnZXIoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bS3NdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgcj10aGlzW2RzXSgpW2RzXSgpOyIiPT09dGhpcy5tdWx0aUxpbmUmJih0aGlzLm11bHRpTGluZT1yIGluc3RhbmNlb2YgRHJhdz8xOjApO2E9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOnJbVm5dPy5bWnNdfHxyW1pzXSxmaWVsZElkOnJbWnNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKHIpLCJhcmlhLXJlcXVpcmVkIjohMX19OntuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZGF0YUlkOnJbVm5dPy5bWnNdfHxyW1pzXSxmaWVsZElkOnJbWnNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKHIpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQocikpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgVGltZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtZbl0oKXtjb25zdCBlPXRoaXNbR25dLnRyaW0oKTt0aGlzW0duXT1lP25ldyBEYXRlKGUpOm51bGx9W0tzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tHbl0/dGhpc1tHbl0udG9TdHJpbmcoKToiIil9fWNsYXNzIFRpbWVTdGFtcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidG9vbFRpcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVHJhdmVyc2FsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJ0cmF2ZXJzYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmF2ZXJzZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidHJhdmVyc2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbIm5leHQiLCJiYWNrIiwiZG93biIsImZpcnN0IiwibGVmdCIsInJpZ2h0IiwidXAiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc2NyaXB0PW51bGx9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5vcGVyYXRpb259W0ZzXSgpe3JldHVybiExfX1jbGFzcyBVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuYmFyY29kZT1udWxsO3RoaXMuYnV0dG9uPW51bGw7dGhpcy5jaGVja0J1dHRvbj1udWxsO3RoaXMuY2hvaWNlTGlzdD1udWxsO3RoaXMuZGF0ZVRpbWVFZGl0PW51bGw7dGhpcy5kZWZhdWx0VWk9bnVsbDt0aGlzLmltYWdlRWRpdD1udWxsO3RoaXMubnVtZXJpY0VkaXQ9bnVsbDt0aGlzLnBhc3N3b3JkRWRpdD1udWxsO3RoaXMuc2lnbmF0dXJlPW51bGw7dGhpcy50ZXh0RWRpdD1udWxsfVtzc10oKXtpZih2b2lkIDA9PT10aGlzW0puXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8InBpY3R1cmUiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tKbl09dDtyZXR1cm4gdH19dGhpc1tKbl09bnVsbH1yZXR1cm4gdGhpc1tKbl19W0tzXShlKXtjb25zdCB0PXRoaXNbc3NdKCk7cmV0dXJuIHQ/dFtLc10oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFsaWRhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJ2YWx1ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcnJpZGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmFyYz1udWxsO3RoaXMuYm9vbGVhbj1udWxsO3RoaXMuZGF0ZT1udWxsO3RoaXMuZGF0ZVRpbWU9bnVsbDt0aGlzLmRlY2ltYWw9bnVsbDt0aGlzLmV4RGF0YT1udWxsO3RoaXMuZmxvYXQ9bnVsbDt0aGlzLmltYWdlPW51bGw7dGhpcy5pbnRlZ2VyPW51bGw7dGhpcy5saW5lPW51bGw7dGhpcy5yZWN0YW5nbGU9bnVsbDt0aGlzLnRleHQ9bnVsbDt0aGlzLnRpbWU9bnVsbH1benNdKGUpe2NvbnN0IHQ9dGhpc1tkc10oKTtpZih0IGluc3RhbmNlb2YgRmllbGQmJnQudWk/LmltYWdlRWRpdCl7aWYoIXRoaXMuaW1hZ2Upe3RoaXMuaW1hZ2U9bmV3IEltYWdlKHt9KTt0aGlzW2puXSh0aGlzLmltYWdlKX10aGlzLmltYWdlW0duXT1lW0duXTtyZXR1cm59Y29uc3QgYT1lW0RzXTtpZihudWxsPT09dGhpc1thXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW2VdPW51bGw7dGhpc1tVc10odCl9fXRoaXNbZVtEc11dPWU7dGhpc1tqbl0oZSl9ZWxzZSB0aGlzW2FdW0duXT1lW0duXX1bR3NdKCl7aWYodGhpcy5leERhdGEpcmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzLmV4RGF0YVtHbl0/dGhpcy5leERhdGFbR25dLnRyaW0oKTp0aGlzLmV4RGF0YVtHbl1bR3NdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4odFtHbl18fCIiKS50b1N0cmluZygpLnRyaW0oKX1yZXR1cm4gbnVsbH1bS3NdKGUpe2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBhPXRoaXNbdF07aWYoYSBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4gYVtLc10oZSl9cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhcmlhYmxlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidmFyaWFibGVzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bRnNdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW1dzXSh0KTtyZXR1cm4gYX19c3RhdGljIGFwcGVhcmFuY2VGaWx0ZXIoZSl7cmV0dXJuIG5ldyBBcHBlYXJhbmNlRmlsdGVyKGUpfXN0YXRpYyBhcmMoZSl7cmV0dXJuIG5ldyBBcmMoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBBcmVhKGUpfXN0YXRpYyBhc3Npc3QoZSl7cmV0dXJuIG5ldyBBc3Npc3QoZSl9c3RhdGljIGJhcmNvZGUoZSl7cmV0dXJuIG5ldyBCYXJjb2RlKGUpfXN0YXRpYyBiaW5kKGUpe3JldHVybiBuZXcgQmluZChlKX1zdGF0aWMgYmluZEl0ZW1zKGUpe3JldHVybiBuZXcgQmluZEl0ZW1zKGUpfXN0YXRpYyBib29rZW5kKGUpe3JldHVybiBuZXcgQm9va2VuZChlKX1zdGF0aWMgYm9vbGVhbihlKXtyZXR1cm4gbmV3IEJvb2xlYW5FbGVtZW50KGUpfXN0YXRpYyBib3JkZXIoZSl7cmV0dXJuIG5ldyBCb3JkZXIoZSl9c3RhdGljIGJyZWFrKGUpe3JldHVybiBuZXcgQnJlYWsoZSl9c3RhdGljIGJyZWFrQWZ0ZXIoZSl7cmV0dXJuIG5ldyBCcmVha0FmdGVyKGUpfXN0YXRpYyBicmVha0JlZm9yZShlKXtyZXR1cm4gbmV3IEJyZWFrQmVmb3JlKGUpfXN0YXRpYyBidXR0b24oZSl7cmV0dXJuIG5ldyBCdXR0b24oZSl9c3RhdGljIGNhbGN1bGF0ZShlKXtyZXR1cm4gbmV3IENhbGN1bGF0ZShlKX1zdGF0aWMgY2FwdGlvbihlKXtyZXR1cm4gbmV3IENhcHRpb24oZSl9c3RhdGljIGNlcnRpZmljYXRlKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGUoZSl9c3RhdGljIGNlcnRpZmljYXRlcyhlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlcyhlKX1zdGF0aWMgY2hlY2tCdXR0b24oZSl7cmV0dXJuIG5ldyBDaGVja0J1dHRvbihlKX1zdGF0aWMgY2hvaWNlTGlzdChlKXtyZXR1cm4gbmV3IENob2ljZUxpc3QoZSl9c3RhdGljIGNvbG9yKGUpe3JldHVybiBuZXcgQ29sb3IoZSl9c3RhdGljIGNvbWIoZSl7cmV0dXJuIG5ldyBDb21iKGUpfXN0YXRpYyBjb25uZWN0KGUpe3JldHVybiBuZXcgQ29ubmVjdChlKX1zdGF0aWMgY29udGVudEFyZWEoZSl7cmV0dXJuIG5ldyBDb250ZW50QXJlYShlKX1zdGF0aWMgY29ybmVyKGUpe3JldHVybiBuZXcgQ29ybmVyKGUpfXN0YXRpYyBkYXRlKGUpe3JldHVybiBuZXcgRGF0ZUVsZW1lbnQoZSl9c3RhdGljIGRhdGVUaW1lKGUpe3JldHVybiBuZXcgRGF0ZVRpbWUoZSl9c3RhdGljIGRhdGVUaW1lRWRpdChlKXtyZXR1cm4gbmV3IERhdGVUaW1lRWRpdChlKX1zdGF0aWMgZGVjaW1hbChlKXtyZXR1cm4gbmV3IERlY2ltYWwoZSl9c3RhdGljIGRlZmF1bHRVaShlKXtyZXR1cm4gbmV3IERlZmF1bHRVaShlKX1zdGF0aWMgZGVzYyhlKXtyZXR1cm4gbmV3IERlc2MoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZChlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZChlKX1zdGF0aWMgZGlnZXN0TWV0aG9kcyhlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZHMoZSl9c3RhdGljIGRyYXcoZSl7cmV0dXJuIG5ldyBEcmF3KGUpfXN0YXRpYyBlZGdlKGUpe3JldHVybiBuZXcgRWRnZShlKX1zdGF0aWMgZW5jb2RpbmcoZSl7cmV0dXJuIG5ldyBFbmNvZGluZyhlKX1zdGF0aWMgZW5jb2RpbmdzKGUpe3JldHVybiBuZXcgRW5jb2RpbmdzKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdERhdGEoZSl7cmV0dXJuIG5ldyBFbmNyeXB0RGF0YShlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2QoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kcyhlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2RzKGUpfXN0YXRpYyBldmVudChlKXtyZXR1cm4gbmV3IEV2ZW50KGUpfXN0YXRpYyBleERhdGEoZSl7cmV0dXJuIG5ldyBFeERhdGEoZSl9c3RhdGljIGV4T2JqZWN0KGUpe3JldHVybiBuZXcgRXhPYmplY3QoZSl9c3RhdGljIGV4Y2xHcm91cChlKXtyZXR1cm4gbmV3IEV4Y2xHcm91cChlKX1zdGF0aWMgZXhlY3V0ZShlKXtyZXR1cm4gbmV3IEV4ZWN1dGUoZSl9c3RhdGljIGV4dHJhcyhlKXtyZXR1cm4gbmV3IEV4dHJhcyhlKX1zdGF0aWMgZmllbGQoZSl7cmV0dXJuIG5ldyBGaWVsZChlKX1zdGF0aWMgZmlsbChlKXtyZXR1cm4gbmV3IEZpbGwoZSl9c3RhdGljIGZpbHRlcihlKXtyZXR1cm4gbmV3IEZpbHRlcihlKX1zdGF0aWMgZmxvYXQoZSl7cmV0dXJuIG5ldyBGbG9hdChlKX1zdGF0aWMgZm9udChlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX0ZvbnQoZSl9c3RhdGljIGZvcm1hdChlKXtyZXR1cm4gbmV3IEZvcm1hdChlKX1zdGF0aWMgaGFuZGxlcihlKXtyZXR1cm4gbmV3IEhhbmRsZXIoZSl9c3RhdGljIGh5cGhlbmF0aW9uKGUpe3JldHVybiBuZXcgSHlwaGVuYXRpb24oZSl9c3RhdGljIGltYWdlKGUpe3JldHVybiBuZXcgSW1hZ2UoZSl9c3RhdGljIGltYWdlRWRpdChlKXtyZXR1cm4gbmV3IEltYWdlRWRpdChlKX1zdGF0aWMgaW50ZWdlcihlKXtyZXR1cm4gbmV3IEludGVnZXIoZSl9c3RhdGljIGlzc3VlcnMoZSl7cmV0dXJuIG5ldyBJc3N1ZXJzKGUpfXN0YXRpYyBpdGVtcyhlKXtyZXR1cm4gbmV3IEl0ZW1zKGUpfXN0YXRpYyBrZWVwKGUpe3JldHVybiBuZXcgS2VlcChlKX1zdGF0aWMga2V5VXNhZ2UoZSl7cmV0dXJuIG5ldyBLZXlVc2FnZShlKX1zdGF0aWMgbGluZShlKXtyZXR1cm4gbmV3IExpbmUoZSl9c3RhdGljIGxpbmVhcihlKXtyZXR1cm4gbmV3IExpbmVhcihlKX1zdGF0aWMgbG9ja0RvY3VtZW50KGUpe3JldHVybiBuZXcgTG9ja0RvY3VtZW50KGUpfXN0YXRpYyBtYW5pZmVzdChlKXtyZXR1cm4gbmV3IE1hbmlmZXN0KGUpfXN0YXRpYyBtYXJnaW4oZSl7cmV0dXJuIG5ldyBNYXJnaW4oZSl9c3RhdGljIG1kcChlKXtyZXR1cm4gbmV3IE1kcChlKX1zdGF0aWMgbWVkaXVtKGUpe3JldHVybiBuZXcgTWVkaXVtKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgTWVzc2FnZShlKX1zdGF0aWMgbnVtZXJpY0VkaXQoZSl7cmV0dXJuIG5ldyBOdW1lcmljRWRpdChlKX1zdGF0aWMgb2NjdXIoZSl7cmV0dXJuIG5ldyBPY2N1cihlKX1zdGF0aWMgb2lkKGUpe3JldHVybiBuZXcgT2lkKGUpfXN0YXRpYyBvaWRzKGUpe3JldHVybiBuZXcgT2lkcyhlKX1zdGF0aWMgb3ZlcmZsb3coZSl7cmV0dXJuIG5ldyBPdmVyZmxvdyhlKX1zdGF0aWMgcGFnZUFyZWEoZSl7cmV0dXJuIG5ldyBQYWdlQXJlYShlKX1zdGF0aWMgcGFnZVNldChlKXtyZXR1cm4gbmV3IFBhZ2VTZXQoZSl9c3RhdGljIHBhcmEoZSl7cmV0dXJuIG5ldyBQYXJhKGUpfXN0YXRpYyBwYXNzd29yZEVkaXQoZSl7cmV0dXJuIG5ldyBQYXNzd29yZEVkaXQoZSl9c3RhdGljIHBhdHRlcm4oZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9QYXR0ZXJuKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgUGljdHVyZShlKX1zdGF0aWMgcHJvdG8oZSl7cmV0dXJuIG5ldyBQcm90byhlKX1zdGF0aWMgcmFkaWFsKGUpe3JldHVybiBuZXcgUmFkaWFsKGUpfXN0YXRpYyByZWFzb24oZSl7cmV0dXJuIG5ldyBSZWFzb24oZSl9c3RhdGljIHJlYXNvbnMoZSl7cmV0dXJuIG5ldyBSZWFzb25zKGUpfXN0YXRpYyByZWN0YW5nbGUoZSl7cmV0dXJuIG5ldyBSZWN0YW5nbGUoZSl9c3RhdGljIHJlZihlKXtyZXR1cm4gbmV3IFJlZkVsZW1lbnQoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IFNjcmlwdChlKX1zdGF0aWMgc2V0UHJvcGVydHkoZSl7cmV0dXJuIG5ldyBTZXRQcm9wZXJ0eShlKX1zdGF0aWMgc2lnbkRhdGEoZSl7cmV0dXJuIG5ldyBTaWduRGF0YShlKX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgU2lnbmF0dXJlKGUpfXN0YXRpYyBzaWduaW5nKGUpe3JldHVybiBuZXcgU2lnbmluZyhlKX1zdGF0aWMgc29saWQoZSl7cmV0dXJuIG5ldyBTb2xpZChlKX1zdGF0aWMgc3BlYWsoZSl7cmV0dXJuIG5ldyBTcGVhayhlKX1zdGF0aWMgc3RpcHBsZShlKXtyZXR1cm4gbmV3IFN0aXBwbGUoZSl9c3RhdGljIHN1YmZvcm0oZSl7cmV0dXJuIG5ldyBTdWJmb3JtKGUpfXN0YXRpYyBzdWJmb3JtU2V0KGUpe3JldHVybiBuZXcgU3ViZm9ybVNldChlKX1zdGF0aWMgc3ViamVjdEROKGUpe3JldHVybiBuZXcgU3ViamVjdEROKGUpfXN0YXRpYyBzdWJqZWN0RE5zKGUpe3JldHVybiBuZXcgU3ViamVjdEROcyhlKX1zdGF0aWMgc3VibWl0KGUpe3JldHVybiBuZXcgU3VibWl0KGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZXh0KGUpe3JldHVybiBuZXcgVGV4dChlKX1zdGF0aWMgdGV4dEVkaXQoZSl7cmV0dXJuIG5ldyBUZXh0RWRpdChlKX1zdGF0aWMgdGltZShlKXtyZXR1cm4gbmV3IFRpbWUoZSl9c3RhdGljIHRpbWVTdGFtcChlKXtyZXR1cm4gbmV3IFRpbWVTdGFtcChlKX1zdGF0aWMgdG9vbFRpcChlKXtyZXR1cm4gbmV3IFRvb2xUaXAoZSl9c3RhdGljIHRyYXZlcnNhbChlKXtyZXR1cm4gbmV3IFRyYXZlcnNhbChlKX1zdGF0aWMgdHJhdmVyc2UoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzZShlKX1zdGF0aWMgdWkoZSl7cmV0dXJuIG5ldyBVaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZShlKX1zdGF0aWMgdmFsdWUoZSl7cmV0dXJuIG5ldyBWYWx1ZShlKX1zdGF0aWMgdmFyaWFibGVzKGUpe3JldHVybiBuZXcgVmFyaWFibGVzKGUpfX1jb25zdCBVbz1lby5kYXRhc2V0cy5pZDtmdW5jdGlvbiBjcmVhdGVUZXh0KGUpe2NvbnN0IHQ9bmV3IFRleHQoe30pO3RbR25dPWU7cmV0dXJuIHR9Y2xhc3MgQmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMucm9vdD1lO3RoaXMuZGF0YXNldHM9ZS5kYXRhc2V0czt0aGlzLmRhdGE9ZS5kYXRhc2V0cz8uZGF0YXx8bmV3IFhtbE9iamVjdChlby5kYXRhc2V0cy5pZCwiZGF0YSIpO3RoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW2NzXSgpLmxlbmd0aDt0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVt6bl0oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7dGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxhKXtlW1ZuXT10O2lmKGVbcHNdKCkpaWYodFtTc10oKSl7Y29uc3QgYT10W25zXSgpO2VbenNdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIEZpZWxkJiYibXVsdGlTZWxlY3QiPT09ZS51aT8uY2hvaWNlTGlzdD8ub3Blbil7Y29uc3QgYT10W2NzXSgpLm1hcChlPT5lW0duXS50cmltKCkpLmpvaW4oIlxuIik7ZVt6c10oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbU3NdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6d2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxyKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxuO2ZvcihsZXQgcj0wO3I8MztyKyspe2k9YVtvc10oZSwhMSwhMCk7Zm9yKDs7KXtuPWkubmV4dCgpLnZhbHVlO2lmKCFuKWJyZWFrO2lmKHQ9PT1uW1NzXSgpKXJldHVybiBufWlmKGFbT3NdPT09ZW8uZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbRHNdKWJyZWFrO2E9YVtkc10oKX1pZighcilyZXR1cm4gbnVsbDtpPXRoaXMuZGF0YVtvc10oZSwhMCwhMSk7bj1pLm5leHQoKS52YWx1ZTtpZihuKXJldHVybiBuO2k9dGhpcy5kYXRhW1FuXShlLCEwKTtuPWkubmV4dCgpLnZhbHVlO3JldHVybiBuPy5bU3NdKCk/bjpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoZS5oYXNPd25Qcm9wZXJ0eSgic2V0UHJvcGVydHkiKSlmb3IoY29uc3R7cmVmOmEsdGFyZ2V0OnIsY29ubmVjdGlvbjppfW9mIGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pe2lmKGkpY29udGludWU7aWYoIWEpY29udGludWU7Y29uc3Qgbj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGEsITEsITEpO2lmKCFuKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHthfS5gKTtjb250aW51ZX1jb25zdFtzXT1uO2lmKCFzW0FzXSh0aGlzLmRhdGEpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3Qgbz1zZWFyY2hOb2RlKHRoaXMucm9vdCxlLHIsITEsITEpO2lmKCFvKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtyfS5gKTtjb250aW51ZX1jb25zdFtjXT1vO2lmKCFjW0FzXShlKSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IG11c3QgYmUgYSBwcm9wZXJ0eSBvciBzdWJwcm9wZXJ0eS4iKTtjb250aW51ZX1jb25zdCBsPWNbZHNdKCk7aWYoYyBpbnN0YW5jZW9mIFNldFByb3BlcnR5fHxsIGluc3RhbmNlb2YgU2V0UHJvcGVydHkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoYyBpbnN0YW5jZW9mIEJpbmRJdGVtc3x8bCBpbnN0YW5jZW9mIEJpbmRJdGVtcyl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIGJpbmRJdGVtcyBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9Y29uc3QgaD1zW0dzXSgpLHU9Y1tEc107aWYoYyBpbnN0YW5jZW9mIFhGQUF0dHJpYnV0ZSl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2VbdV09aDtjb25zdCB0PVJlZmxlY3QuY29uc3RydWN0KE9iamVjdC5nZXRQcm90b3R5cGVPZihsKS5jb25zdHJ1Y3RvcixbZV0pO2xbdV09dFt1XTtjb250aW51ZX1pZihjLmhhc093blByb3BlcnR5KEduKSl7Y1tWbl09cztjW0duXT1oO2NbWW5dKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtVc10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IEl0ZW1zKHt9KSxyPW5ldyBJdGVtcyh7fSk7ZVtqbl0oYSk7ZS5pdGVtcy5wdXNoKGEpO2Vbam5dKHIpO2UuaXRlbXMucHVzaChyKTtmb3IoY29uc3R7cmVmOmksbGFiZWxSZWY6bix2YWx1ZVJlZjpzLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighaSljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsaSwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFtBc10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke2l9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtufS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW0FzXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGM9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZighYyl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtzfS5gKTtjb250aW51ZX1jb25zdFtsXT1jO2lmKCFsW0FzXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGg9Y3JlYXRlVGV4dChvW0dzXSgpKSx1PWNyZWF0ZVRleHQobFtHc10oKSk7YVtqbl0oaCk7YS50ZXh0LnB1c2goaCk7cltqbl0odSk7ci50ZXh0LnB1c2godSl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtpfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsYSl7bGV0IHI7aWYodC5sZW5ndGg+MSl7cj1lW3puXSgpO3JbVXNdKHIub2NjdXIpO3Iub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGEpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IGk9ZVtkc10oKSxuPWVbRHNdLHM9aVtic10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sYz1yW3puXSgpO2lbbl0ucHVzaChjKTtpW3lzXShzK2UsYyk7dGhpcy5fYmluZFZhbHVlKGMsbyxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGMsbyk7dGhpcy5fYmluZEl0ZW1zKGMsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGE9ZVtkc10oKSxyPWVbRHNdO2lmKCEoYVtyXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgaTtpPWUubmFtZT9hW3JdLmNoaWxkcmVuLmZpbHRlcih0PT50Lm5hbWU9PT1lLm5hbWUpLmxlbmd0aDphW3JdLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBuPWFbYnNdKGUpKzEscz10LmluaXRpYWwtaTtpZihzKXtjb25zdCB0PWVbem5dKCk7dFtVc10odC5vY2N1cik7dC5vY2N1cj1udWxsO2Fbcl0ucHVzaCh0KTthW3lzXShuLHQpO2ZvcihsZXQgZT0xO2U8cztlKyspe2NvbnN0IGk9dFt6bl0oKTthW3JdLnB1c2goaSk7YVt5c10obitlLGkpfX19X2dldE9jY3VySW5mbyhlKXtjb25zdHtuYW1lOnQsb2NjdXI6YX09ZTtpZighYXx8IXQpcmV0dXJuWzEsMV07Y29uc3Qgcj0tMT09PWEubWF4PzEvMDphLm1heDtyZXR1cm5bYS5taW4scl19X3NldEFuZEJpbmQoZSx0KXt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdCk7dGhpcy5fYmluZEl0ZW1zKGUsdCk7dGhpcy5fYmluZEVsZW1lbnQoZSx0KX1fYmluZEVsZW1lbnQoZSx0KXtjb25zdCBhPVtdO3RoaXMuX2NyZWF0ZU9jY3VycmVuY2VzKGUpO2Zvcihjb25zdCByIG9mIGVbY3NdKCkpe2lmKHJbVm5dKWNvbnRpbnVlO2lmKHZvaWQgMD09PXRoaXMuX21lcmdlTW9kZSYmInN1YmZvcm0iPT09cltEc10pe3RoaXMuX21lcmdlTW9kZT0iY29uc3VtZURhdGEiPT09ci5tZXJnZU1vZGU7Y29uc3QgZT10W2NzXSgpO2lmKGUubGVuZ3RoPjApdGhpcy5fYmluZE9jY3VycmVuY2VzKHIsW2VbMF1dLG51bGwpO2Vsc2UgaWYodGhpcy5lbXB0eU1lcmdlKXtjb25zdCBlPXRbT3NdPT09VW8/LTE6dFtPc10sYT1yW1ZuXT1uZXcgWG1sT2JqZWN0KGUsci5uYW1lfHwicm9vdCIpO3Rbam5dKGEpO3RoaXMuX2JpbmRFbGVtZW50KHIsYSl9Y29udGludWV9aWYoIXJbeHNdKCkpY29udGludWU7bGV0IGU9ITEsaT1udWxsLG49bnVsbCxzPW51bGw7aWYoci5iaW5kKXtzd2l0Y2goci5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQocix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFyLmJpbmQucmVmKXt3YXJuKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke3JbRHNdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKHIsdCk7Y29udGludWV9bj1yLmJpbmQucmVmfXIuYmluZC5waWN0dXJlJiYoaT1yLmJpbmQucGljdHVyZVtHbl0pfWNvbnN0W28sY109dGhpcy5fZ2V0T2NjdXJJbmZvKHIpO2lmKG4pe3M9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZihudWxsPT09cyl7cz1jcmVhdGVEYXRhTm9kZSh0aGlzLmRhdGEsdCxuKTtpZighcyljb250aW51ZTt0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihzWyRuXT0hMCk7dGhpcy5fc2V0QW5kQmluZChyLHMpO2NvbnRpbnVlfXRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKHM9cy5maWx0ZXIoZT0+IWVbJG5dKSk7cy5sZW5ndGg+Yz9zPXMuc2xpY2UoMCxjKTowPT09cy5sZW5ndGgmJihzPW51bGwpO3MmJnRoaXMuX2lzQ29uc3VtZURhdGEoKSYmcy5mb3JFYWNoKGU9PntlWyRuXT0hMH0pfWVsc2V7aWYoIXIubmFtZSl7dGhpcy5fc2V0QW5kQmluZChyLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGM7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKHIubmFtZSxyW3BzXSgpLHQsZSk7aWYoIWkpYnJlYWs7aVskbl09ITA7YS5wdXNoKGkpfXM9YS5sZW5ndGg+MD9hOm51bGx9ZWxzZXtzPXRbb3NdKHIubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighcyl7aWYoMD09PW8pe2EucHVzaChyKTtjb250aW51ZX1jb25zdCBlPXRbT3NdPT09VW8/LTE6dFtPc107cz1yW1ZuXT1uZXcgWG1sT2JqZWN0KGUsci5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihzWyRuXT0hMCk7dFtqbl0ocyk7dGhpcy5fc2V0QW5kQmluZChyLHMpO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKHNbJG5dPSEwKTtzPVtzXX19cz90aGlzLl9iaW5kT2NjdXJyZW5jZXMocixzLGkpOm8+MD90aGlzLl9zZXRBbmRCaW5kKHIsdCk6YS5wdXNoKHIpfWEuZm9yRWFjaChlPT5lW2RzXSgpW1VzXShlKSl9fWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbY3NdKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtyLGldPWE7aWYocisxPT09aS5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgbj1pWysrYVswXV0scz1lLmdldChuW1pzXSk7aWYocyluW3pzXShzKTtlbHNle2NvbnN0IHQ9bltlc10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbWnNdKTtpZih0KXthW3pzXSh0KTticmVha319fWNvbnN0IG89bltjc10oKTtvLmxlbmd0aD4wJiZ0LnB1c2goWy0xLG9dKX1jb25zdCBhPVsnPHhmYTpkYXRhc2V0cyB4bWxuczp4ZmE9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyI+J107aWYodGhpcy5kYXRhc2V0KWZvcihjb25zdCBlIG9mIHRoaXMuZGF0YXNldFtjc10oKSkiZGF0YSIhPT1lW0RzXSYmZVtKc10oYSk7dGhpcy5kYXRhW0pzXShhKTthLnB1c2goIjwveGZhOmRhdGFzZXRzPiIpO3JldHVybiBhLmpvaW4oIiIpfX1jb25zdCBqbz1lby5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYWNyb2JhdCIsITApO3RoaXMuYWNyb2JhdDc9bnVsbDt0aGlzLmF1dG9TYXZlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcz1udWxsO3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFjcm9iYXQ3IiwhMCk7dGhpcy5keW5hbWljUmVuZGVyPW51bGx9fWNsYXNzIEFEQkVfSlNDb25zb2xlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJBREJFX0pTQ29uc29sZSIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFEQkVfSlNEZWJ1Z2dlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYWRkU2lsZW50UHJpbnQiKX19Y2xhc3MgQWRkVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYWRkVmlld2VyUHJlZmVyZW5jZXMiKX19Y2xhc3MgQWRqdXN0RGF0YSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhZG9iZUV4dGVuc2lvbkxldmVsIiwwLGU9PmU+PTEmJmU8PTgpfX1jbGFzcyBBZ2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYWdlbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5jb21tb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFsd2F5c0VtYmVkIil9fWNsYXNzIEFtZCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYW1kIil9fWNsYXNzIGNvbmZpZ19BcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhcmVhIik7dGhpcy5sZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUubGV2ZWwsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9M30pO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiIiwiYmFyY29kZSIsImNvcmVpbml0IiwiZGV2aWNlRHJpdmVyIiwiZm9udCIsImdlbmVyYWwiLCJsYXlvdXQiLCJtZXJnZSIsInNjcmlwdCIsInNpZ25hdHVyZSIsInNvdXJjZVNldCIsInRlbXBsYXRlQ2FjaGUiXSl9fWNsYXNzIEF0dHJpYnV0ZXMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImF1dG9TYXZlIixbImRpc2FibGVkIiwiZW5hYmxlZCJdKX19Y2xhc3MgQmFzZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYmFzZSIpfX1jbGFzcyBCYXRjaE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJiZWhhdmlvck92ZXJyaWRlIil9W1luXSgpe3RoaXNbR25dPW5ldyBNYXAodGhpc1tHbl0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+ZS5pbmNsdWRlcygiOiIpKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNhY2hlIiwhMCk7dGhpcy50ZW1wbGF0ZUNhY2hlPW51bGx9fWNsYXNzIENoYW5nZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjaGFuZ2UiKX19Y2xhc3MgQ29tbW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbXByZXNzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNvbXByZXNzTG9naWNhbFN0cnVjdHVyZSIpfX1jbGFzcyBDb21wcmVzc09iamVjdFN0cmVhbSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjb21wcmVzc09iamVjdFN0cmVhbSIpfX1jbGFzcyBDb21wcmVzc2lvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY29uZmlnIiwhMCk7dGhpcy5hY3JvYmF0PW51bGw7dGhpcy5wcmVzZW50PW51bGw7dGhpcy50cmFjZT1udWxsO3RoaXMuYWdlbnQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9fWNsYXNzIENvbnRlbnRDb3B5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNvbnRlbnRDb3B5Iil9fWNsYXNzIENvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNvcGllcyIsMSxlPT5lPj0xKX19Y2xhc3MgQ3JlYXRvciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImN1cnJlbnRQYWdlIiwwLGU9PmU+PTApfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxhPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IHIgb2YgYS5zcGxpdCgiLCIpLm1hcChlPT5lLnRyaW0oKSkuZmlsdGVyKGU9PiEhZSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKGU9Pntjb25zdCBhPWUubWF0Y2godCk7cmV0dXJuIGE/cGFyc2VJbnQoYVsxXSwxNik6MH0pOzE9PT1yLmxlbmd0aCYmci5wdXNoKHJbMF0pO2UucHVzaChyKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJleGNsdWRlIil9W1luXSgpe3RoaXNbR25dPXRoaXNbR25dLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKGU9PmUmJlsiY2FsY3VsYXRlIiwiY2xvc2UiLCJlbnRlciIsImV4aXQiLCJpbml0aWFsaXplIiwicmVhZHkiLCJ2YWxpZGF0ZSJdLmluY2x1ZGVzKGUpKX19Y2xhc3MgRXhjbHVkZU5TIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJmbGlwTGFiZWwiLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgY29uZmlnX0ZvbnRJbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJmb250SW5mbyIsITApO3RoaXMuZW1iZWQ9bnVsbDt0aGlzLm1hcD1udWxsO3RoaXMuc3Vic2V0QmVsb3c9bnVsbDt0aGlzLmFsd2F5c0VtYmVkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5uZXZlckVtYmVkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRm9ybUZpZWxkRmlsbGluZyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJmb3JtRmllbGRGaWxsaW5nIil9fWNsYXNzIEdyb3VwUGFyZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJpZkVtcHR5IixbImRhdGFWYWx1ZSIsImRhdGFHcm91cCIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgSW5jbHVkZVhEUENvbnRlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImluY2x1ZGVYRFBDb250ZW50Iil9fWNsYXNzIEluY3JlbWVudGFsTG9hZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJpbmNyZW1lbnRhbE1lcmdlIil9fWNsYXNzIEludGVyYWN0aXZlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImludGVyYWN0aXZlIil9fWNsYXNzIEpvZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibGFiZWxQcmludGVyIiwhMCk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJ6cGwiLCJkcGwiLCJpcGwiLCJ0Y3BsIl0pO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBMYXlvdXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxheW91dCIsWyJwYWdpbmF0ZSIsInBhbmVsIl0pfX1jbGFzcyBMZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxldmVsIiwwLGU9PmU+MCl9fWNsYXNzIExpbmVhcml6ZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxvY2FsZSIpfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxvY2FsZVNldCIpfX1jbGFzcyBMb2cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm1hcCIsITApO3RoaXMuZXF1YXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVkaXVtSW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIGNvbmZpZ19NZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJtZXNzYWdpbmciLCEwKTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJtb2RlIixbImFwcGVuZCIsIm92ZXJ3cml0ZSJdKX19Y2xhc3MgTW9kaWZ5QW5ub3RzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm1vZGlmeUFubm90cyIpfX1jbGFzcyBNc2dJZCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm1zZ0lkIiwxLGU9PmU+PTEpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJudW1iZXJPZkNvcGllcyIsbnVsbCxlPT5lPj0yJiZlPD01KX19Y2xhc3MgT3BlbkFjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywib3BlbkFjdGlvbiIsITApO3RoaXMuZGVzdGluYXRpb249bnVsbH19Y2xhc3MgT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJvdXRwdXRCaW4iKX19Y2xhc3MgT3V0cHV0WFNMIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJvdXRwdXRYU0wiLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdmVycHJpbnQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGFja2V0cyIpfVtZbl0oKXsiKiIhPT10aGlzW0duXSYmKHRoaXNbR25dPXRoaXNbR25dLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGFnZU9mZnNldCIpO3RoaXMueD1nZXRJbnRlZ2VyKHtkYXRhOmUueCxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy55PWdldEludGVnZXIoe2RhdGE6ZS55LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KX19Y2xhc3MgUGFnZVJhbmdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwYWdlUmFuZ2UiKX1bWW5dKCl7Y29uc3QgZT10aGlzW0duXS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcChlPT5wYXJzZUludChlLDEwKSksdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tHbl09dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBhcnQiLDEsZT0+ITEpfX1jbGFzcyBQY2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBjbCIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMucGFnZU9mZnNldD1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBkZmEiLCEwKTt0aGlzLmFtZD1udWxsO3RoaXMuY29uZm9ybWFuY2U9bnVsbDt0aGlzLmluY2x1ZGVYRFBDb250ZW50PW51bGw7dGhpcy5wYXJ0PW51bGx9fWNsYXNzIFBlcm1pc3Npb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwZXJtaXNzaW9ucyIsITApO3RoaXMuYWNjZXNzaWJsZUNvbnRlbnQ9bnVsbDt0aGlzLmNoYW5nZT1udWxsO3RoaXMuY29udGVudENvcHk9bnVsbDt0aGlzLmRvY3VtZW50QXNzZW1ibHk9bnVsbDt0aGlzLmZvcm1GaWVsZEZpbGxpbmc9bnVsbDt0aGlzLm1vZGlmeUFubm90cz1udWxsO3RoaXMucGxhaW50ZXh0TWV0YWRhdGE9bnVsbDt0aGlzLnByaW50PW51bGw7dGhpcy5wcmludEhpZ2hRdWFsaXR5PW51bGx9fWNsYXNzIFBpY2tUcmF5QnlQREZTaXplIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIGNvbmZpZ19QaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBsYWludGV4dE1ldGFkYXRhIil9fWNsYXNzIFByZXNlbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcmVzZW5jZSIsWyJwcmVzZXJ2ZSIsImRpc3NvbHZlIiwiZGlzc29sdmVTdHJ1Y3R1cmUiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIFByZXNlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGFiZWxQcmludGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBjbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy56cGw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcmludCIpfX1jbGFzcyBQcmludEhpZ2hRdWFsaXR5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcmludFNjYWxpbmciLFsiYXBwZGVmYXVsdCIsIm5vU2NhbGluZyJdKX19Y2xhc3MgUHJpbnRlck5hbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInByaW50ZXJOYW1lIil9fWNsYXNzIFByb2R1Y2VyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicHMiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFJhbmdlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicmFuZ2UiKX1bWW5dKCl7dGhpc1tHbl09dGhpc1tHbl0uc3BsaXQoIiwiLDIpLm1hcChlPT5lLnNwbGl0KCItIikubWFwKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpLmZpbHRlcihlPT5lLmV2ZXJ5KGU9PiFpc05hTihlKSkpLm1hcChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KX19Y2xhc3MgUmVjb3JkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicmVjb3JkIil9W1luXSgpe3RoaXNbR25dPXRoaXNbR25dLnRyaW0oKTtjb25zdCBlPXBhcnNlSW50KHRoaXNbR25dLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW0duXT1lKX19Y2xhc3MgUmVsZXZhbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJyZWxldmFudCIpfVtZbl0oKXt0aGlzW0duXT10aGlzW0duXS50cmltKCkuc3BsaXQoL1xzKy8pfX1jbGFzcyBSZW5hbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJyZW5hbWUiKX1bWW5dKCl7dGhpc1tHbl09dGhpc1tHbl0udHJpbSgpOyh0aGlzW0duXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoInhtbCIpfHxuZXcgUmVnRXhwKCJbXFxwe0x9X11bXFxwe0x9XFxkLl9cXHB7TX0tXSoiLCJ1IikudGVzdCh0aGlzW0duXSkpJiZ3YXJuKCJYRkEgLSBSZW5hbWU6IGludmFsaWQgWEZBIG5hbWUiKX19Y2xhc3MgUmVuZGVyUG9saWN5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJyZW5kZXJQb2xpY3kiLFsic2VydmVyIiwiY2xpZW50Il0pfX1jbGFzcyBSdW5TY3JpcHRzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBjb25maWdfU2NyaXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzY3JpcHRNb2RlbCIsWyJYRkEiLCJub25lIl0pfX1jbGFzcyBTZXZlcml0eSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic2V2ZXJpdHkiLFsiaWdub3JlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsInRyYWNlIiwid2FybmluZyJdKX19Y2xhc3MgU2lsZW50UHJpbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzdGFwbGUiKTt0aGlzLm1vZGU9Z2V0U3RyaW5nT3B0aW9uKGUubW9kZSxbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIFN0YXJ0Tm9kZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic3RhcnROb2RlIil9fWNsYXNzIFN0YXJ0UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInN0YXJ0UGFnZSIsMCxlPT4hMCl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzdWJzZXRCZWxvdyIsMTAwLGU9PmU+PTAmJmU8PTEwMCl9fWNsYXNzIFN1cHByZXNzQmFubmVyIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInN1cHByZXNzQmFubmVyIil9fWNsYXNzIFRhZ2dlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0YWdnZWQiKX19Y2xhc3MgY29uZmlnX1RlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0aHJlc2hvbGQiLFsidHJhY2UiLCJlcnJvciIsImluZm9ybWF0aW9uIiwid2FybmluZyJdKX19Y2xhc3MgVG8gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFRlbXBsYXRlQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidHJhY2UiLCEwKTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInRyYW5zZm9ybSIsITApO3RoaXMuZ3JvdXBQYXJlbnQ9bnVsbDt0aGlzLmlmRW1wdHk9bnVsbDt0aGlzLm5hbWVBdHRyPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5wcmVzZW5jZT1udWxsO3RoaXMucmVuYW1lPW51bGw7dGhpcy53aGl0ZXNwYWNlPW51bGx9fWNsYXNzIFR5cGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInR5cGUiLFsibm9uZSIsImFzY2lpODUiLCJhc2NpaUhleCIsImNjaXR0ZmF4IiwiZmxhdGUiLCJsenciLCJydW5MZW5ndGgiLCJuYXRpdmUiLCJ4ZHAiLCJtZXJnZWRYRFAiXSl9fWNsYXNzIFVyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidXJpIil9fWNsYXNzIGNvbmZpZ19WYWxpZGF0ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyIpfVtZbl0oKXt0aGlzW0duXT10aGlzW0duXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSl9fWNsYXNzIFZhbGlkYXRpb25NZXNzYWdpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInZhbGlkYXRpb25NZXNzYWdpbmciLFsiYWxsTWVzc2FnZXNJbmRpdmlkdWFsbHkiLCJhbGxNZXNzYWdlc1RvZ2V0aGVyIiwiZmlyc3RNZXNzYWdlT25seSIsIm5vTWVzc2FnZXMiXSl9fWNsYXNzIFZlcnNpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiVmVyc2lvbkNvbnRyb2wiKTt0aGlzLm91dHB1dEJlbG93PWdldFN0cmluZ09wdGlvbihlLm91dHB1dEJlbG93LFsid2FybiIsImVycm9yIiwidXBkYXRlIl0pO3RoaXMuc291cmNlQWJvdmU9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQWJvdmUsWyJ3YXJuIiwiZXJyb3IiXSk7dGhpcy5zb3VyY2VCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5zb3VyY2VCZWxvdyxbInVwZGF0ZSIsIm1haW50YWluIl0pfX1jbGFzcyBWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidmlld2VyUHJlZmVyZW5jZXMiLCEwKTt0aGlzLkFEQkVfSlNDb25zb2xlPW51bGw7dGhpcy5BREJFX0pTRGVidWdnZXI9bnVsbDt0aGlzLmFkZFZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy5kdXBsZXhPcHRpb249bnVsbDt0aGlzLmVuZm9yY2U9bnVsbDt0aGlzLm51bWJlck9mQ29waWVzPW51bGw7dGhpcy5wYWdlUmFuZ2U9bnVsbDt0aGlzLnBpY2tUcmF5QnlQREZTaXplPW51bGw7dGhpcy5wcmludFNjYWxpbmc9bnVsbH19Y2xhc3MgV2ViQ2xpZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIndoaXRlc3BhY2UiLFsicHJlc2VydmUiLCJsdHJpbSIsIm5vcm1hbGl6ZSIsInJ0cmltIiwidHJpbSJdKX19Y2xhc3MgV2luZG93IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywid2luZG93Iil9W1luXSgpe2NvbnN0IGU9dGhpc1tHbl0uc3BsaXQoIiwiLDIpLm1hcChlPT5wYXJzZUludChlLnRyaW0oKSwxMCkpO2lmKGUuc29tZShlPT5pc05hTihlKSkpdGhpc1tHbl09WzAsMF07ZWxzZXsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTt0aGlzW0duXT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ4ZGMiLCEwKTt0aGlzLnVyaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBYZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInhzbCIsITApO3RoaXMuZGVidWc9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBacGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInpwbCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgQ29uZmlnTmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihDb25maWdOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBjb25maWdfQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgY29uZmlnX0ZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19NZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19QaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19TY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1RlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1ZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX1jb25zdCBYbz1lby5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY29ubmVjdGlvbl9zZXRfVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbUXNdKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgY29ubmVjdGlvbl9zZXRfVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fWNvbnN0IHFvPWVvLmRhdGFzZXRzLmlkO2NsYXNzIGRhdGFzZXRzX0RhdGEgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW8sImRhdGEiLGUpfVtrc10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW8sImRhdGFzZXRzIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5TaWduYXR1cmU9bnVsbH1bUnNdKGUpe2NvbnN0IHQ9ZVtEc107KCJkYXRhIj09PXQmJmVbT3NdPT09cW98fCJTaWduYXR1cmUiPT09dCYmZVtPc109PT1lby5zaWduYXR1cmUuaWQpJiYodGhpc1t0XT1lKTt0aGlzW2puXShlKX19Y2xhc3MgRGF0YXNldHNOYW1lc3BhY2V7c3RhdGljW1FzXShlLHQpe2lmKERhdGFzZXRzTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBEYXRhc2V0c05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBEYXRhc2V0cyhlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IGRhdGFzZXRzX0RhdGEoZSl9fWNvbnN0IEhvPWVvLmxvY2FsZVNldC5pZDtjbGFzcyBDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmVyYU5hbWVzPW51bGw7dGhpcy5tZXJpZGllbU5hbWVzPW51bGw7dGhpcy5tb250aE5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImN1cnJlbmN5U3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJzeW1ib2wiLCJpc29uYW1lIiwiZGVjaW1hbCJdKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSgzKX19Y2xhc3MgRGF0ZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJkYXkiKX19Y2xhc3MgRGF5TmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IFhGQU9iamVjdEFycmF5KDcpfX1jbGFzcyBFcmEgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJsb2NhbGUiLCEwKTt0aGlzLmRlc2M9ZS5kZXNjfHwiIjt0aGlzLm5hbWU9Imlzb25hbWUiO3RoaXMuY2FsZW5kYXJTeW1ib2xzPW51bGw7dGhpcy5jdXJyZW5jeVN5bWJvbHM9bnVsbDt0aGlzLmRhdGVQYXR0ZXJucz1udWxsO3RoaXMuZGF0ZVRpbWVTeW1ib2xzPW51bGw7dGhpcy5udW1iZXJQYXR0ZXJucz1udWxsO3RoaXMubnVtYmVyU3ltYm9scz1udWxsO3RoaXMudGltZVBhdHRlcm5zPW51bGw7dGhpcy50eXBlRmFjZXM9bnVsbH19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGVTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sIm1lcmlkaWVtTmFtZXMiLCEwKTt0aGlzLm1lcmlkaWVtPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sIm1vbnRoIil9fWNsYXNzIE1vbnRoTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBYRkFPYmplY3RBcnJheSgxMil9fWNsYXNzIE51bWJlclBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJudW1iZXJTeW1ib2xzIiwhMCk7dGhpcy5udW1iZXJTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywidGltZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIFRpbWVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIFR5cGVGYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbUXNdKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZVNldChlKX1zdGF0aWMgbWVyaWRpZW0oZSl7cmV0dXJuIG5ldyBNZXJpZGllbShlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IE1lcmlkaWVtTmFtZXMoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgTW9udGgoZSl9c3RhdGljIG1vbnRoTmFtZXMoZSl7cmV0dXJuIG5ldyBNb250aE5hbWVzKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJuKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybihlKX1zdGF0aWMgbnVtYmVyUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJucyhlKX1zdGF0aWMgbnVtYmVyU3ltYm9sKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9sKGUpfXN0YXRpYyBudW1iZXJTeW1ib2xzKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9scyhlKX1zdGF0aWMgdGltZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybihlKX1zdGF0aWMgdGltZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm5zKGUpfXN0YXRpYyB0eXBlRmFjZShlKXtyZXR1cm4gbmV3IFR5cGVGYWNlKGUpfXN0YXRpYyB0eXBlRmFjZXMoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZXMoZSl9fWNvbnN0IFdvPWVvLnNpZ25hdHVyZS5pZDtjbGFzcyBzaWduYXR1cmVfU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFdvLCJzaWduYXR1cmUiLCEwKX19Y2xhc3MgU2lnbmF0dXJlTmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihTaWduYXR1cmVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFNpZ25hdHVyZU5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgc2lnbmF0dXJlX1NpZ25hdHVyZShlKX19Y29uc3Qgem89ZW8uc3R5bGVzaGVldC5pZDtjbGFzcyBTdHlsZXNoZWV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpvLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW1FzXShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX1jb25zdCAkbz1lby54ZHAuaWQ7Y2xhc3MgeGRwX1hkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigkbywieGRwIiwhMCk7dGhpcy51dWlkPWUudXVpZHx8IiI7dGhpcy50aW1lU3RhbXA9ZS50aW1lU3RhbXB8fCIiO3RoaXMuY29uZmlnPW51bGw7dGhpcy5jb25uZWN0aW9uU2V0PW51bGw7dGhpcy5kYXRhc2V0cz1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5zdHlsZXNoZWV0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W0JzXShlKXtjb25zdCB0PWVvW2VbRHNdXTtyZXR1cm4gdCYmZVtPc109PT10LmlkfX1jbGFzcyBYZHBOYW1lc3BhY2V7c3RhdGljW1FzXShlLHQpe2lmKFhkcE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gWGRwTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyB4ZHBfWGRwKGUpfX1jb25zdCBHbz1lby54aHRtbC5pZCxWbz1TeW1ib2woKSxLbz1uZXcgU2V0KFsiY29sb3IiLCJmb250IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC13ZWlnaHQiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWhlaWdodCIsIm9ycGhhbnMiLCJwYWdlLWJyZWFrLWFmdGVyIiwicGFnZS1icmVhay1iZWZvcmUiLCJwYWdlLWJyZWFrLWluc2lkZSIsInRhYi1pbnRlcnZhbCIsInRhYi1zdG9wIiwidGV4dC1hbGlnbiIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtaW5kZW50IiwidmVydGljYWwtYWxpZ24iLCJ3aWRvd3MiLCJrZXJuaW5nLW1vZGUiLCJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIiwieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLCJ4ZmEtc3BhY2VydW4iLCJ4ZmEtdGFiLXN0b3BzIl0pLEpvPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAscGFyc2VJbnQoZSkvMTAwKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxwYXJzZUludChlKS8xMDApLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT5tZWFzdXJlVG9TdHJpbmcoLjk5KihlPXQuZm9udFNpemU9TWF0aC5hYnMoZ2V0TWVhc3VyZW1lbnQoZSkpKSldLFsibGV0dGVyLXNwYWNpbmciLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibGluZS1oZWlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWxlZnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXJpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi10b3AiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsidGV4dC1pbmRlbnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldXSksWW89L1xzKy9nLFpvPS9bXHJcbl0rL2csUW89L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gcjtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3QsYV1vZiBlLnNwbGl0KCI7IikubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSl7Y29uc3QgZT1Kby5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBuPWE7ZSYmKG49InN0cmluZyI9PXR5cGVvZiBlP2U6ZShhLGkpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP3IudHJhbnNmb3JtPXIudHJhbnNmb3JtP2Ake3JbdF19ICR7bn1gOm46clt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKGUsdCk9PnQudG9VcHBlckNhc2UoKSldPW59ci5mb250RmFtaWx5JiZzZXRGb250RmFtaWx5KHt0eXBlZmFjZTpyLmZvbnRGYW1pbHksd2VpZ2h0OnIuZm9udFdlaWdodHx8Im5vcm1hbCIscG9zdHVyZTpyLmZvbnRTdHlsZXx8Im5vcm1hbCIsc2l6ZTppLmZvbnRTaXplfHwwfSx0LHRbZ3NdLmZvbnRGaW5kZXIscik7aWYoYSYmci52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PXIudmVydGljYWxBbGlnbiYmci5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxhPWdldE1lYXN1cmVtZW50KHIuZm9udFNpemUpO3IuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKGEqZSk7ci52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyhNYXRoLnNpZ24oZ2V0TWVhc3VyZW1lbnQoci52ZXJ0aWNhbEFsaWduKSkqYSp0KX1hJiZyLmZvbnRTaXplJiYoci5mb250U2l6ZT1gY2FsYygke3IuZm9udFNpemV9ICogdmFyKC0tdG90YWwtc2NhbGUtZmFjdG9yKSlgKTtmaXhUZXh0SW5kZW50KHIpO3JldHVybiByfWNvbnN0IGVjPW5ldyBTZXQoWyJib2R5IiwiaHRtbCJdKTtjbGFzcyBYaHRtbE9iamVjdCBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKEdvLHQpO3RoaXNbVm9dPSExO3RoaXMuc3R5bGU9ZS5zdHlsZXx8IiJ9W3FuXShlKXtzdXBlcltxbl0oZSk7dGhpcy5zdHlsZT1mdW5jdGlvbiBjaGVja1N0eWxlKGUpe3JldHVybiBlLnN0eWxlP2Uuc3R5bGUuc3BsaXQoIjsiKS5maWx0ZXIoZT0+ISFlLnRyaW0oKSkubWFwKGU9PmUuc3BsaXQoIjoiLDIpLm1hcChlPT5lLnRyaW0oKSkpLmZpbHRlcigoW3QsYV0pPT57ImZvbnQtZmFtaWx5Ij09PXQmJmVbZ3NdLnVzZWRUeXBlZmFjZXMuYWRkKGEpO3JldHVybiBLby5oYXModCl9KS5tYXAoZT0+ZS5qb2luKCI6IikpLmpvaW4oIjsiKToiIn0odGhpcyl9W19uXSgpe3JldHVybiFlYy5oYXModGhpc1tEc10pfVtOc10oZSx0PSExKXtpZih0KXRoaXNbVm9dPSEwO2Vsc2V7ZT1lLnJlcGxhY2VBbGwoWm8sIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlQWxsKFlvLCIgIikpfWUmJih0aGlzW0duXSs9ZSl9W0VzXShlLHQ9ITApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgaT1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcChlPT5lLnNwbGl0KCI6IiwyKSkpc3dpdGNoKGUpe2Nhc2UiZm9udC1mYW1pbHkiOmEudHlwZWZhY2U9c3RyaXBRdW90ZXModCk7YnJlYWs7Y2FzZSJmb250LXNpemUiOmEuc2l6ZT1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlImZvbnQtd2VpZ2h0IjphLndlaWdodD10O2JyZWFrO2Nhc2UiZm9udC1zdHlsZSI6YS5wb3N0dXJlPXQ7YnJlYWs7Y2FzZSJsZXR0ZXItc3BhY2luZyI6YS5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luIjpjb25zdCBlPXQuc3BsaXQoLyBcdC8pLm1hcChlPT5nZXRNZWFzdXJlbWVudChlKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6ci50b3A9ci5ib3R0b209ci5sZWZ0PXIucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6ci50b3A9ci5ib3R0b209ZVswXTtyLmxlZnQ9ci5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzpyLnRvcD1lWzBdO3IuYm90dG9tPWVbMl07ci5sZWZ0PXIucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6ci50b3A9ZVswXTtyLmxlZnQ9ZVsxXTtyLmJvdHRvbT1lWzJdO3IucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOnIudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6ci5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6ci5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjpyLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOmk9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShhLHIsaSk7aWYodGhpc1tHbl0pZS5hZGRTdHJpbmcodGhpc1tHbl0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tjc10oKSkiI3RleHQiIT09dFtEc10/dFtFc10oZSk6ZS5hZGRTdHJpbmcodFtHbl0pO3QmJmUucG9wRm9udCgpfVtLc10oZSl7Y29uc3QgdD1bXTt0aGlzW0puXT17Y2hpbGRyZW46dH07dGhpc1tYbl0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbR25dKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBhO2E9dGhpc1tWb10/dGhpc1tHbl0/dGhpc1tHbl0ucmVwbGFjZUFsbChRbywiXG4iKTp2b2lkIDA6dGhpc1tHbl18fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbRHNdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW1ZvXSl9LGNoaWxkcmVuOnQsdmFsdWU6YX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W0VzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbRXNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtLc10oZSl7Y29uc3QgdD1zdXBlcltLc10oZSkse2h0bWw6YX09dDtpZighYSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W0dzXSgpe3JldHVybiJcbiJ9W0VzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bS3NdKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtLc10oZSl7Y29uc3QgdD1bXTt0aGlzW0puXT17Y2hpbGRyZW46dH07dGhpc1tYbl0oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW0duXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W0VzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbRXNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bRXNdKGUpe3N1cGVyW0VzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1bR3NdKCl7cmV0dXJuIHRoaXNbZHNdKClbY3NdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltHc10oKTpzdXBlcltHc10oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljW1FzXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCB0Yz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bUXNdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW21zXT1lfVtSc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W1luXSgpe3N1cGVyW1luXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW21zXS5zZXQoanMsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbWHNdKHRoaXNbbXNdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbbXNdPXRoaXNbbXNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bUnNdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhlbykubWFwKCh7aWQ6ZX0pPT5lKSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT1lfHxuZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKX1idWlsZFJvb3QoZSl7cmV0dXJuIG5ldyBSb290KGUpfWJ1aWxkKHtuc1ByZWZpeDplLG5hbWU6dCxhdHRyaWJ1dGVzOmEsbmFtZXNwYWNlOnIscHJlZml4ZXM6aX0pe2NvbnN0IG49bnVsbCE9PXI7aWYobil7dGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShyKX1pJiZ0aGlzLl9hZGROYW1lc3BhY2VQcmVmaXgoaSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShNcykpe2NvbnN0IGU9dGMuZGF0YXNldHMsdD1hW01zXTtsZXQgcj1udWxsO2Zvcihjb25zdFthLGldb2YgT2JqZWN0LmVudHJpZXModCkpe2lmKHRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGEpPT09ZSl7cj17eGZhOml9O2JyZWFrfX1yP2FbTXNdPXI6ZGVsZXRlIGFbTXNdfWNvbnN0IHM9dGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoZSksbz1zPy5bUXNdKHQsYSl8fG5ldyBFbXB0eTtvW2tzXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsobnx8aXx8b1trc10oKSkmJihvW1duXT17aGFzTmFtZXNwYWNlOm4scHJlZml4ZXM6aSxuc0Fnbm9zdGljOm9ba3NdKCl9KTtyZXR1cm4gb31pc05zQWdub3N0aWMoKXtyZXR1cm4gdGhpcy5fbnNBZ25vc3RpY0xldmVsPjB9X3NlYXJjaE5hbWVzcGFjZShlKXtsZXQgdD10aGlzLl9uYW1lc3BhY2VzLmdldChlKTtpZih0KXJldHVybiB0O2Zvcihjb25zdFthLHtjaGVjazpyfV1vZiBPYmplY3QuZW50cmllcyhlbykpaWYocihlKSl7dD10Y1thXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IFVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCk7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1fYWRkTmFtZXNwYWNlUHJlZml4KGUpe2Zvcihjb25zdHtwcmVmaXg6dCx2YWx1ZTphfW9mIGUpe2NvbnN0IGU9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpO2xldCByPXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldCh0KTtpZighcil7cj1bXTt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5zZXQodCxyKX1yLnB1c2goZSl9fV9nZXROYW1lc3BhY2VUb1VzZShlKXtpZighZSlyZXR1cm4gdGhpcy5fY3VycmVudE5hbWVzcGFjZTtjb25zdCB0PXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKTtpZih0Py5sZW5ndGg+MClyZXR1cm4gdC5hdCgtMSk7d2FybihgVW5rbm93biBuYW1lc3BhY2UgcHJlZml4OiAke2V9LmApO3JldHVybiBudWxsfWNsZWFuKGUpe2NvbnN0e2hhc05hbWVzcGFjZTp0LHByZWZpeGVzOmEsbnNBZ25vc3RpYzpyfT1lO3QmJih0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX25hbWVzcGFjZVN0YWNrLnBvcCgpKTthJiZhLmZvckVhY2goKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSk7ciYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fWNsYXNzIFhGQVBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoZT1udWxsLHQ9ITEpe3N1cGVyKCk7dGhpcy5fYnVpbGRlcj1uZXcgQnVpbGRlcihlKTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9nbG9iYWxEYXRhPXt1c2VkVHlwZWZhY2VzOm5ldyBTZXR9O3RoaXMuX2lkcz1uZXcgTWFwO3RoaXMuX2N1cnJlbnQ9dGhpcy5fYnVpbGRlci5idWlsZFJvb3QodGhpcy5faWRzKTt0aGlzLl9lcnJvckNvZGU9dm47dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT12bil7dGhpcy5fY3VycmVudFtZbl0oKTtyZXR1cm4gdGhpcy5fY3VycmVudC5lbGVtZW50fX1vblRleHQoZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsZT0+ZS5zbGljZSgxKSsiICIpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W19uXSgpP3RoaXMuX2N1cnJlbnRbTnNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtOc10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtOc10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwscj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6bix2YWx1ZTpzfW9mIGUpaWYoInhtbG5zIj09PW4pYT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPXM7ZWxzZSBpZihuLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW4uc3Vic3RyaW5nKDYpO3I/Pz1bXTtyLnB1c2goe3ByZWZpeDplLHZhbHVlOnN9KX1lbHNle2NvbnN0IGU9bi5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKWlbbl09cztlbHNle2NvbnN0IHQ9aVtNc10/Pz1PYmplY3QuY3JlYXRlKG51bGwpLFthLHJdPVtuLnNsaWNlKDAsZSksbi5zbGljZShlKzEpXTsodFthXXx8PU9iamVjdC5jcmVhdGUobnVsbCkpW3JdPXN9fXJldHVyblthLHIsaV19X2dldE5hbWVBbmRQcmVmaXgoZSx0KXtjb25zdCBhPWUuaW5kZXhPZigiOiIpO3JldHVybi0xPT09YT9bZSxudWxsXTpbZS5zdWJzdHJpbmcoYSsxKSx0PyIiOmUuc3Vic3RyaW5nKDAsYSldfW9uQmVnaW5FbGVtZW50KGUsdCxhKXtjb25zdFtyLGksbl09dGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksW3Msb109dGhpcy5fZ2V0TmFtZUFuZFByZWZpeChlLHRoaXMuX2J1aWxkZXIuaXNOc0Fnbm9zdGljKCkpLGM9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6byxuYW1lOnMsYXR0cmlidXRlczpuLG5hbWVzcGFjZTpyLHByZWZpeGVzOml9KTtjW2dzXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2NbWW5dKCk7dGhpcy5fY3VycmVudFtSc10oYykmJmNbSHNdKHRoaXMuX2lkcyk7Y1txbl0odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9Y319b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W3dzXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbR25dKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W0duXSk7dFtHbl09bnVsbDt0W1JzXShhKX10W1luXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtSc10odCkmJnRbSHNdKHRoaXMuX2lkcyk7dFtxbl0odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpO3RoaXMuZGF0YUhhbmRsZXI9bmV3IERhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW2dzXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiEoIXRoaXMucm9vdHx8IXRoaXMuZm9ybSl9X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bVnNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCh0LGEpPT57Y29uc3QgbmV4dEl0ZXJhdGlvbj0oKT0+e3RyeXtjb25zdCBhPWUubmV4dCgpO2EuZG9uZT90KGEudmFsdWUpOnNldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX1jYXRjaChlKXthKGUpfX07c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBsYXlvdXQ6ICR7ZX1gKX19Z2V0Qm91bmRpbmdCb3goZSl7cmV0dXJuIHRoaXMuZGltc1tlXX1hc3luYyBnZXROdW1QYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7cmV0dXJuIHRoaXMuZGltcy5sZW5ndGh9c2V0SW1hZ2VzKGUpe3RoaXMuZm9ybVtnc10uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW2dzXS5mb250RmluZGVyPW5ldyBGb250RmluZGVyKGUpO2NvbnN0IHQ9W107Zm9yKGxldCBlIG9mIHRoaXMuZm9ybVtnc10udXNlZFR5cGVmYWNlcyl7ZT1zdHJpcFF1b3RlcyhlKTt0aGlzLmZvcm1bZ3NdLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtnc10uZm9udEZpbmRlci5hZGQoZSx0KX1hc3luYyBnZXRQYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7Y29uc3QgZT10aGlzLnBhZ2VzO3RoaXMucGFnZXM9bnVsbDtyZXR1cm4gZX1zZXJpYWxpemVEYXRhKGUpe3JldHVybiB0aGlzLmRhdGFIYW5kbGVyLnNlcmlhbGl6ZShlKX1zdGF0aWMgX2NyZWF0ZURvY3VtZW50KGUpe3JldHVybiBlWyIveGRwOnhkcCJdP09iamVjdC52YWx1ZXMoZSkuam9pbigiIik6ZVsieGRwOnhkcCJdfXN0YXRpYyBnZXRSaWNoVGV4dEFzSHRtbChlKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXtsZXQgdD1uZXcgWEZBUGFyc2VyKFhodG1sTmFtZXNwYWNlLCEwKS5wYXJzZShlKTtpZighWyJib2R5IiwieGh0bWwiXS5pbmNsdWRlcyh0W0RzXSkpe2NvbnN0IGU9WGh0bWxOYW1lc3BhY2UuYm9keSh7fSk7ZVtqbl0odCk7dD1lfWNvbnN0IGE9dFtLc10oKTtpZighYS5zdWNjZXNzKXJldHVybiBudWxsO2NvbnN0e2h0bWw6cn09YSx7YXR0cmlidXRlczppfT1yO2lmKGkpe2kuY2xhc3MmJihpLmNsYXNzPWkuY2xhc3MuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSk7aS5kaXI9ImF1dG8ifXJldHVybntodG1sOnIsc3RyOnRbR3NdKCl9fWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX1jbGFzcyBBbm5vdGF0aW9uRmFjdG9yeXtzdGF0aWMgY3JlYXRlR2xvYmFscyhlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2UuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxlLmVuc3VyZURvYygieGZhRGF0YXNldHMiKSxlLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IiksZS5lbnN1cmVDYXRhbG9nKCJiYXNlVXJsIiksZS5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpLGUuZW5zdXJlQ2F0YWxvZygiZ2xvYmFsQ29sb3JTcGFjZUNhY2hlIildKS50aGVuKChbdCxhLHIsaSxuLHNdKT0+KHtwZGZNYW5hZ2VyOmUsYWNyb0Zvcm06dCBpbnN0YW5jZW9mIERpY3Q/dDpEaWN0LmVtcHR5LHhmYURhdGFzZXRzOmEsc3RydWN0VHJlZVJvb3Q6cixiYXNlVXJsOmksYXR0YWNobWVudHM6bixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6c30pLGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KX1zdGF0aWMgYXN5bmMgY3JlYXRlKGUsdCxhLHIsaSxuLHMsbyl7Y29uc3QgYz1pP2F3YWl0IHRoaXMuX2dldFBhZ2VJbmRleChlLHQsYS5wZGZNYW5hZ2VyKTpudWxsO3JldHVybiBhLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsIl9jcmVhdGUiLFtlLHQsYSxyLGksbixzLGMsb10pfXN0YXRpYyBfY3JlYXRlKGUsdCxhLHIsaT0hMSxuPW51bGwscz1udWxsLG89bnVsbCxjPW51bGwpe2NvbnN0IGw9ZS5mZXRjaElmUmVmKHQpO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsZXQgaD1sLmdldCgiU3VidHlwZSIpO2g9aCBpbnN0YW5jZW9mIE5hbWU/aC5uYW1lOm51bGw7aWYocyYmIXMuaGFzKERbaC50b1VwcGVyQ2FzZSgpXSkpcmV0dXJuIG51bGw7Y29uc3R7YWNyb0Zvcm06dSxwZGZNYW5hZ2VyOmR9PWEsZj10IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpgYW5ub3RfJHtyLmNyZWF0ZU9iaklkKCl9YCxnPXt4cmVmOmUscmVmOnQsZGljdDpsLHN1YnR5cGU6aCxpZDpmLGFubm90YXRpb25HbG9iYWxzOmEsY29sbGVjdEZpZWxkczppLG9ycGhhbkZpZWxkczpuLG5lZWRBcHBlYXJhbmNlczohaSYmITA9PT11LmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4Om8sZXZhbHVhdG9yT3B0aW9uczpkLmV2YWx1YXRvck9wdGlvbnMscGFnZVJlZjpjfTtzd2l0Y2goaCl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKGcpO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihnKTtjYXNlIldpZGdldCI6bGV0IGU9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDpsLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6bnVsbDtzd2l0Y2goZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbihnKTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uKGcpO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbihnKTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKGcpfXdhcm4oYFVuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIiR7ZX0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLmApO3JldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbihnKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbihnKTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbihnKTtjYXNlIkxpbmUiOnJldHVybiBuZXcgTGluZUFubm90YXRpb24oZyk7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbihnKTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uKGcpO2Nhc2UiUG9seUxpbmUiOnJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uKGcpO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbihnKTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbihnKTtjYXNlIkluayI6cmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uKGcpO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb24oZyk7Y2FzZSJVbmRlcmxpbmUiOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbihnKTtjYXNlIlNxdWlnZ2x5IjpyZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbihnKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uKGcpO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uKGcpO2Nhc2UiRmlsZUF0dGFjaG1lbnQiOnJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uKGcpO2RlZmF1bHQ6aXx8d2FybihoP2BVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtofSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYDoiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKTtyZXR1cm4gbmV3IEFubm90YXRpb24oZyl9fXN0YXRpYyBhc3luYyBfZ2V0UGFnZUluZGV4KGUsdCxhKXt0cnl7Y29uc3Qgcj1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4tMTtjb25zdCBpPXIuZ2V0UmF3KCJQIik7aWYoaSBpbnN0YW5jZW9mIFJlZil0cnl7cmV0dXJuIGF3YWl0IGEuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4IixbaV0pfWNhdGNoKGUpe2luZm8oYF9nZXRQYWdlSW5kZXggLS0gbm90IGEgdmFsaWQgcGFnZSByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihyLmhhcygiS2lkcyIpKXJldHVybi0xO2NvbnN0IG49YXdhaXQgYS5lbnN1cmVEb2MoIm51bVBhZ2VzIik7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3Qgcj1hd2FpdCBhLmdldFBhZ2UoZSksaT1hd2FpdCBhLmVuc3VyZShyLCJhbm5vdGF0aW9ucyIpO2Zvcihjb25zdCBhIG9mIGkpaWYoYSBpbnN0YW5jZW9mIFJlZiYmaXNSZWZzRXF1YWwoYSx0KSlyZXR1cm4gZX19Y2F0Y2goZSl7d2FybihgX2dldFBhZ2VJbmRleDogIiR7ZX0iLmApfXJldHVybi0xfXN0YXRpYyBnZW5lcmF0ZUltYWdlcyhlLHQsYSl7aWYoIWEpe3dhcm4oImdlbmVyYXRlSW1hZ2VzOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgY2Fubm90IHNhdmUgb3IgcHJpbnQgc29tZSBhbm5vdGF0aW9ucyB3aXRoIGltYWdlcy4iKTtyZXR1cm4gbnVsbH1sZXQgcjtmb3IoY29uc3R7Yml0bWFwSWQ6YSxiaXRtYXA6aX1vZiBlKWlmKGkpe3J8fD1uZXcgTWFwO3Iuc2V0KGEsU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZUltYWdlKGksdCkpfXJldHVybiByfXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEscixpKXtjb25zdCBuPWUueHJlZjtsZXQgcztjb25zdCBvPVtdLHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjfT1lLm9wdGlvbnM7Zm9yKGNvbnN0IGwgb2YgYSlpZighbC5kZWxldGVkKXN3aXRjaChsLmFubm90YXRpb25UeXBlKXtjYXNlIGc6aWYoIXMpe2NvbnN0IGU9bmV3IERpY3Qobik7ZS5zZXRJZk5hbWUoIkJhc2VGb250IiwiSGVsdmV0aWNhIik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJUeXBlMSIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIldpbkFuc2lFbmNvZGluZyIpO3M9bi5nZXROZXdUZW1wb3JhcnlSZWYoKTtpLnB1dChzLHtkYXRhOmV9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpzfSkpO2JyZWFrO2Nhc2UgcDpsLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGwsaSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkpKTticmVhaztjYXNlIGI6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGwsaSkpO2JyZWFrO2Nhc2UgbTpjb25zdCBhPWM/YXdhaXQocj8uZ2V0KGwuYml0bWFwSWQpKTpudWxsO2lmKGE/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWE7aWYodCl7Y29uc3QgYT1uLmdldE5ld1RlbXBvcmFyeVJlZigpO2kucHV0KGEse2RhdGE6dH0pO2UuZGljdC5zZXQoIlNNYXNrIixhKX1jb25zdCByPWEuaW1hZ2VSZWY9bi5nZXROZXdUZW1wb3JhcnlSZWYoKTtpLnB1dChyLHtkYXRhOmV9KTthLmltYWdlU3RyZWFtPWEuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkse2ltYWdlOmF9KSk7YnJlYWs7Y2FzZSB5Om8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGwsaSx7fSkpfXJldHVybnthbm5vdGF0aW9uczooYXdhaXQgUHJvbWlzZS5hbGwobykpLmZsYXQoKX19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEscixpKXtpZighcilyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOm4seHJlZjpzfT10LG89W107Zm9yKGNvbnN0IGMgb2YgcilpZighYy5kZWxldGVkKXN3aXRjaChjLmFubm90YXRpb25UeXBlKXtjYXNlIGc6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2V2YWx1YXRvcjp0LHRhc2s6YSxldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSBwOmMucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2V2YWx1YXRvck9wdGlvbnM6bn0pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2V2YWx1YXRvck9wdGlvbnM6bn0pKTticmVhaztjYXNlIGI6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSBtOmNvbnN0IHI9bi5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD9hd2FpdChpPy5nZXQoYy5iaXRtYXBJZCkpOm51bGw7aWYocj8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06dH09cjt0JiZlLmRpY3Quc2V0KCJTTWFzayIsdCk7ci5pbWFnZVJlZj1uZXcgSnBlZ1N0cmVhbShlLGUubGVuZ3RoKTtyLmltYWdlU3RyZWFtPXIuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHMsYyx7aW1hZ2U6cixldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSB5Om8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3JPcHRpb25zOm59KSl9cmV0dXJuIFByb21pc2UuYWxsKG8pfX1mdW5jdGlvbiBnZXRSZ2JDb2xvcihlLHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdDtjb25zdCBhPXR8fG5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDE6Q29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtjYXNlIDM6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDpDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIGdldFBkZkNvbG9yQXJyYXkoZSx0PW51bGwpe3JldHVybiBlJiZBcnJheS5mcm9tKGUsZT0+ZS8yNTUpfHx0fWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBhPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShhLG51bGwpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPW5ldyBGbG9hdDMyQXJyYXkoYS5sZW5ndGgpO2ZvcihsZXQgZT0wLGk9YS5sZW5ndGg7ZTxpO2UrPTgpe2NvbnN0W2ksbixzLG8sYyxsLGgsdV09YS5zbGljZShlLGUrOCksZD1NYXRoLm1pbihpLHMsYyxoKSxmPU1hdGgubWF4KGkscyxjLGgpLGc9TWF0aC5taW4obixvLGwsdSkscD1NYXRoLm1heChuLG8sbCx1KTtpZihudWxsIT09dCYmKGQ8dFswXXx8Zj50WzJdfHxnPHRbMV18fHA+dFszXSkpcmV0dXJuIG51bGw7ci5zZXQoW2QscCxmLHAsZCxnLGYsZ10sZSl9cmV0dXJuIHJ9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxhKXtjb25zdCByPW5ldyBGbG9hdDMyQXJyYXkoWzEvMCwxLzAsLTEvMCwtMS8wXSk7VXRpbC5heGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LGEscik7Y29uc3RbaSxuLHMsb109cjtpZihpPT09c3x8bj09PW8pcmV0dXJuWzEsMCwwLDEsZVswXSxlWzFdXTtjb25zdCBjPShlWzJdLWVbMF0pLyhzLWkpLGw9KGVbM10tZVsxXSkvKG8tbik7cmV0dXJuW2MsMCwwLGwsZVswXS1pKmMsZVsxXS1uKmxdfWNsYXNzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7Y29uc3R7ZGljdDp0LHhyZWY6YSxhbm5vdGF0aW9uR2xvYmFsczpyLHJlZjppLG9ycGhhbkZpZWxkczpufT1lLHM9bj8uZ2V0KGkpO3MmJnQuc2V0KCJQYXJlbnQiLHMpO3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3Qgbz10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMobyk7dGhpcy5zZXRSb3RhdGlvbihvLHQpO3RoaXMucmVmPWUucmVmIGluc3RhbmNlb2YgUmVmP2UucmVmOm51bGw7dGhpcy5fc3RyZWFtcz1bXTt0aGlzLmFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UpO2NvbnN0IGM9ISEodGhpcy5mbGFncyZqKSxsPSEhKHRoaXMuZmxhZ3MmWCk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZfKSxub0hUTUw6YyYmbCxpc0VkaXRhYmxlOiExLHN0cnVjdFBhcmVudDotMX07aWYoci5zdHJ1Y3RUcmVlUm9vdCl7bGV0IGE9dC5nZXQoIlN0cnVjdFBhcmVudCIpO3RoaXMuZGF0YS5zdHJ1Y3RQYXJlbnQ9YT1OdW1iZXIuaXNJbnRlZ2VyKGEpJiZhPj0wP2E6LTE7ci5zdHJ1Y3RUcmVlUm9vdC5hZGRBbm5vdGF0aW9uSWRUb1BhZ2UoZS5wYWdlUmVmLGEpfWlmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3Qgcj10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2Ygcil0IGluc3RhbmNlb2YgUmVmJiZlLnB1c2godC50b1N0cmluZygpKTswIT09ZS5sZW5ndGgmJih0aGlzLmRhdGEua2lkSWRzPWUpfXRoaXMuZGF0YS5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGEsdCxpZSk7dGhpcy5kYXRhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCk7dGhpcy5kYXRhLnBhZ2VJbmRleD1lLnBhZ2VJbmRleH1jb25zdCBoPXQuZ2V0KCJJVCIpO2ggaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLml0PWgubmFtZSk7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbDt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ITF9X2hhc0ZsYWcoZSx0KXtyZXR1cm4hIShlJnQpfV9idWlsZEZsYWdzKGUsdCl7bGV0e2ZsYWdzOmF9PXRoaXM7aWYodm9pZCAwPT09ZSl7aWYodm9pZCAwPT09dClyZXR1cm47cmV0dXJuIHQ/YSZ+TDphJn5FfEx9aWYoZSl7YXw9TDtyZXR1cm4gdD9hJn5VfEU6YSZ+RXxVfWEmPX4oRXxVKTtyZXR1cm4gdD9hJn5MOmF8TH1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLE4pJiYhdGhpcy5faGFzRmxhZyhlLFUpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLEwpJiYhdGhpcy5faGFzRmxhZyhlLEUpJiYhdGhpcy5faGFzRmxhZyhlLE4pfW11c3RCZVZpZXdlZChlLHQpe2NvbnN0IGE9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vVmlldztyZXR1cm4gdm9pZCAwIT09YT8hYTp0aGlzLnZpZXdhYmxlJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLEUpfW11c3RCZVByaW50ZWQoZSl7Y29uc3QgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9QcmludDtyZXR1cm4gdm9pZCAwIT09dD8hdDp0aGlzLnByaW50YWJsZX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7cmV0dXJuIGU/IXRoaXMuZGF0YS5pc0VkaXRhYmxlOiF0Py5oYXModGhpcy5kYXRhLmlkKX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PWJpZGkodCkuZGlyPyJydGwiOiJsdHIifX1zZXREZWZhdWx0QXBwZWFyYW5jZShlKXtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxyPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxhLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIHI/cjoiIjt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UpfXNldFRpdGxlKGUpe3RoaXMuX3RpdGxlPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldENvbnRlbnRzKGUpe3RoaXMuX2NvbnRlbnRzPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldE1vZGlmaWNhdGlvbkRhdGUoZSl7dGhpcy5tb2RpZmljYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9c2V0RmxhZ3MoZSl7dGhpcy5mbGFncz1OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjA/ZTowO3RoaXMuZmxhZ3MmTiYmIkFubm90YXRpb24iIT09dGhpcy5jb25zdHJ1Y3Rvci5uYW1lJiYodGhpcy5mbGFnc149Til9aGFzRmxhZyhlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLGUpfXNldFJlY3RhbmdsZShlKXt0aGlzLnJlY3RhbmdsZT1sb29rdXBOb3JtYWxSZWN0KGUsWzAsMCwwLDBdKX1zZXRDb2xvcihlKXt0aGlzLmNvbG9yPWdldFJnYkNvbG9yKGUpfXNldExpbmVFbmRpbmdzKGUpe3RoaXMubGluZUVuZGluZ3M9WyJOb25lIiwiTm9uZSJdO2lmKEFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aClmb3IobGV0IHQ9MDt0PDI7dCsrKXtjb25zdCBhPWVbdF07aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9d2FybihgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUsdCl7dGhpcy5yb3RhdGlvbj0wO2xldCBhPWUgaW5zdGFuY2VvZiBEaWN0P2UuZ2V0KCJSIil8fDA6dC5nZXQoIlJvdGF0ZSIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJjAhPT1hKXthJT0zNjA7YTwwJiYoYSs9MzYwKTthJTkwPT0wJiYodGhpcy5yb3RhdGlvbj1hKX19c2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyhlKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWlmKGUuaGFzKCJCUyIpKXtjb25zdCB0PWUuZ2V0KCJCUyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXQuZ2V0KCJUeXBlIik7aWYoIWV8fGlzTmFtZShlLCJCb3JkZXIiKSl7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0LmdldCgiVyIpLHRoaXMucmVjdGFuZ2xlKTt0aGlzLmJvcmRlclN0eWxlLnNldFN0eWxlKHQuZ2V0KCJTIikpO3RoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHQuZ2V0QXJyYXkoIkQiKSl9fX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1hO3JldHVybn1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtpZighKHIgaW5zdGFuY2VvZiBOYW1lJiZhLmhhcyhyLm5hbWUpKSlyZXR1cm47Y29uc3QgaT1hLmdldChyLm5hbWUpO2kgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPWkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2YgTmFtZT93YXJuKCJzZXRPcHRpb25hbENvbnRlbnQ6IFN1cHBvcnQgZm9yIC9OYW1lLWVudHJ5IGlzIG5vdCBpbXBsZW1lbnRlZC4iKTp0IGluc3RhbmNlb2YgRGljdCYmKHRoaXMub2M9dCl9YXN5bmMgbG9hZFJlc291cmNlcyhlLHQpe2NvbnN0IGE9YXdhaXQgdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKTthJiZhd2FpdCBPYmplY3RMb2FkZXIubG9hZChhLGUsYS54cmVmKTtyZXR1cm4gYX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEscil7Y29uc3R7aGFzT3duQ2FudmFzOmksaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgYz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShpJiZhJnMpO2lmKGwmJigwPT09dGhpcy53aWR0aHx8MD09PXRoaXMuaGVpZ2h0KSl7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMTtyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1pZighYyl7aWYoIWwpcmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgU3RyaW5nU3RyZWFtKCIiKTtjLmRpY3Q9bmV3IERpY3R9Y29uc3QgaD1jLmRpY3QsdT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoZ2EsYyksZD1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLGY9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLGZhKSxnPWdldFRyYW5zZm9ybU1hdHJpeChvLGQsZikscD1uZXcgT3BlcmF0b3JMaXN0O2xldCBtO3RoaXMub2MmJihtPWF3YWl0IGUucGFyc2VNYXJrZWRDb250ZW50UHJvcHModGhpcy5vYyxudWxsKSk7dm9pZCAwIT09bSYmcC5hZGRPcChDdCxbIk9DIixtXSk7cC5hZGRPcChSdCxbbixvLGcsZixsXSk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpjLHRhc2s6dCxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6cCxmYWxsYmFja0ZvbnREaWN0OnRoaXMuX2ZhbGxiYWNrRm9udERpY3R9KTtwLmFkZE9wKEJ0LFtdKTt2b2lkIDAhPT1tJiZwLmFkZE9wKHZ0LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpwLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhLHIpe3JldHVybiBudWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITF9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxhKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCByPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhwYSx0aGlzLmFwcGVhcmFuY2UpLGk9W10sbj1bXTtsZXQgcz1udWxsO2NvbnN0IG89e2Rlc2lyZWRTaXplOk1hdGguSW5maW5pdHkscmVhZHk6ITAsZW5xdWV1ZShlLHQpe2Zvcihjb25zdCB0IG9mIGUuaXRlbXMpaWYodm9pZCAwIT09dC5zdHIpe3N8fD10LnRyYW5zZm9ybS5zbGljZSgtMik7bi5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7aS5wdXNoKG4uam9pbigiIikudHJpbUVuZCgpKTtuLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6cixpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOm8sdmlld0JveDphfSk7dGhpcy5yZXNldCgpO24ubGVuZ3RoJiZpLnB1c2gobi5qb2luKCIiKS50cmltRW5kKCkpO2lmKGkubGVuZ3RoPjF8fGlbMF0pe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlLmRpY3QsdD1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKSxhPWxvb2t1cE1hdHJpeChlLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KHMsdCxhKTt0aGlzLmRhdGEudGV4dENvbnRlbnQ9aX19X3RyYW5zZm9ybVBvaW50KGUsdCxhKXtjb25zdHtyZWN0OnJ9PXRoaXMuZGF0YTt0fHw9WzAsMCwxLDFdO2F8fD1bMSwwLDAsMSwwLDBdO2NvbnN0IGk9Z2V0VHJhbnNmb3JtTWF0cml4KHIsdCxhKTtpWzRdLT1yWzBdO2lbNV0tPXJbMV07Y29uc3Qgbj1lLnNsaWNlKCk7VXRpbC5hcHBseVRyYW5zZm9ybShuLGkpO1V0aWwuYXBwbHlUcmFuc2Zvcm0obixhKTtyZXR1cm4gbn1nZXRGaWVsZE9iamVjdCgpe3JldHVybiB0aGlzLmRhdGEua2lkSWRzP3tpZDp0aGlzLmRhdGEuaWQsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHR5cGU6IiIsa2lkSWRzOnRoaXMuZGF0YS5raWRJZHMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHJvdGF0aW9uOnRoaXMucm90YXRpb259Om51bGx9cmVzZXQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9zdHJlYW1zKWUucmVzZXQoKX1fY29uc3RydWN0RmllbGROYW1lKGUpe2lmKCFlLmhhcygiVCIpJiYhZS5oYXMoIlBhcmVudCIpKXt3YXJuKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpO3JldHVybiIifWlmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IHI9bmV3IFJlZlNldDtlLm9iaklkJiZyLnB1dChlLm9iaklkKTtmb3IoO2EuaGFzKCJQYXJlbnQiKTspe2E9YS5nZXQoIlBhcmVudCIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpfHxhLm9iaklkJiZyLmhhcyhhLm9iaklkKSlicmVhazthLm9iaklkJiZyLnB1dChhLm9iaklkKTthLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoYS5nZXQoIlQiKSkpfXJldHVybiB0LmpvaW4oIi4iKX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF19Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0xO3RoaXMucmF3V2lkdGg9MTt0aGlzLnN0eWxlPVE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7dGhpcy5yYXdXaWR0aD1lO2NvbnN0IGE9KHRbMl0tdFswXSkvMixyPSh0WzNdLXRbMV0pLzI7aWYoYT4wJiZyPjAmJihlPmF8fGU+cikpe3dhcm4oYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1RO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1lZTticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9dGU7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPWFlO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1yZX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IGE9ITAscj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihyPSExKX1pZigwPT09ZS5sZW5ndGh8fGEmJiFyKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUoTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fWNsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIFJlZj9lLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBhPXQuZ2V0KCJSVCIpO3RoaXMuZGF0YS5yZXBseVR5cGU9YSBpbnN0YW5jZW9mIE5hbWU/YS5uYW1lOlJ9bGV0IGE9bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09TSl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2E9ZS5nZXRSYXcoIlBvcHVwIik7aWYoZS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihlLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGx9ZWxzZXt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDcmVhdGlvbkRhdGUodC5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlO2E9dC5nZXRSYXcoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10aGlzLmRhdGEucG9wdXBSZWY9YSBpbnN0YW5jZW9mIFJlZj9hLnRvU3RyaW5nKCk6bnVsbDt0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTppLHN0cm9rZUFscGhhOm4sZmlsbEFscGhhOnMscG9pbnRzQ2FsbGJhY2s6b30pe2NvbnN0IGM9dGhpcy5kYXRhLnJlY3Q9WzEvMCwxLzAsLTEvMCwtMS8wXSxsPVsicSJdO3QmJmwucHVzaCh0KTthJiZsLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IFJHYCk7ciYmbC5wdXNoKGAke3JbMF19ICR7clsxXX0gJHtyWzJdfSByZ2ApO2NvbnN0IGg9dGhpcy5kYXRhLnF1YWRQb2ludHN8fEZsb2F0MzJBcnJheS5mcm9tKFt0aGlzLnJlY3RhbmdsZVswXSx0aGlzLnJlY3RhbmdsZVszXSx0aGlzLnJlY3RhbmdsZVsyXSx0aGlzLnJlY3RhbmdsZVszXSx0aGlzLnJlY3RhbmdsZVswXSx0aGlzLnJlY3RhbmdsZVsxXSx0aGlzLnJlY3RhbmdsZVsyXSx0aGlzLnJlY3RhbmdsZVsxXV0pO2ZvcihsZXQgZT0wLHQ9aC5sZW5ndGg7ZTx0O2UrPTgpe2NvbnN0IHQ9byhsLGguc3ViYXJyYXkoZSxlKzgpKTtVdGlsLnJlY3RCb3VuZGluZ0JveCguLi50LGMpfWwucHVzaCgiUSIpO2NvbnN0IHU9bmV3IERpY3QoZSksZD1uZXcgRGljdChlKTtkLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjb25zdCBmPW5ldyBTdHJpbmdTdHJlYW0obC5qb2luKCIgIikpO2YuZGljdD1kO3Uuc2V0KCJGbTAiLGYpO2NvbnN0IGc9bmV3IERpY3QoZSk7aSYmZy5zZXRJZk5hbWUoIkJNIixpKTtnLnNldElmTnVtYmVyKCJDQSIsbik7Zy5zZXRJZk51bWJlcigiY2EiLHMpO2NvbnN0IHA9bmV3IERpY3QoZSk7cC5zZXQoIkdTMCIsZyk7Y29uc3QgbT1uZXcgRGljdChlKTttLnNldCgiRXh0R1N0YXRlIixwKTttLnNldCgiWE9iamVjdCIsdSk7Y29uc3QgYj1uZXcgRGljdChlKTtiLnNldCgiUmVzb3VyY2VzIixtKTtiLnNldCgiQkJveCIsYyk7dGhpcy5hcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PWI7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSxmKX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBpPXQucmVmfHw9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKSxuPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbSh0LGUscik7bGV0IHM7aWYobil7Y29uc3Qgcj1lLmdldE5ld1RlbXBvcmFyeVJlZigpO3M9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6cn0pO2EucHV0KHIse2RhdGE6bn0pfWVsc2Ugcz10aGlzLmNyZWF0ZU5ld0RpY3QodCxlLHt9KTtOdW1iZXIuaXNJbnRlZ2VyKHQucGFyZW50VHJlZUlkKSYmcy5zZXQoIlN0cnVjdFBhcmVudCIsdC5wYXJlbnRUcmVlSWQpO2EucHV0KGkse2RhdGE6c30pO2NvbnN0IG89e3JlZjppfSx7cG9wdXA6Y309dDtpZihjKXtpZihjLmRlbGV0ZWQpe3MuZGVsZXRlKCJQb3B1cCIpO3MuZGVsZXRlKCJDb250ZW50cyIpO3MuZGVsZXRlKCJSQyIpO3JldHVybiBvfWNvbnN0IHQ9Yy5yZWZ8fD1lLmdldE5ld1RlbXBvcmFyeVJlZigpO2MucGFyZW50PWk7Y29uc3Qgcj1Qb3B1cEFubm90YXRpb24uY3JlYXRlTmV3RGljdChjLGUpO2EucHV0KHQse2RhdGE6cn0pO3Muc2V0SWZEZWZpbmVkKCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjLmNvbnRlbnRzKSk7cy5zZXQoIlBvcHVwIix0KTtyZXR1cm5bbyx7cmVmOnR9XX1yZXR1cm4gb31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsdCxhLHIpe2NvbnN0IGk9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGEsdCxyKSxuPXRoaXMuY3JlYXRlTmV3RGljdChhLHQsaT97YXA6aX06e30pLHM9bmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjp0LGFubm90YXRpb25HbG9iYWxzOmUsZXZhbHVhdG9yT3B0aW9uczpyLmV2YWx1YXRvck9wdGlvbnN9KTthLnJlZiYmKHMucmVmPXMucmVmVG9SZXBsYWNlPWEucmVmKTtyZXR1cm4gc319Y2xhc3MgV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YSxhbm5vdGF0aW9uR2xvYmFsczpyfT1lLGk9dGhpcy5kYXRhO3RoaXMuX25lZWRBcHBlYXJhbmNlcz1lLm5lZWRBcHBlYXJhbmNlcztpLmFubm90YXRpb25UeXBlPUQuV0lER0VUO3ZvaWQgMD09PWkuZmllbGROYW1lJiYoaS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpKTt2b2lkIDA9PT1pLmFjdGlvbnMmJihpLmFjdGlvbnM9Y29sbGVjdEFjdGlvbnMoYSx0LGllKSk7bGV0IG49Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiViIsZ2V0QXJyYXk6ITB9KTtpLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4pO2NvbnN0IHM9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFYiLGdldEFycmF5OiEwfSk7aS5kZWZhdWx0RmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUocyk7aWYodm9pZCAwPT09biYmci54ZmFEYXRhc2V0cyl7Y29uc3QgZT10aGlzLl90aXRsZS5zdHI7aWYoZSl7dGhpcy5faGFzVmFsdWVGcm9tWEZBPSEwO2kuZmllbGRWYWx1ZT1uPXIueGZhRGF0YXNldHMuZ2V0VmFsdWUoZSl9fXZvaWQgMD09PW4mJm51bGwhPT1pLmRlZmF1bHRGaWVsZFZhbHVlJiYoaS5maWVsZFZhbHVlPWkuZGVmYXVsdEZpZWxkVmFsdWUpO2kuYWx0ZXJuYXRpdmVUZXh0PXN0cmluZ1RvUERGU3RyaW5nKHQuZ2V0KCJUVSIpfHwiIik7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTtpLmhhc0FwcGVhcmFuY2V8fD10aGlzLl9uZWVkQXBwZWFyYW5jZXMmJnZvaWQgMCE9PWkuZmllbGRWYWx1ZSYmbnVsbCE9PWkuZmllbGRWYWx1ZTtjb25zdCBvPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZUIn0pO2kuZmllbGRUeXBlPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2NvbnN0IGM9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFIifSksbD1yLmFjcm9Gb3JtLmdldCgiRFIiKSxoPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczpjLGFjcm9Gb3JtUmVzb3VyY2VzOmwsYXBwZWFyYW5jZVJlc291cmNlczpoLG1lcmdlZFJlc291cmNlczpEaWN0Lm1lcmdlKHt4cmVmOmEsZGljdEFycmF5OltjLGgsbF0sbWVyZ2VTdWJEaWN0czohMH0pfTtpLmZpZWxkRmxhZ3M9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRmYifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkuZmllbGRGbGFncyl8fGkuZmllbGRGbGFnczwwKSYmKGkuZmllbGRGbGFncz0wKTtpLnBhc3N3b3JkPXRoaXMuaGFzRmllbGRGbGFnKHopO2kucmVhZE9ubHk9dGhpcy5oYXNGaWVsZEZsYWcocSk7aS5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhIKTtpLmhpZGRlbj10aGlzLl9oYXNGbGFnKGkuYW5ub3RhdGlvbkZsYWdzLEUpfHx0aGlzLl9oYXNGbGFnKGkuYW5ub3RhdGlvbkZsYWdzLFUpfV9kZWNvZGVGb3JtVmFsdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoZT0+InN0cmluZyI9PXR5cGVvZiBlKS5tYXAoZT0+c3RyaW5nVG9QREZTdHJpbmcoZSkpOmUgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsVSl9Z2V0Um90YXRpb25NYXRyaXgoZSl7bGV0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnJvdGF0aW9uO3ZvaWQgMD09PXQmJih0PXRoaXMucm90YXRpb24pO3JldHVybiAwPT09dD9mYTpnZXRSb3RhdGlvbk1hdHJpeCh0LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7aWYoIXRoaXMuYmFja2dyb3VuZENvbG9yJiYhdGhpcy5ib3JkZXJDb2xvcilyZXR1cm4iIjtjb25zdCBhPTA9PT10fHwxODA9PT10P2AwIDAgJHt0aGlzLndpZHRofSAke3RoaXMuaGVpZ2h0fSByZWA6YDAgMCAke3RoaXMuaGVpZ2h0fSAke3RoaXMud2lkdGh9IHJlYDtsZXQgcj0iIjt0aGlzLmJhY2tncm91bmRDb2xvciYmKHI9YCR7Z2V0UGRmQ29sb3IodGhpcy5iYWNrZ3JvdW5kQ29sb3IsITApfSAke2F9IGYgYCk7aWYodGhpcy5ib3JkZXJDb2xvcil7cis9YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MX0gdyAke2dldFBkZkNvbG9yKHRoaXMuYm9yZGVyQ29sb3IsITEpfSAke2F9IFMgYH1yZXR1cm4gcn1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEscil7aWYoYSZsJiYhKHRoaXMgaW5zdGFuY2VvZiBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKSYmIXRoaXMuZGF0YS5ub0hUTUwmJiF0aGlzLmRhdGEuaGFzT3duQ2FudmFzKXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITAsc2VwYXJhdGVDYW52YXM6ITF9O2lmKCF0aGlzLl9oYXNUZXh0KXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEscik7Y29uc3QgaT1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxhLHIpO2lmKHRoaXMuYXBwZWFyYW5jZSYmbnVsbD09PWkpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxyKTtjb25zdCBuPW5ldyBPcGVyYXRvckxpc3Q7aWYoIXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHxudWxsPT09aSlyZXR1cm57b3BMaXN0Om4sc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtjb25zdCBvPSEhKHRoaXMuZGF0YS5oYXNPd25DYW52YXMmJmEmcyksYz1bMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHRdLGg9Z2V0VHJhbnNmb3JtTWF0cml4KHRoaXMuZGF0YS5yZWN0LGMsWzEsMCwwLDEsMCwwXSk7bGV0IHU7dGhpcy5vYyYmKHU9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT11JiZuLmFkZE9wKEN0LFsiT0MiLHVdKTtuLmFkZE9wKFJ0LFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsaCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpLG9dKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0oaSk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpkLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSk7bi5hZGRPcChCdCxbXSk7dm9pZCAwIT09dSYmbi5hZGRPcCh2dCxbXSk7cmV0dXJue29wTGlzdDpuLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpvfX1fZ2V0TUtEaWN0KGUpe2NvbnN0IHQ9bmV3IERpY3QobnVsbCk7ZSYmdC5zZXQoIlIiLGUpO3Quc2V0SWZBcnJheSgiQkMiLGdldFBkZkNvbG9yQXJyYXkodGhpcy5ib3JkZXJDb2xvcikpO3Quc2V0SWZBcnJheSgiQkciLGdldFBkZkNvbG9yQXJyYXkodGhpcy5iYWNrZ3JvdW5kQ29sb3IpKTtyZXR1cm4gdC5zaXplPjA/dDpudWxsfWFtZW5kU2F2ZWREaWN0KGUsdCl7fXNldFZhbHVlKGUsdCxhLHIpe2NvbnN0e2RpY3Q6aSxyZWY6bn09ZnVuY3Rpb24gZ2V0UGFyZW50VG9VcGRhdGUoZSx0LGEpe2NvbnN0IHI9bmV3IFJlZlNldCxpPWUsbj17ZGljdDpudWxsLHJlZjpudWxsfTtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYhci5oYXModCk7KXtyLnB1dCh0KTtpZihlLmhhcygiVCIpKWJyZWFrO2lmKCEoKHQ9ZS5nZXRSYXcoIlBhcmVudCIpKWluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbjtlPWEuZmV0Y2godCl9aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUhPT1pKXtuLmRpY3Q9ZTtuLnJlZj10fXJldHVybiBufShlLHRoaXMucmVmLGEpO2lmKGkpe2lmKCFyLmhhcyhuKSl7Y29uc3QgZT1pLmNsb25lKCk7ZS5zZXQoIlYiLHQpO3IucHV0KG4se2RhdGE6ZX0pO3JldHVybiBlfX1lbHNlIGUuc2V0KCJWIix0KTtyZXR1cm4gbnVsbH1hc3luYyBzYXZlKGUsdCxhLHIpe2NvbnN0IGk9YT8uZ2V0KHRoaXMuZGF0YS5pZCksbj10aGlzLl9idWlsZEZsYWdzKGk/Lm5vVmlldyxpPy5ub1ByaW50KTtsZXQgcz1pPy52YWx1ZSxvPWk/LnJvdGF0aW9uO2lmKHM9PT10aGlzLmRhdGEuZmllbGRWYWx1ZXx8dm9pZCAwPT09cyl7aWYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmdm9pZCAwPT09byYmdm9pZCAwPT09bilyZXR1cm47c3x8PXRoaXMuZGF0YS5maWVsZFZhbHVlfWlmKHZvaWQgMD09PW8mJiF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJkFycmF5LmlzQXJyYXkocykmJkFycmF5LmlzQXJyYXkodGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZpc0FycmF5RXF1YWwocyx0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJnZvaWQgMD09PW4pcmV0dXJuO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBsPW51bGw7aWYoIXRoaXMuX25lZWRBcHBlYXJhbmNlcyl7bD1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxjLGEpO2lmKG51bGw9PT1sJiZ2b2lkIDA9PT1uKXJldHVybn1sZXQgaD0hMTtpZihsPy5uZWVkQXBwZWFyYW5jZXMpe2g9ITA7bD1udWxsfWNvbnN0e3hyZWY6dX09ZSxkPXUuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShkIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGY9bmV3IERpY3QodSk7Zm9yKGNvbnN0IGUgb2YgZC5nZXRLZXlzKCkpIkFQIiE9PWUmJmYuc2V0KGUsZC5nZXRSYXcoZSkpO2lmKHZvaWQgMCE9PW4pe2Yuc2V0KCJGIixuKTtpZihudWxsPT09bCYmIWgpe2NvbnN0IGU9ZC5nZXRSYXcoIkFQIik7ZSYmZi5zZXQoIkFQIixlKX19Y29uc3QgZz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOnN9LHA9dGhpcy5zZXRWYWx1ZShmLEFycmF5LmlzQXJyYXkocyk/cy5tYXAoc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSk6c3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShzKSx1LHIpO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxwfHxmKTtjb25zdCBtPXRoaXMuX2dldE1LRGljdChvKTttJiZmLnNldCgiTUsiLG0pO3IucHV0KHRoaXMucmVmLHtkYXRhOmYseGZhOmcsbmVlZEFwcGVhcmFuY2VzOmh9KTtpZihudWxsIT09bCl7Y29uc3QgZT11LmdldE5ld1RlbXBvcmFyeVJlZigpLHQ9bmV3IERpY3QodSk7Zi5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7Y29uc3QgaT10aGlzLl9nZXRTYXZlRmllbGRSZXNvdXJjZXModSksbj1uZXcgU3RyaW5nU3RyZWFtKGwpLHM9bi5kaWN0PW5ldyBEaWN0KHUpO3Muc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO3Muc2V0KCJSZXNvdXJjZXMiLGkpO2NvbnN0IGM9byUxODA9PTA/WzAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0XTpbMCwwLHRoaXMuaGVpZ2h0LHRoaXMud2lkdGhdO3Muc2V0KCJCQm94IixjKTtjb25zdCBoPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSk7aCE9PWZhJiZzLnNldCgiTWF0cml4IixoKTtyLnB1dChlLHtkYXRhOm4seGZhOm51bGwsbmVlZEFwcGVhcmFuY2VzOiExfSl9Zi5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxhLHIpe2lmKHRoaXMuZGF0YS5wYXNzd29yZClyZXR1cm4gbnVsbDtjb25zdCBuPXI/LmdldCh0aGlzLmRhdGEuaWQpO2xldCBzLG87aWYobil7cz1uLmZvcm1hdHRlZFZhbHVlfHxuLnZhbHVlO289bi5yb3RhdGlvbn1pZih2b2lkIDA9PT1vJiZ2b2lkIDA9PT1zJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzJiYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQXx8dGhpcy5hcHBlYXJhbmNlKSlyZXR1cm4gbnVsbDtjb25zdCBsPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKHIpO2lmKHZvaWQgMD09PXMpe3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXMpcmV0dXJuYC9UeCBCTUMgcSAke2x9USBFTUNgfUFycmF5LmlzQXJyYXkocykmJjE9PT1zLmxlbmd0aCYmKHM9c1swXSk7YXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcywiRXhwZWN0ZWQgYHZhbHVlYCB0byBiZSBhIHN0cmluZy4iKTtzPXMudHJpbUVuZCgpO2lmKHRoaXMuZGF0YS5jb21ibyl7Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5maW5kKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSk7cz1lPy5kaXNwbGF5VmFsdWV8fHN9aWYoIiI9PT1zKXJldHVybmAvVHggQk1DIHEgJHtsfVEgRU1DYDt2b2lkIDA9PT1vJiYobz10aGlzLnJvdGF0aW9uKTtsZXQgaCx1PS0xO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe2g9cy5zcGxpdCgvXHJcbj98XG4vKS5tYXAoZT0+ZS5ub3JtYWxpemUoIk5GQyIpKTt1PWgubGVuZ3RofWVsc2UgaD1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldHt3aWR0aDpkLGhlaWdodDpmfT10aGlzOzkwIT09byYmMjcwIT09b3x8KFtkLGZdPVtmLGRdKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtsZXQgZyxwLG0sYj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2NvbnN0IHk9W107bGV0IHc9ITE7Zm9yKGNvbnN0IGUgb2YgaCl7Y29uc3QgdD1iLmVuY29kZVN0cmluZyhlKTt0Lmxlbmd0aD4xJiYodz0hMCk7eS5wdXNoKHQuam9pbigiIikpfWlmKHcmJmEmYylyZXR1cm57bmVlZEFwcGVhcmFuY2VzOiEwfTtpZih3JiZ0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgYT10aGlzLmRhdGEuY29tYj8ibW9ub3NwYWNlIjoic2Fucy1zZXJpZiIscj1uZXcgRmFrZVVuaWNvZGVGb250KGUueHJlZixhKSxpPXIuY3JlYXRlRm9udFJlc291cmNlcyhoLmpvaW4oIiIpKSxuPWkuZ2V0UmF3KCJGb250Iik7aWYodGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmhhcygiRm9udCIpKXtjb25zdCBlPXRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5nZXQoIkZvbnQiKTtmb3IoY29uc3QgdCBvZiBuLmdldEtleXMoKSllLnNldCh0LG4uZ2V0UmF3KHQpKX1lbHNlIHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5zZXQoIkZvbnQiLG4pO2NvbnN0IG89ci5mb250TmFtZS5uYW1lO2I9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHtmb250TmFtZTpvLGZvbnRTaXplOjB9LGkpO2ZvcihsZXQgZT0wLHQ9eS5sZW5ndGg7ZTx0O2UrKyl5W2VdPXN0cmluZ1RvVVRGMTZTdHJpbmcoaFtlXSk7Y29uc3QgYz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT0wO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udE5hbWU9bztbZyxwLG1dPXRoaXMuX2NvbXB1dGVGb250U2l6ZShmLTIsZC00LHMsYix1KTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPWN9ZWxzZXt0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZHx8d2FybigiX2dldEFwcGVhcmFuY2U6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKTtbZyxwLG1dPXRoaXMuX2NvbXB1dGVGb250U2l6ZShmLTIsZC00LHMsYix1KX1sZXQgeD1iLmRlc2NlbnQ7eD1pc05hTih4KT9pKm06TWF0aC5tYXgoaSptLE1hdGguYWJzKHgpKnApO2NvbnN0IFM9TWF0aC5taW4oTWF0aC5mbG9vcigoZi1wKS8yKSwxKSxrPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZyx5LGIscCxkLGYsaywyLFMseCxtLHIpO2lmKHRoaXMuZGF0YS5jb21iKXJldHVybiB0aGlzLl9nZXRDb21iQXBwZWFyYW5jZShnLGIseVswXSxwLGQsZiwyLFMseCxtLHIpO2NvbnN0IEM9Uyt4O2lmKDA9PT1rfHxrPjIpcmV0dXJuYC9UeCBCTUMgcSAke2x9QlQgYCtnK2AgMSAwIDAgMSAke251bWJlclRvU3RyaW5nKDIpfSAke251bWJlclRvU3RyaW5nKEMpfSBUbSAoJHtlc2NhcGVTdHJpbmcoeVswXSl9KSBUaiBFVCBRIEVNQ2A7cmV0dXJuYC9UeCBCTUMgcSAke2x9QlQgYCtnK2AgMSAwIDAgMSAwIDAgVG0gJHt0aGlzLl9yZW5kZXJUZXh0KHlbMF0sYixwLGQsayx7c2hpZnQ6MH0sMixDKX0gRVQgUSBFTUNgfXN0YXRpYyBhc3luYyBfZ2V0Rm9udERhdGEoZSx0LGEscil7Y29uc3QgaT1uZXcgT3BlcmF0b3JMaXN0LG49e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOnMsZm9udFNpemU6b309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbcyYmTmFtZS5nZXQocyksb10sbnVsbCxpLHQsbixudWxsKTtyZXR1cm4gbi5mb250fV9nZXRUZXh0V2lkdGgoZSx0KXtyZXR1cm4gTWF0aC5zdW1QcmVjaXNlKHQuY2hhcnNUb0dseXBocyhlKS5tYXAoZT0+ZS53aWR0aCkpLzFlM31fY29tcHV0ZUZvbnRTaXplKGUsdCxyLGksbil7bGV0e2ZvbnRTaXplOnN9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsbz0oc3x8MTIpKmEsYz1NYXRoLnJvdW5kKGUvbyk7aWYoIXMpe2NvbnN0IHJvdW5kV2l0aFR3b0RpZ2l0cz1lPT5NYXRoLmZsb29yKDEwMCplKS8xMDA7aWYoLTE9PT1uKXtjb25zdCBuPXRoaXMuX2dldFRleHRXaWR0aChyLGkpO3M9cm91bmRXaXRoVHdvRGlnaXRzKE1hdGgubWluKGUvYSx0L24pKTtjPTF9ZWxzZXtjb25zdCBsPXIuc3BsaXQoL1xyXG4/fFxuLyksaD1bXTtmb3IoY29uc3QgZSBvZiBsKXtjb25zdCB0PWkuZW5jb2RlU3RyaW5nKGUpLmpvaW4oIiIpLGE9aS5jaGFyc1RvR2x5cGhzKHQpLHI9aS5nZXRDaGFyUG9zaXRpb25zKHQpO2gucHVzaCh7bGluZTp0LGdseXBoczphLHBvc2l0aW9uczpyfSl9Y29uc3QgaXNUb29CaWc9YT0+e2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgaCl7cis9dGhpcy5fc3BsaXRMaW5lKG51bGwsaSxhLHQsbikubGVuZ3RoKmE7aWYocj5lKXJldHVybiEwfXJldHVybiExfTtjPU1hdGgubWF4KGMsbik7Zm9yKDs7KXtvPWUvYztzPXJvdW5kV2l0aFR3b0RpZ2l0cyhvL2EpO2lmKCFpc1Rvb0JpZyhzKSlicmVhaztjKyt9fWNvbnN0e2ZvbnROYW1lOmwsZm9udENvbG9yOmh9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9ZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEFwcGVhcmFuY2Uoe2ZvbnRTaXplOmUsZm9udE5hbWU6dCxmb250Q29sb3I6YX0pe3JldHVybmAvJHtlc2NhcGVQREZOYW1lKHQpfSAke2V9IFRmICR7Z2V0UGRmQ29sb3IoYSwhMCl9YH0oe2ZvbnRTaXplOnMsZm9udE5hbWU6bCxmb250Q29sb3I6aH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxzLGUvY119X3JlbmRlclRleHQoZSx0LGEscixpLG4scyxvKXtsZXQgYztpZigxPT09aSl7Yz0oci10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PWkpe2M9ci10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLXN9ZWxzZSBjPXM7Y29uc3QgbD1udW1iZXJUb1N0cmluZyhjLW4uc2hpZnQpO24uc2hpZnQ9YztyZXR1cm5gJHtsfSAke289bnVtYmVyVG9TdHJpbmcobyl9IFRkICgke2VzY2FwZVN0cmluZyhlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOnJ9PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLGk9dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT8uZm9udE5hbWU7aWYoIWkpcmV0dXJuIHR8fERpY3QuZW1wdHk7Zm9yKGNvbnN0IGUgb2ZbdCxhXSlpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiZ0LmhhcyhpKSlyZXR1cm4gZX1pZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgYT1yLmdldCgiRm9udCIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcyhpKSl7Y29uc3Qgcj1uZXcgRGljdChlKTtyLnNldChpLGEuZ2V0UmF3KGkpKTtjb25zdCBuPW5ldyBEaWN0KGUpO24uc2V0KCJGb250IixyKTtyZXR1cm4gRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbbix0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxEaWN0LmVtcHR5fWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIG51bGx9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIlBNRCIpKXt0aGlzLmZsYWdzfD1FO3RoaXMuZGF0YS5oaWRkZW49ITA7d2FybigiQmFyY29kZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX10aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5yZWFkT25seSYmIXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5faGFzVGV4dD0hMDsic3RyaW5nIiE9dHlwZW9mIHRoaXMuZGF0YS5maWVsZFZhbHVlJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9IiIpO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlEifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDB8fGE+MikmJihhPW51bGwpO3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50PWE7bGV0IHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiTWF4TGVuIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyKXx8cjwwKSYmKHI9MCk7dGhpcy5kYXRhLm1heExlbj1yO3RoaXMuZGF0YS5tdWx0aUxpbmU9dGhpcy5oYXNGaWVsZEZsYWcoVyk7dGhpcy5kYXRhLmNvbWI9dGhpcy5oYXNGaWVsZEZsYWcoWikmJiF0aGlzLmRhdGEubXVsdGlMaW5lJiYhdGhpcy5kYXRhLnBhc3N3b3JkJiYhdGhpcy5oYXNGaWVsZEZsYWcoSykmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhZKTtjb25zdHtkYXRhOnthY3Rpb25zOml9fT10aGlzO2lmKCFpKXJldHVybjtjb25zdCBuPS9eQUYoRGF0ZXxUaW1lKV8oPzpLZXlzdHJva2V8Rm9ybWF0KSg/OkV4KT9cKFsnIl0/KFteJyJdKylbJyJdP1wpOyQvO2xldCBzPSExOygxPT09aS5Gb3JtYXQ/Lmxlbmd0aCYmMT09PWkuS2V5c3Ryb2tlPy5sZW5ndGgmJm4udGVzdChpLkZvcm1hdFswXSkmJm4udGVzdChpLktleXN0cm9rZVswXSl8fDA9PT1pLkZvcm1hdD8ubGVuZ3RoJiYxPT09aS5LZXlzdHJva2U/Lmxlbmd0aCYmbi50ZXN0KGkuS2V5c3Ryb2tlWzBdKXx8MD09PWkuS2V5c3Ryb2tlPy5sZW5ndGgmJjE9PT1pLkZvcm1hdD8ubGVuZ3RoJiZuLnRlc3QoaS5Gb3JtYXRbMF0pKSYmKHM9ITApO2NvbnN0IG89W107aS5Gb3JtYXQmJm8ucHVzaCguLi5pLkZvcm1hdCk7aS5LZXlzdHJva2UmJm8ucHVzaCguLi5pLktleXN0cm9rZSk7aWYocyl7ZGVsZXRlIGkuS2V5c3Ryb2tlO2kuRm9ybWF0PW99Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD1lLm1hdGNoKG4pO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGE9IkRhdGUiPT09dFsxXTtsZXQgcj10WzJdO2NvbnN0IGk9cGFyc2VJbnQociwxMCk7aXNOYU4oaSl8fE1hdGguZmxvb3IoTWF0aC5sb2cxMChpKSkrMSE9PXRbMl0ubGVuZ3RofHwocj0oYT9rbjpDbilbaV0/P3IpO3RoaXMuZGF0YS5kYXRldGltZUZvcm1hdD1yO2lmKCFzKWJyZWFrO2lmKGEpe2lmKC9ISHxNTXxzc3xoLy50ZXN0KHIpKXt0aGlzLmRhdGEuZGF0ZXRpbWVUeXBlPSJkYXRldGltZS1sb2NhbCI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChyKT8xOjYwfWVsc2UgdGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0iZGF0ZSI7YnJlYWt9dGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0idGltZSI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChyKT8xOjYwO2JyZWFrfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hIXRoaXMuYXBwZWFyYW5jZSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlc31fZ2V0Q29tYkFwcGVhcmFuY2UoZSx0LGEscixpLG4scyxvLGMsbCxoKXtjb25zdCB1PWkvdGhpcy5kYXRhLm1heExlbixkPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGY9W10sZz10LmdldENoYXJQb3NpdGlvbnMoYSk7Zm9yKGNvbnN0W2UsdF1vZiBnKWYucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGEuc3Vic3RyaW5nKGUsdCkpfSkgVGpgKTtjb25zdCBwPWYuam9pbihgICR7bnVtYmVyVG9TdHJpbmcodSl9IDAgVGQgYCk7cmV0dXJuYC9UeCBCTUMgcSAke2R9QlQgYCtlK2AgMSAwIDAgMSAke251bWJlclRvU3RyaW5nKHMpfSAke251bWJlclRvU3RyaW5nKG8rYyl9IFRtICR7cH0gRVQgUSBFTUNgfV9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1KXtjb25zdCBkPVtdLGY9aS0yKm8sZz17c2hpZnQ6MH07Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0sdT10aGlzLl9zcGxpdExpbmUobixhLHIsZik7Zm9yKGxldCB0PTAsbj11Lmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXVbdF0sZj0wPT09ZSYmMD09PXQ/LWMtKGgtbCk6LWg7ZC5wdXNoKHRoaXMuX3JlbmRlclRleHQobixhLHIsaSxzLGcsbyxmKSl9fWNvbnN0IHA9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXModSksbT1kLmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3B9QlQgYCtlK2AgMSAwIDAgMSAwICR7bnVtYmVyVG9TdHJpbmcobil9IFRtICR7bX0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixpPXt9KXtlPWkubGluZXx8ZTtjb25zdCBuPWkuZ2x5cGhzfHx0LmNoYXJzVG9HbHlwaHMoZSk7aWYobi5sZW5ndGg8PTEpcmV0dXJuW2VdO2NvbnN0IHM9aS5wb3NpdGlvbnN8fHQuZ2V0Q2hhclBvc2l0aW9ucyhlKSxvPWEvMWUzLGM9W107bGV0IGw9LTEsaD0tMSx1PS0xLGQ9MCxmPTA7Zm9yKGxldCB0PTAsYT1uLmxlbmd0aDt0PGE7dCsrKXtjb25zdFthLGldPXNbdF0sZz1uW3RdLHA9Zy53aWR0aCpvO2lmKCIgIj09PWcudW5pY29kZSlpZihmK3A+cil7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsYSkpO2Q9YTtmPXA7bD0tMTt1PS0xfWVsc2V7Zis9cDtsPWE7aD1pO3U9dH1lbHNlIGlmKGYrcD5yKWlmKC0xIT09bCl7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsaCkpO2Q9aDt0PXUrMTtsPS0xO2Y9MH1lbHNle2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wfWVsc2UgZis9cH1kPGUubGVuZ3RoJiZjLnB1c2goZS5zdWJzdHJpbmcoZCxlLmxlbmd0aCkpO3JldHVybiBjfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsYSl7YXdhaXQgc3VwZXIuZXh0cmFjdFRleHRDb250ZW50KGUsdCxhKTtjb25zdCByPXRoaXMuZGF0YS50ZXh0Q29udGVudDtpZighcilyZXR1cm47Y29uc3QgaT1yLmpvaW4oIlxuIik7aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlKXJldHVybjtjb25zdCBuPWkucmVwbGFjZUFsbCgvKFsuKis/XiR7fSgpfFtcXVxcXSl8KFxzKykvZywoZSx0KT0+dD9gXFwke3R9YDoiXFxzKyIpO25ldyBSZWdFeHAoYF5cXHMqJHtufVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmRhdGEucGFzc3dvcmQsY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLGRhdGV0aW1lRm9ybWF0OnRoaXMuZGF0YS5kYXRldGltZUZvcm1hdCxoYXNEYXRldGltZUhUTUw6ISF0aGlzLmRhdGEuZGF0ZXRpbWVUeXBlLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9dGhpcy5oYXNGaWVsZEZsYWcoJCksYT10aGlzLmhhc0ZpZWxkRmxhZyhHKTt0aGlzLmRhdGEuY2hlY2tCb3g9IXQmJiFhO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10JiYhYTt0aGlzLmRhdGEucHVzaEJ1dHRvbj1hO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlIHdhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsYSxyKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLCExLHIpO2xldCBpPW51bGwsbj1udWxsO2lmKHIpe2NvbnN0IGU9ci5nZXQodGhpcy5kYXRhLmlkKTtpPWU/ZS52YWx1ZTpudWxsO249ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PWkmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpO251bGw9PWkmJihpPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3Qgcz1pP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKHMpe2NvbnN0IGk9dGhpcy5hcHBlYXJhbmNlLG89bG9va3VwTWF0cml4KHMuZGljdC5nZXRBcnJheSgiTWF0cml4IiksZmEpO24mJnMuZGljdC5zZXQoIk1hdHJpeCIsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChyKSk7dGhpcy5hcHBlYXJhbmNlPXM7Y29uc3QgYz1zdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEscik7dGhpcy5hcHBlYXJhbmNlPWk7cy5kaWN0LnNldCgiTWF0cml4IixvKTtyZXR1cm4gY31yZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1hc3luYyBzYXZlKGUsdCxhLHIpe3RoaXMuZGF0YS5jaGVja0JveD90aGlzLl9zYXZlQ2hlY2tib3goZSx0LGEscik6dGhpcy5kYXRhLnJhZGlvQnV0dG9uJiZ0aGlzLl9zYXZlUmFkaW9CdXR0b24oZSx0LGEscil9YXN5bmMgX3NhdmVDaGVja2JveChlLHQsYSxyKXtpZighYSlyZXR1cm47Y29uc3QgaT1hLmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhpPy5ub1ZpZXcsaT8ubm9QcmludCk7bGV0IHM9aT8ucm90YXRpb24sbz1pPy52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1uKXtpZih2b2lkIDA9PT1vKXJldHVybjtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZT09PW8pcmV0dXJufWxldCBjPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Yz1jLmNsb25lKCk7dm9pZCAwPT09cyYmKHM9dGhpcy5yb3RhdGlvbik7dm9pZCAwPT09byYmKG89dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpO2NvbnN0IGw9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0saD1OYW1lLmdldChvP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiT2ZmIik7dGhpcy5zZXRWYWx1ZShjLGgsZS54cmVmLHIpO2Muc2V0KCJBUyIsaCk7Yy5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO3ZvaWQgMCE9PW4mJmMuc2V0KCJGIixuKTtjb25zdCB1PXRoaXMuX2dldE1LRGljdChzKTt1JiZjLnNldCgiTUsiLHUpO3IucHV0KHRoaXMucmVmLHtkYXRhOmMseGZhOmwsbmVlZEFwcGVhcmFuY2VzOiExfSl9YXN5bmMgX3NhdmVSYWRpb0J1dHRvbihlLHQsYSxyKXtpZighYSlyZXR1cm47Y29uc3QgaT1hLmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhpPy5ub1ZpZXcsaT8ubm9QcmludCk7bGV0IHM9aT8ucm90YXRpb24sbz1pPy52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1uKXtpZih2b2lkIDA9PT1vKXJldHVybjtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PW8pcmV0dXJufWxldCBjPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Yz1jLmNsb25lKCk7dm9pZCAwPT09byYmKG89dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO3ZvaWQgMD09PXMmJihzPXRoaXMucm90YXRpb24pO2NvbnN0IGw9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiIn0saD1OYW1lLmdldChvP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7byYmdGhpcy5zZXRWYWx1ZShjLGgsZS54cmVmLHIpO2Muc2V0KCJBUyIsaCk7Yy5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO3ZvaWQgMCE9PW4mJmMuc2V0KCJGIixuKTtjb25zdCB1PXRoaXMuX2dldE1LRGljdChzKTt1JiZjLnNldCgiTUsiLHUpO3IucHV0KHRoaXMucmVmLHtkYXRhOmMseGZhOmwsbmVlZEFwcGVhcmFuY2VzOiExfSl9X2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLHQpe2NvbnN0e3dpZHRoOmEsaGVpZ2h0OnJ9PXRoaXMsaT1bMCwwLGEscl0sbj0uOCpNYXRoLm1pbihhLHIpO2xldCBzLG87aWYoImNoZWNrIj09PXQpe3M9e3dpZHRoOi43NTUqbixoZWlnaHQ6LjcwNSpufTtvPSIzIn1lbHNlIGlmKCJkaXNjIj09PXQpe3M9e3dpZHRoOi43OTEqbixoZWlnaHQ6LjcwNSpufTtvPSJsIn1lbHNlIHVucmVhY2hhYmxlKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IGM9YHEgQlQgL1BkZkpzWmFEYiAke259IFRmIDAgZyAke251bWJlclRvU3RyaW5nKChhLXMud2lkdGgpLzIpfSAke251bWJlclRvU3RyaW5nKChyLXMuaGVpZ2h0KS8yKX0gVGQgKCR7b30pIFRqIEVUIFFgLGw9bmV3IERpY3QoZS54cmVmKTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2wuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2wuc2V0KCJCQm94IixpKTtsLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgRGljdChlLnhyZWYpLHU9bmV3IERpY3QoZS54cmVmKTt1LnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2guc2V0KCJGb250Iix1KTtsLnNldCgiUmVzb3VyY2VzIixoKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oYyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWw7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IGk9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLG49dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGEuZ2V0S2V5cygpKTtpZigwPT09bi5sZW5ndGgpbi5wdXNoKCJPZmYiLGkpO2Vsc2UgaWYoMT09PW4ubGVuZ3RoKSJPZmYiPT09blswXT9uLnB1c2goaSk6bi51bnNoaWZ0KCJPZmYiKTtlbHNlIGlmKG4uaW5jbHVkZXMoaSkpe24ubGVuZ3RoPTA7bi5wdXNoKCJPZmYiLGkpfWVsc2V7Y29uc3QgZT1uLmZpbmQoZT0+Ik9mZiIhPT1lKTtuLmxlbmd0aD0wO24ucHVzaCgiT2ZmIixlKX1uLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9blsxXTtjb25zdCBzPWEuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1zIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9zOm51bGw7Y29uc3Qgbz1hLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgYT10LmdldCgiViIpO2EgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGEpKX1jb25zdCBhPWUuZGljdC5nZXQoIkFQIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2Ygci5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IGk9ci5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2k6bnVsbDtjb25zdCBuPXIuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9biBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bjpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOmF9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDphLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6YS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJaYXBmRGluZ2JhdHMiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZhbGxiYWNrVHlwZSIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRmFsbGJhY2tUeXBlIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiWmFwZkRpbmdiYXRzRW5jb2RpbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX1jbGFzcyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuaW5kaWNlcz10LmdldEFycmF5KCJJIik7dGhpcy5oYXNJbmRpY2VzPUFycmF5LmlzQXJyYXkodGhpcy5pbmRpY2VzKSYmdGhpcy5pbmRpY2VzLmxlbmd0aD4wO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiT3B0In0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWEuZmV0Y2hJZlJlZihyW2VdKSxpPUFycmF5LmlzQXJyYXkodCk7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShpP2EuZmV0Y2hJZlJlZih0WzBdKTp0KSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGk/YS5mZXRjaElmUmVmKHRbMV0pOnQpfX1pZih0aGlzLmhhc0luZGljZXMpe3RoaXMuZGF0YS5maWVsZFZhbHVlPVtdO2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO2Zvcihjb25zdCB0IG9mIHRoaXMuaW5kaWNlcylOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wJiZ0PGUmJnRoaXMuZGF0YS5maWVsZFZhbHVlLnB1c2godGhpcy5kYXRhLm9wdGlvbnNbdF0uZXhwb3J0VmFsdWUpfWVsc2Uic3RyaW5nIj09dHlwZW9mIHRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlPVt0aGlzLmRhdGEuZmllbGRWYWx1ZV06dGhpcy5kYXRhLmZpZWxkVmFsdWV8fD1bXTswPT09dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MCYmKHRoaXMuZGF0YS5vcHRpb25zPXRoaXMuZGF0YS5maWVsZFZhbHVlLm1hcChlPT4oe2V4cG9ydFZhbHVlOmUsZGlzcGxheVZhbHVlOmV9KSkpO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhWKTt0aGlzLmRhdGEubXVsdGlTZWxlY3Q9dGhpcy5oYXNGaWVsZEZsYWcoSik7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBhPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGEpfHwoYT1bYV0pO2NvbnN0IHI9W10se29wdGlvbnM6aX09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxuPWkubGVuZ3RoO2U8bjtlKyspaWYoaVtlXS5leHBvcnRWYWx1ZT09PWFbdF0pe3IucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixyKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQscixpKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxyLGkpO2xldCBuLHM7Y29uc3Qgbz1pPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtzPW8ucm90YXRpb247bj1vLnZhbHVlfWlmKHZvaWQgMD09PXMmJnZvaWQgMD09PW4mJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09bj9uPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkobil8fChuPVtuXSk7bGV0e3dpZHRoOmMsaGVpZ2h0Omx9PXRoaXM7OTAhPT1zJiYyNzAhPT1zfHwoW2MsbF09W2wsY10pO2NvbnN0IGg9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHU9W107Zm9yKGxldCBlPTA7ZTxoO2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07bi5pbmNsdWRlcyh0KSYmdS5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGQ9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZix7Zm9udFNpemU6Z309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihnKWY9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShsLTEpL2g7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZCk7aWYocj5hKXthPXI7dD1lfX1bZixnXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxjLTQsdCxkLC0xKX1jb25zdCBwPWcqYSxtPShwLWcpLzIsYj1NYXRoLmZsb29yKGwvcCk7bGV0IHk9MDtpZih1Lmxlbmd0aD4wKXtjb25zdCBlPU1hdGgubWluKC4uLnUpLHQ9TWF0aC5tYXgoLi4udSk7eT1NYXRoLm1heCgwLHQtYisxKTt5PmUmJih5PWUpfWNvbnN0IHc9TWF0aC5taW4oeStiKzEsaCkseD1bIi9UeCBCTUMgcSIsYDEgMSAke2N9ICR7bH0gcmUgVyBuYF07aWYodS5sZW5ndGgpe3gucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiB1KXk8PWUmJmU8dyYmeC5wdXNoKGAxICR7bC0oZS15KzEpKnB9ICR7Y30gJHtwfSByZSBmYCl9eC5wdXNoKCJCVCIsZixgMSAwIDAgMSAwICR7bH0gVG1gKTtjb25zdCBTPXtzaGlmdDowfTtmb3IobGV0IGU9eTtlPHc7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09eT9tOjA7eC5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxkLGcsYywwLFMsMiwtcCthKSl9eC5wdXNoKCJFVCBRIEVNQyIpO3JldHVybiB4LmpvaW4oIlxuIil9fWNsYXNzIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5maWVsZFZhbHVlPW51bGw7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hdGhpcy5kYXRhLmhhc093bkNhbnZhc31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6bnVsbCxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsdHlwZToic2lnbmF0dXJlIn19fWNsYXNzIFRleHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEubm9Sb3RhdGU9ITA7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuVEVYVDtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELkxJTks7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdCByPWdldFF1YWRQb2ludHModCx0aGlzLnJlY3RhbmdsZSk7ciYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPXIpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmEuYmFzZVVybCxkb2NBdHRhY2htZW50czphLmF0dGFjaG1lbnRzfSl9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgUG9wdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuUE9QVVA7dGhpcy5kYXRhLm5vSFRNTD0hMTswIT09dGhpcy53aWR0aCYmMCE9PXRoaXMuaGVpZ2h0fHwodGhpcy5kYXRhLnJlY3Q9bnVsbCk7bGV0IGE9dC5nZXQoIlBhcmVudCIpO2lmKCFhKXt3YXJuKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59dGhpcy5kYXRhLnBhcmVudFJlY3Q9bG9va3VwTm9ybWFsUmVjdChhLmdldEFycmF5KCJSZWN0IiksbnVsbCk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1hLmdldCgiQ3JlYXRpb25EYXRlIil8fCIiO2lzTmFtZShhLmdldCgiUlQiKSxNKSYmKGE9YS5nZXQoIklSVCIpKTtpZihhLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoYS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpZihhLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGEuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbDtpZighdGhpcy52aWV3YWJsZSl7Y29uc3QgZT1hLmdldCgiRiIpO3RoaXMuX2lzVmlld2FibGUoZSkmJnRoaXMuc2V0RmxhZ3MoZSl9dGhpcy5zZXRUaXRsZShhLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhhLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2EuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwoYS5nZXQoIlJDIikpKTt0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LGEpe2NvbnN0e29sZEFubm90YXRpb246cixyZWN0OmkscGFyZW50Om59PWUscz1yfHxuZXcgRGljdCh0KTtzLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7cy5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIlBvcHVwIikpO3Muc2V0SWZOb3RFeGlzdHMoIk9wZW4iLCExKTtzLnNldElmQXJyYXkoIlJlY3QiLGkpO3Muc2V0KCJQYXJlbnQiLG4pO3JldHVybiBzfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtyZXR1cm4gbnVsbH19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQsZXZhbHVhdG9yT3B0aW9uczphLHhyZWY6cn09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5GUkVFVEVYVDt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3RoaXMuX2hhc0FwcGVhcmFuY2U9ISF0aGlzLmFwcGVhcmFuY2U7aWYodGhpcy5faGFzQXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6aX09ZnVuY3Rpb24gcGFyc2VBcHBlYXJhbmNlU3RyZWFtKGUsdCxhLHIpe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsYSxyKS5wYXJzZSgpfSh0aGlzLmFwcGVhcmFuY2UsYSxyLHQuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRDb2xvcj1lO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9aXx8MTB9ZWxzZXt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplfHw9MTA7Y29uc3R7Zm9udENvbG9yOnQsZm9udFNpemU6YX09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZih0aGlzLl9jb250ZW50cy5zdHIpe3RoaXMuZGF0YS50ZXh0Q29udGVudD10aGlzLl9jb250ZW50cy5zdHIuc3BsaXQoL1xyXG4/fFxuLykubWFwKGU9PmUudHJpbUVuZCgpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4OnJ9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LHIpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPWUuZGljdC5nZXQoIkNBIiksbj1uZXcgRmFrZVVuaWNvZGVGb250KHIsInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9bi5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEsdCxpKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6cn0pe2NvbnN0e2NvbG9yOmksZGF0ZTpuLGZvbnRTaXplOnMsb2xkQW5ub3RhdGlvbjpvLHJlY3Q6Yyxyb3RhdGlvbjpsLHVzZXI6aCx2YWx1ZTp1fT1lLGQ9b3x8bmV3IERpY3QodCk7ZC5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2Quc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGcmVlVGV4dCIpKTtkLnNldChvPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUobil9YCk7byYmZC5kZWxldGUoIlJDIik7ZC5zZXRJZkFycmF5KCJSZWN0IixjKTtjb25zdCBmPWAvSGVsdiAke3N9IFRmICR7Z2V0UGRmQ29sb3IoaSwhMCl9YDtkLnNldCgiREEiLGYpO2Quc2V0SWZEZWZpbmVkKCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSh1KSk7ZC5zZXRJZk5vdEV4aXN0cygiRiIsNCk7ZC5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTtkLnNldElmTnVtYmVyKCJSb3RhdGUiLGwpO2Quc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGgpKTtpZihhfHxyKXtjb25zdCBlPW5ldyBEaWN0KHQpO2Quc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGF8fHIpfXJldHVybiBkfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxyKXtjb25zdHtiYXNlRm9udFJlZjppLGV2YWx1YXRvcjpuLHRhc2s6c309cix7Y29sb3I6byxmb250U2l6ZTpjLHJlY3Q6bCxyb3RhdGlvbjpoLHZhbHVlOnV9PWU7aWYoIW8pcmV0dXJuIG51bGw7Y29uc3QgZD1uZXcgRGljdCh0KSxmPW5ldyBEaWN0KHQpO2lmKGkpZi5zZXQoIkhlbHYiLGkpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJIZWx2ZXRpY2EiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUxIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiV2luQW5zaUVuY29kaW5nIik7Zi5zZXQoIkhlbHYiLGUpfWQuc2V0KCJGb250IixmKTtjb25zdCBnPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKG4scyx7Zm9udE5hbWU6IkhlbHYiLGZvbnRTaXplOmN9LGQpLFtwLG0sYix5XT1sO2xldCB3PWItcCx4PXktbTtoJTE4MCE9MCYmKFt3LHhdPVt4LHddKTtjb25zdCBTPXUuc3BsaXQoIlxuIiksaz1jLzFlMztsZXQgQz0tMS8wO2NvbnN0IHY9W107Zm9yKGxldCBlIG9mIFMpe2NvbnN0IHQ9Zy5lbmNvZGVTdHJpbmcoZSk7aWYodC5sZW5ndGg+MSlyZXR1cm4gbnVsbDtlPXQuam9pbigiIik7di5wdXNoKGUpO2xldCBhPTA7Y29uc3Qgcj1nLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgcilhKz1lLndpZHRoKms7Qz1NYXRoLm1heChDLGEpfWxldCBGPTE7Qz53JiYoRj13L0MpO2xldCBUPTE7Y29uc3QgTz1hKmMsRD0xKmMsTT1PKlMubGVuZ3RoO00+eCYmKFQ9eC9NKTtjb25zdCBSPWMqTWF0aC5taW4oRixUKTtsZXQgTixFLEw7c3dpdGNoKGgpe2Nhc2UgMDpMPVsxLDAsMCwxXTtFPVtsWzBdLGxbMV0sdyx4XTtOPVtsWzBdLGxbM10tRF07YnJlYWs7Y2FzZSA5MDpMPVswLDEsLTEsMF07RT1bbFsxXSwtbFsyXSx3LHhdO049W2xbMV0sLWxbMF0tRF07YnJlYWs7Y2FzZSAxODA6TD1bLTEsMCwwLC0xXTtFPVstbFsyXSwtbFszXSx3LHhdO049Wy1sWzJdLC1sWzFdLURdO2JyZWFrO2Nhc2UgMjcwOkw9WzAsLTEsMSwwXTtFPVstbFszXSxsWzBdLHcseF07Tj1bLWxbM10sbFsyXS1EXX1jb25zdCBfPVsicSIsYCR7TC5qb2luKCIgIil9IDAgMCBjbWAsYCR7RS5qb2luKCIgIil9IHJlIFcgbmAsIkJUIixgJHtnZXRQZGZDb2xvcihvLCEwKX1gLGAwIFRjIC9IZWx2ICR7bnVtYmVyVG9TdHJpbmcoUil9IFRmYF07Xy5wdXNoKGAke04uam9pbigiICIpfSBUZCAoJHtlc2NhcGVTdHJpbmcodlswXSl9KSBUamApO2NvbnN0IFU9bnVtYmVyVG9TdHJpbmcoTyk7Zm9yKGxldCBlPTEsdD12Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXZbZV07Xy5wdXNoKGAwIC0ke1V9IFRkICgke2VzY2FwZVN0cmluZyh0KX0pIFRqYCl9Xy5wdXNoKCJFVCIsIlEiKTtjb25zdCBqPV8uam9pbigiXG4iKSxYPW5ldyBEaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7WC5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7WC5zZXQoIkJCb3giLGwpO1guc2V0KCJSZXNvdXJjZXMiLGQpO1guc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1sWzBdLC1sWzFdXSk7Y29uc3QgcT1uZXcgU3RyaW5nU3RyZWFtKGopO3EuZGljdD1YO3JldHVybiBxfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5MSU5FO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3Qgcj1sb29rdXBSZWN0KHQuZ2V0QXJyYXkoIkwiKSxbMCwwLDAsMF0pO3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXM9VXRpbC5ub3JtYWxpemVSZWN0KHIpO3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3M7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSksaT10LmdldCgiQ0EiKSxuPWdldFBkZkNvbG9yQXJyYXkoZ2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSkscz1uP2k6bnVsbCxvPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsYz0yKm8sbD1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0tYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2MsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStjXTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxsKXx8KHRoaXMucmVjdGFuZ2xlPWwpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7b30gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6bixzdHJva2VBbHBoYTppLGZpbGxBbHBoYTpzLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3JbMF19ICR7clsxXX0gbWAsYCR7clsyXX0gJHtyWzNdfSBsYCwiUyIpO3JldHVyblt0WzBdLW8sdFs3XS1vLHRbMl0rbyx0WzNdK29dfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5TUVVBUkU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxyPXQuZ2V0KCJDQSIpLGk9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxuPWk/cjpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhaSlyZXR1cm47dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjppLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbNF0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFs1XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzZdLXRbNF0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbM10tdFs3XS10aGlzLmJvcmRlclN0eWxlLndpZHRoO2UucHVzaChgJHthfSAke3J9ICR7bn0gJHtzfSByZWApO2k/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5DSVJDTEU7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscj10LmdldCgiQ0EiKSxpPWdldFBkZkNvbG9yQXJyYXkoZ2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSksbj1pP3I6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIWkpcmV0dXJuO2NvbnN0IHM9NC8zKk1hdGgudGFuKE1hdGguUEkvOCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjppLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbMF0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFsxXS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzZdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbN10rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGM9YSsobi1hKS8yLGw9cisoby1yKS8yLGg9KG4tYSkvMipzLHU9KG8tcikvMipzO2UucHVzaChgJHtjfSAke299IG1gLGAke2MraH0gJHtvfSAke259ICR7bCt1fSAke259ICR7bH0gY2AsYCR7bn0gJHtsLXV9ICR7YytofSAke3J9ICR7Y30gJHtyfSBjYCxgJHtjLWh9ICR7cn0gJHthfSAke2wtdX0gJHthfSAke2x9IGNgLGAke2F9ICR7bCt1fSAke2MtaH0gJHtvfSAke2N9ICR7b30gY2AsImgiKTtpP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5QT0xZTElORTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS52ZXJ0aWNlcz1udWxsO2lmKCEodGhpcyBpbnN0YW5jZW9mIFBvbHlnb25Bbm5vdGF0aW9uKSl7dGhpcy5zZXRMaW5lRW5kaW5ncyh0LmdldEFycmF5KCJMRSIpKTt0aGlzLmRhdGEubGluZUVuZGluZ3M9dGhpcy5saW5lRW5kaW5nc31jb25zdCByPXQuZ2V0QXJyYXkoIlZlcnRpY2VzIik7aWYoIWlzTnVtYmVyQXJyYXkocixudWxsKSlyZXR1cm47Y29uc3QgaT10aGlzLmRhdGEudmVydGljZXM9RmxvYXQzMkFycmF5LmZyb20ocik7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscj10LmdldCgiQ0EiKTtsZXQgbixzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCk7cyYmKHM9Z2V0UGRmQ29sb3JBcnJheShzKSk7bj1zP3RoaXMuY29sb3I/cy5ldmVyeSgodCxhKT0+dD09PWVbYV0pPyJmIjoiQiI6ImYiOiJTIjtjb25zdCBvPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsYz0yKm8sbD1bMS8wLDEvMCwtMS8wLC0xLzBdO2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTIpVXRpbC5yZWN0Qm91bmRpbmdCb3goaVtlXS1jLGlbZSsxXS1jLGlbZV0rYyxpW2UrMV0rYyxsKTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxsKXx8KHRoaXMucmVjdGFuZ2xlPWwpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7b30gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLGZpbGxDb2xvcjpzLGZpbGxBbHBoYTpzP3I6bnVsbCxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrPTIpZS5wdXNoKGAke2lbdF19ICR7aVt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKG4pO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELlBPTFlHT059fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuQ0FSRVR9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5JTks7dGhpcy5kYXRhLmlua0xpc3RzPVtdO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLm9wYWNpdHk9dC5nZXQoIkNBIil8fDE7Y29uc3Qgcj10LmdldEFycmF5KCJJbmtMaXN0Iik7aWYoQXJyYXkuaXNBcnJheShyKSl7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXtpZighQXJyYXkuaXNBcnJheShyW2VdKSljb250aW51ZTtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkocltlXS5sZW5ndGgpO3RoaXMuZGF0YS5pbmtMaXN0cy5wdXNoKHQpO2ZvcihsZXQgaT0wLG49cltlXS5sZW5ndGg7aTxuO2krPTIpe2NvbnN0IG49YS5mZXRjaElmUmVmKHJbZV1baV0pLHM9YS5mZXRjaElmUmVmKHJbZV1baSsxXSk7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYibnVtYmVyIj09dHlwZW9mIHMpe3RbaV09bjt0W2krMV09c319fWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIiksaT10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MippLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilVdGlsLnJlY3RCb3VuZGluZ0JveChlW3RdLW4sZVt0KzFdLW4sZVt0XStuLGVbdCsxXStuLHMpO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHtpfSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErPTIpZS5wdXNoKGAke3RbYV19ICR7dFthKzFdfSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOnJ9KXtjb25zdHtvbGRBbm5vdGF0aW9uOmksY29sb3I6bixkYXRlOnMsb3BhY2l0eTpvLHBhdGhzOmMsb3V0bGluZXM6bCxyZWN0Omgscm90YXRpb246dSx0aGlja25lc3M6ZCx1c2VyOmZ9PWUsZz1pfHxuZXcgRGljdCh0KTtnLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Zy5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIkluayIpKTtnLnNldChpPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUocyl9YCk7Zy5zZXRJZkFycmF5KCJSZWN0IixoKTtnLnNldElmQXJyYXkoIklua0xpc3QiLGw/LnBvaW50c3x8Yz8ucG9pbnRzKTtnLnNldElmTm90RXhpc3RzKCJGIiw0KTtnLnNldElmTnVtYmVyKCJSb3RhdGUiLHUpO2cuc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGYpKTtsJiZnLnNldElmTmFtZSgiSVQiLCJJbmtIaWdobGlnaHQiKTtpZihkPjApe2NvbnN0IGU9bmV3IERpY3QodCk7Zy5zZXQoIkJTIixlKTtlLnNldCgiVyIsZCl9Zy5zZXRJZkFycmF5KCJDIixnZXRQZGZDb2xvckFycmF5KG4pKTtnLnNldElmTnVtYmVyKCJDQSIsbyk7aWYocnx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtnLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxyKX1yZXR1cm4gZ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7aWYoZS5vdXRsaW5lcylyZXR1cm4gdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxhKTtjb25zdHtjb2xvcjpyLHJlY3Q6aSxwYXRoczpuLHRoaWNrbmVzczpzLG9wYWNpdHk6b309ZTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBjPVtgJHtzfSB3IDEgSiAxIGpgLGAke2dldFBkZkNvbG9yKHIsITEpfWBdOzEhPT1vJiZjLnB1c2goIi9SMCBncyIpO2Zvcihjb25zdCBlIG9mIG4ubGluZXMpe2MucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbWApO2ZvcihsZXQgdD02LGE9ZS5sZW5ndGg7dDxhO3QrPTYpaWYoaXNOYU4oZVt0XSkpYy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdCs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzVdKX0gbGApO2Vsc2V7Y29uc3RbYSxyLGksbixzLG9dPWUuc2xpY2UodCx0KzYpO2MucHVzaChbYSxyLGksbixzLG9dLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfTY9PT1lLmxlbmd0aCYmYy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBsYCl9Yy5wdXNoKCJTIik7Y29uc3QgbD1jLmpvaW4oIlxuIiksaD1uZXcgRGljdCh0KTtoLnNldCgiRm9ybVR5cGUiLDEpO2guc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2guc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2guc2V0KCJCQm94IixpKTtoLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksYT1uZXcgRGljdCh0KSxyPW5ldyBEaWN0KHQpO3Iuc2V0KCJDQSIsbyk7ci5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKTthLnNldCgiUjAiLHIpO2Uuc2V0KCJFeHRHU3RhdGUiLGEpO2guc2V0KCJSZXNvdXJjZXMiLGUpfWNvbnN0IHU9bmV3IFN0cmluZ1N0cmVhbShsKTt1LmRpY3Q9aDtyZXR1cm4gdX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Omksb3V0bGluZXM6e291dGxpbmU6bn0sb3BhY2l0eTpzfT1lO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IG89W2Ake2dldFBkZkNvbG9yKHIsITApfWAsIi9SMCBncyJdO28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhuWzRdKX0gJHtudW1iZXJUb1N0cmluZyhuWzVdKX0gbWApO2ZvcihsZXQgZT02LHQ9bi5sZW5ndGg7ZTx0O2UrPTYpaWYoaXNOYU4obltlXSkpby5wdXNoKGAke251bWJlclRvU3RyaW5nKG5bZSs0XSl9ICR7bnVtYmVyVG9TdHJpbmcobltlKzVdKX0gbGApO2Vsc2V7Y29uc3RbdCxhLHIsaSxzLGNdPW4uc2xpY2UoZSxlKzYpO28ucHVzaChbdCxhLHIsaSxzLGNdLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfW8ucHVzaCgiaCBmIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2wuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2wuc2V0KCJCQm94IixpKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgRGljdCh0KSx1PW5ldyBEaWN0KHQpO2guc2V0KCJFeHRHU3RhdGUiLHUpO2wuc2V0KCJSZXNvdXJjZXMiLGgpO2NvbnN0IGQ9bmV3IERpY3QodCk7dS5zZXQoIlIwIixkKTtkLnNldElmTmFtZSgiQk0iLCJNdWx0aXBseSIpO2lmKDEhPT1zKXtkLnNldCgiY2EiLHMpO2Quc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIil9Y29uc3QgZj1uZXcgU3RyaW5nU3RyZWFtKGMpO2YuZGljdD1sO3JldHVybiBmfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELkhJR0hMSUdIVDt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PXQuZ2V0KCJDQSIpfHwxO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTtpZighdGhpcy5hcHBlYXJhbmNlfHwhZT8uaGFzKCJFeHRHU3RhdGUiKSl7dGhpcy5hcHBlYXJhbmNlJiZ3YXJuKCJIaWdobGlnaHRBbm5vdGF0aW9uIC0gaWdub3JpbmcgYnVpbHQtaW4gYXBwZWFyYW5jZSBzdHJlYW0uIik7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzEsMSwwXSkscj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6cn0pe2NvbnN0e2NvbG9yOmksZGF0ZTpuLG9sZEFubm90YXRpb246cyxvcGFjaXR5Om8scmVjdDpjLHJvdGF0aW9uOmwsdXNlcjpoLHF1YWRQb2ludHM6dX09ZSxkPXN8fG5ldyBEaWN0KHQpO2Quc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtkLnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiSGlnaGxpZ2h0IikpO2Quc2V0KHM/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShuKX1gKTtkLnNldElmQXJyYXkoIlJlY3QiLGMpO2Quc2V0SWZOb3RFeGlzdHMoIkYiLDQpO2Quc2V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7ZC5zZXRJZk51bWJlcigiUm90YXRlIixsKTtkLnNldElmQXJyYXkoIlF1YWRQb2ludHMiLHUpO2Quc2V0SWZBcnJheSgiQyIsZ2V0UGRmQ29sb3JBcnJheShpKSk7ZC5zZXRJZk51bWJlcigiQ0EiLG8pO2Quc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGgpKTtpZihhfHxyKXtjb25zdCBlPW5ldyBEaWN0KHQpO2Quc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGF8fHIpfXJldHVybiBkfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtjb25zdHtjb2xvcjpyLHJlY3Q6aSxvdXRsaW5lczpuLG9wYWNpdHk6c309ZTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBvPVtgJHtnZXRQZGZDb2xvcihyLCEwKX1gLCIvUjAgZ3MiXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4pe2MubGVuZ3RoPTA7Yy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbMF0pfSAke251bWJlclRvU3RyaW5nKGVbMV0pfSBtYCk7Zm9yKGxldCB0PTIsYT1lLmxlbmd0aDt0PGE7dCs9MiljLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVt0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzFdKX0gbGApO2MucHVzaCgiaCIpO28ucHVzaChjLmpvaW4oIlxuIikpfW8ucHVzaCgiZioiKTtjb25zdCBsPW8uam9pbigiXG4iKSxoPW5ldyBEaWN0KHQpO2guc2V0KCJGb3JtVHlwZSIsMSk7aC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7aC5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7aC5zZXQoIkJCb3giLGkpO2guc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtjb25zdCB1PW5ldyBEaWN0KHQpLGQ9bmV3IERpY3QodCk7dS5zZXQoIkV4dEdTdGF0ZSIsZCk7aC5zZXQoIlJlc291cmNlcyIsdSk7Y29uc3QgZj1uZXcgRGljdCh0KTtkLnNldCgiUjAiLGYpO2Yuc2V0SWZOYW1lKCJCTSIsIk11bHRpcGx5Iik7aWYoMSE9PXMpe2Yuc2V0KCJjYSIscyk7Zi5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKX1jb25zdCBnPW5ldyBTdHJpbmdTdHJlYW0obCk7Zy5kaWN0PWg7cmV0dXJuIGd9fWNsYXNzIFVuZGVybGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuVU5ERVJMSU5FO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5TUVVJR0dMWTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT0odFsxXS10WzVdKS82O2xldCByPWEsaT10WzRdO2NvbnN0IG49dFs1XSxzPXRbNl07ZS5wdXNoKGAke2l9ICR7bityfSBtYCk7ZG97aSs9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7aX0gJHtuK3J9IGxgKX13aGlsZShpPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLG4tMiphLHMsbisyKmFdfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFN0cmlrZU91dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuU1RSSUtFT1VUO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0rdFs0XSkvMisiICIrKHRbMV0rdFs1XSkvMisiIG0iLCh0WzJdK3RbNl0pLzIrIiAiKyh0WzNdK3RbN10pLzIrIiBsIiwiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNCZT1udWxsO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELlNUQU1QO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITF9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe2lmKGUpe2lmKCF0aGlzLmRhdGEuaXNFZGl0YWJsZSlyZXR1cm4hMDt0aGlzLiNCZT8/PXRoaXMuZGF0YS5oYXNPd25DYW52YXM7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDtyZXR1cm4hMH1pZihudWxsIT09dGhpcy4jQmUpe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jQmU7dGhpcy4jQmU9bnVsbH1yZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6YSxoZWlnaHQ6cn09ZSxpPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxyKSxuPWkuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO24uZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBzPW4uZ2V0SW1hZ2VEYXRhKDAsMCxhLHIpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkocy5idWZmZXIpLGM9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGMpe24uZmlsbFN0eWxlPSJ3aGl0ZSI7bi5maWxsUmVjdCgwLDAsYSxyKTtuLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgbD1pLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oZT0+ZS5hcnJheUJ1ZmZlcigpKSxoPU5hbWUuZ2V0KCJYT2JqZWN0IiksdT1OYW1lLmdldCgiSW1hZ2UiKSxkPW5ldyBEaWN0KHQpO2Quc2V0KCJUeXBlIixoKTtkLnNldCgiU3VidHlwZSIsdSk7ZC5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO2Quc2V0SWZOYW1lKCJDb2xvclNwYWNlIiwiRGV2aWNlUkdCIik7ZC5zZXRJZk5hbWUoIkZpbHRlciIsIkRDVERlY29kZSIpO2Quc2V0KCJCQm94IixbMCwwLGEscl0pO2Quc2V0KCJXaWR0aCIsYSk7ZC5zZXQoIkhlaWdodCIscik7bGV0IGY9bnVsbDtpZihjKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG8ubGVuZ3RoKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IHQ9MCxhPW8ubGVuZ3RoO3Q8YTt0KyspZVt0XT1vW3RdPj4+MjQ7ZWxzZSBmb3IobGV0IHQ9MCxhPW8ubGVuZ3RoO3Q8YTt0KyspZVt0XT0yNTUmb1t0XTtjb25zdCBpPW5ldyBEaWN0KHQpO2kuc2V0KCJUeXBlIixoKTtpLnNldCgiU3VidHlwZSIsdSk7aS5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO2kuc2V0SWZOYW1lKCJDb2xvclNwYWNlIiwiRGV2aWNlR3JheSIpO2kuc2V0KCJXaWR0aCIsYSk7aS5zZXQoIkhlaWdodCIscik7Zj1uZXcgU3RyZWFtKGUsMCwwLGkpfXJldHVybntpbWFnZVN0cmVhbTpuZXcgU3RyZWFtKGF3YWl0IGwsMCwwLGQpLHNtYXNrU3RyZWFtOmYsd2lkdGg6YSxoZWlnaHQ6cn19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOnJ9KXtjb25zdHtkYXRlOmksb2xkQW5ub3RhdGlvbjpuLHJlY3Q6cyxyb3RhdGlvbjpvLHVzZXI6Y309ZSxsPW58fG5ldyBEaWN0KHQpO2wuc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtsLnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7bC5zZXQobj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKGkpfWApO2wuc2V0SWZBcnJheSgiUmVjdCIscyk7bC5zZXRJZk5vdEV4aXN0cygiRiIsNCk7bC5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTtsLnNldElmTnVtYmVyKCJSb3RhdGUiLG8pO2wuc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihhfHxyKXtjb25zdCBlPW5ldyBEaWN0KHQpO2wuc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGF8fHIpfXJldHVybiBsfXN0YXRpYyBhc3luYyNOZShlLHQpe2NvbnN0e2FyZUNvbnRvdXJzOmEsY29sb3I6cixyZWN0OmksbGluZXM6bix0aGlja25lc3M6c309ZTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBvPVtgJHtzfSB3IDEgSiAxIGpgLGAke2dldFBkZkNvbG9yKHIsYSl9YF07Zm9yKGNvbnN0IGUgb2Ygbil7by5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBtYCk7Zm9yKGxldCB0PTYsYT1lLmxlbmd0aDt0PGE7dCs9NilpZihpc05hTihlW3RdKSlvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVt0KzRdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrNV0pfSBsYCk7ZWxzZXtjb25zdFthLHIsaSxuLHMsY109ZS5zbGljZSh0LHQrNik7by5wdXNoKFthLHIsaSxuLHMsY10ubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIikrIiBjIil9Nj09PWUubGVuZ3RoJiZvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IGxgKX1vLnB1c2goYT8iRiI6IlMiKTtjb25zdCBjPW8uam9pbigiXG4iKSxsPW5ldyBEaWN0KHQpO2wuc2V0KCJGb3JtVHlwZSIsMSk7bC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7bC5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7bC5zZXQoIkJCb3giLGkpO2wuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2lmKGUub2xkQW5ub3RhdGlvbilyZXR1cm4gbnVsbDtpZihlLmlzU2lnbmF0dXJlKXJldHVybiB0aGlzLiNOZShlLHQpO2NvbnN0e3JvdGF0aW9uOnJ9PWUse2ltYWdlUmVmOmksd2lkdGg6bixoZWlnaHQ6c309YS5pbWFnZSxvPW5ldyBEaWN0KHQpLGM9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGMpO2Muc2V0KCJJbTAiLGkpO2NvbnN0IGw9YHEgJHtufSAwIDAgJHtzfSAwIDAgY20gL0ltMCBEbyBRYCxoPW5ldyBEaWN0KHQpO2guc2V0KCJGb3JtVHlwZSIsMSk7aC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7aC5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7aC5zZXQoIkJCb3giLFswLDAsbixzXSk7aC5zZXQoIlJlc291cmNlcyIsbyk7aWYocil7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChyLG4scyk7aC5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgdT1uZXcgU3RyaW5nU3RyZWFtKGwpO3UuZGljdD1oO3JldHVybiB1fX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWUscj1uZXcgRmlsZVNwZWModC5nZXQoIkZTIiksYSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuRklMRUFUVEFDSE1FTlQ7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuZmlsZT1yLnNlcmlhbGl6YWJsZTtjb25zdCBpPXQuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9aSBpbnN0YW5jZW9mIE5hbWU/c3RyaW5nVG9QREZTdHJpbmcoaS5uYW1lKToiUHVzaFBpbiI7Y29uc3Qgbj10LmdldCgiY2EiKTt0aGlzLmRhdGEuZmlsbEFscGhhPSJudW1iZXIiPT10eXBlb2YgbiYmbj49MCYmbjw9MT9uOm51bGx9fWNvbnN0IGFjPXtnZXQgcigpe3JldHVybiBzaGFkb3codGhpcywiciIsbmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pKX0sZ2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLG5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pKX19O2Z1bmN0aW9uIGNhbGN1bGF0ZU1ENShlLHQsYSl7bGV0IHI9MTczMjU4NDE5MyxpPS0yNzE3MzM4Nzksbj0tMTczMjU4NDE5NCxzPTI3MTczMzg3ODtjb25zdCBvPWErNzImLTY0LGM9bmV3IFVpbnQ4QXJyYXkobyk7bGV0IGwsaDtmb3IobD0wO2w8YTsrK2wpY1tsXT1lW3QrK107Y1tsKytdPTEyODtjb25zdCB1PW8tODtsPHUmJihsPXUpO2NbbCsrXT1hPDwzJjI1NTtjW2wrK109YT4+NSYyNTU7Y1tsKytdPWE+PjEzJjI1NTtjW2wrK109YT4+MjEmMjU1O2NbbCsrXT1hPj4+MjkmMjU1O2wrPTM7Y29uc3QgZD1uZXcgSW50MzJBcnJheSgxNikse2s6ZixyOmd9PWFjO2ZvcihsPTA7bDxvOyl7Zm9yKGg9MDtoPDE2OysraCxsKz00KWRbaF09Y1tsXXxjW2wrMV08PDh8Y1tsKzJdPDwxNnxjW2wrM108PDI0O2xldCBlLHQsYT1yLG89aSx1PW4scD1zO2ZvcihoPTA7aDw2NDsrK2gpe2lmKGg8MTYpe2U9byZ1fH5vJnA7dD1ofWVsc2UgaWYoaDwzMil7ZT1wJm98fnAmdTt0PTUqaCsxJjE1fWVsc2UgaWYoaDw0OCl7ZT1vXnVecDt0PTMqaCs1JjE1fWVsc2V7ZT11XihvfH5wKTt0PTcqaCYxNX1jb25zdCByPXAsaT1hK2UrZltoXStkW3RdfDAsbj1nW2hdO3A9dTt1PW87bz1vKyhpPDxufGk+Pj4zMi1uKXwwO2E9cn1yPXIrYXwwO2k9aStvfDA7bj1uK3V8MDtzPXMrcHwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JnIscj4+OCYyNTUscj4+MTYmMjU1LHI+Pj4yNCYyNTUsMjU1JmksaT4+OCYyNTUsaT4+MTYmMjU1LGk+Pj4yNCYyNTUsMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTVdKX1mdW5jdGlvbiBkZWNvZGVTdHJpbmcoZSl7dHJ5e3JldHVybiBzdHJpbmdUb1VURjhTdHJpbmcoZSl9Y2F0Y2godCl7d2FybihgVVRGLTggZGVjb2RpbmcgZmFpbGVkOiAiJHt0fSIuYCk7cmV0dXJuIGV9fWNsYXNzIERhdGFzZXRYTUxQYXJzZXIgZXh0ZW5kcyBTaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19Y2xhc3MgRGF0YXNldFJlYWRlcntjb25zdHJ1Y3RvcihlKXtpZihlLmRhdGFzZXRzKXRoaXMubm9kZT1uZXcgU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaHt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZShwYXJzZVhGQVBhdGgoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuInZhbHVlIj09PWE/Lm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSk6ZGVjb2RlU3RyaW5nKHQudGV4dENvbnRlbnQpfX1jbGFzcyBTaW5nbGVJbnRlcnNlY3RvcnsjUGU7bWluWD0xLzA7bWluWT0xLzA7bWF4WD0tMS8wO21heFk9LTEvMDsjRWU9bnVsbDsjTGU9W107I19lPVtdOyNVZT0tMTsjamU9ITE7Y29uc3RydWN0b3IoZSl7dGhpcy4jUGU9ZTtjb25zdCB0PWUuZGF0YS5xdWFkUG9pbnRzO2lmKHQpe2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTgpe3RoaXMubWluWD1NYXRoLm1pbih0aGlzLm1pblgsdFtlXSk7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCx0W2UrMl0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksdFtlKzVdKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHRbZSsxXSl9dC5sZW5ndGg+OCYmKHRoaXMuI0VlPXQpfWVsc2VbdGhpcy5taW5YLHRoaXMubWluWSx0aGlzLm1heFgsdGhpcy5tYXhZXT1lLmRhdGEucmVjdH0jWGUoZSx0KXtpZih0aGlzLm1pblg+PWV8fHRoaXMubWF4WDw9ZXx8dGhpcy5taW5ZPj10fHx0aGlzLm1heFk8PXQpcmV0dXJuITE7Y29uc3QgYT10aGlzLiNFZTtpZighYSlyZXR1cm4hMDtpZih0aGlzLiNVZT49MCl7Y29uc3Qgcj10aGlzLiNVZTtpZighKGFbcl0+PWV8fGFbcisyXTw9ZXx8YVtyKzVdPj10fHxhW3IrMV08PXQpKXJldHVybiEwO3RoaXMuI1VlPS0xfWZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrPTgpaWYoIShhW3JdPj1lfHxhW3IrMl08PWV8fGFbcis1XT49dHx8YVtyKzFdPD10KSl7dGhpcy4jVWU9cjtyZXR1cm4hMH1yZXR1cm4hMX1hZGRHbHlwaChlLHQsYSl7aWYoIXRoaXMuI1hlKGUsdCkpe3RoaXMuZGlzYWJsZUV4dHJhQ2hhcnMoKTtyZXR1cm4hMX1pZih0aGlzLiNfZS5sZW5ndGg+MCl7dGhpcy4jTGUucHVzaCh0aGlzLiNfZS5qb2luKCIiKSk7dGhpcy4jX2UubGVuZ3RoPTB9dGhpcy4jTGUucHVzaChhKTt0aGlzLiNqZT0hMDtyZXR1cm4hMH1hZGRFeHRyYUNoYXIoZSl7dGhpcy4jamUmJnRoaXMuI19lLnB1c2goZSl9ZGlzYWJsZUV4dHJhQ2hhcnMoKXtpZih0aGlzLiNqZSl7dGhpcy4jamU9ITE7dGhpcy4jX2UubGVuZ3RoPTB9fXNldFRleHQoKXt0aGlzLiNQZS5kYXRhLm92ZXJsYWlkVGV4dD10aGlzLiNMZS5qb2luKCIiKX19Y29uc3QgcmM9NjQ7Y2xhc3MgSW50ZXJzZWN0b3J7I3FlPVtdOyNIZT1bXTsjV2U7I3plOyMkZTsjR2U7I1ZlOyNLZTtjb25zdHJ1Y3RvcihlKXtsZXQgdD0xLzAsYT0xLzAscj0tMS8wLGk9LTEvMDtjb25zdCBuPXRoaXMuI3FlO2Zvcihjb25zdCBzIG9mIGUpe2lmKCFzLmRhdGEucXVhZFBvaW50cyYmIXMuZGF0YS5yZWN0KWNvbnRpbnVlO2NvbnN0IGU9bmV3IFNpbmdsZUludGVyc2VjdG9yKHMpO24ucHVzaChlKTt0PU1hdGgubWluKHQsZS5taW5YKTthPU1hdGgubWluKGEsZS5taW5ZKTtyPU1hdGgubWF4KHIsZS5tYXhYKTtpPU1hdGgubWF4KGksZS5tYXhZKX10aGlzLiNXZT10O3RoaXMuIyRlPWE7dGhpcy4jemU9cjt0aGlzLiNHZT1pO3RoaXMuI1ZlPTYzLyhyLXQpO3RoaXMuI0tlPTYzLyhpLWEpO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IHQ9dGhpcy4jSmUoZS5taW5YLGUubWluWSksYT10aGlzLiNKZShlLm1heFgsZS5tYXhZKSxyPShhLXQpJXJjLGk9TWF0aC5mbG9vcigoYS10KS9yYyk7Zm9yKGxldCBhPXQ7YTw9dCtpKnJjO2ErPXJjKWZvcihsZXQgdD0wO3Q8PXI7dCsrKXtsZXQgcj10aGlzLiNIZVthK3RdO3J8fCh0aGlzLiNIZVthK3RdPXI9W10pO3IucHVzaChlKX19fSNKZShlLHQpe3JldHVybiBNYXRoLmZsb29yKChlLXRoaXMuI1dlKSp0aGlzLiNWZSkrTWF0aC5mbG9vcigodC10aGlzLiMkZSkqdGhpcy4jS2UpKnJjfWFkZEdseXBoKGUsdCxhLHIpe2NvbnN0IGk9ZVs0XSt0LzIsbj1lWzVdK2EvMjtpZihpPHRoaXMuI1dlfHxuPHRoaXMuIyRlfHxpPnRoaXMuI3plfHxuPnRoaXMuI0dlKXJldHVybjtjb25zdCBzPXRoaXMuI0hlW3RoaXMuI0plKGksbildO2lmKHMpZm9yKGNvbnN0IGUgb2YgcyllLmFkZEdseXBoKGksbixyKX1hZGRFeHRyYUNoYXIoZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jcWUpdC5hZGRFeHRyYUNoYXIoZSl9c2V0VGV4dCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuI3FlKWUuc2V0VGV4dCgpfX1jbGFzcyBXb3JkNjR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmhpZ2g9MHxlO3RoaXMubG93PTB8dH1hbmQoZSl7dGhpcy5oaWdoJj1lLmhpZ2g7dGhpcy5sb3cmPWUubG93fXhvcihlKXt0aGlzLmhpZ2hePWUuaGlnaDt0aGlzLmxvd149ZS5sb3d9c2hpZnRSaWdodChlKXtpZihlPj0zMil7dGhpcy5sb3c9dGhpcy5oaWdoPj4+ZS0zMnwwO3RoaXMuaGlnaD0wfWVsc2V7dGhpcy5sb3c9dGhpcy5sb3c+Pj5lfHRoaXMuaGlnaDw8MzItZTt0aGlzLmhpZ2g9dGhpcy5oaWdoPj4+ZXwwfX1yb3RhdGVSaWdodChlKXtsZXQgdCxhO2lmKDMyJmUpe2E9dGhpcy5sb3c7dD10aGlzLmhpZ2h9ZWxzZXt0PXRoaXMubG93O2E9dGhpcy5oaWdofWUmPTMxO3RoaXMubG93PXQ+Pj5lfGE8PDMyLWU7dGhpcy5oaWdoPWE+Pj5lfHQ8PDMyLWV9bm90KCl7dGhpcy5oaWdoPX50aGlzLmhpZ2g7dGhpcy5sb3c9fnRoaXMubG93fWFkZChlKXtjb25zdCB0PSh0aGlzLmxvdz4+PjApKyhlLmxvdz4+PjApO2xldCBhPSh0aGlzLmhpZ2g+Pj4wKSsoZS5oaWdoPj4+MCk7dD40Mjk0OTY3Mjk1JiYoYSs9MSk7dGhpcy5sb3c9MHx0O3RoaXMuaGlnaD0wfGF9Y29weVRvKGUsdCl7ZVt0XT10aGlzLmhpZ2g+Pj4yNCYyNTU7ZVt0KzFdPXRoaXMuaGlnaD4+MTYmMjU1O2VbdCsyXT10aGlzLmhpZ2g+PjgmMjU1O2VbdCszXT0yNTUmdGhpcy5oaWdoO2VbdCs0XT10aGlzLmxvdz4+PjI0JjI1NTtlW3QrNV09dGhpcy5sb3c+PjE2JjI1NTtlW3QrNl09dGhpcy5sb3c+PjgmMjU1O2VbdCs3XT0yNTUmdGhpcy5sb3d9YXNzaWduKGUpe3RoaXMuaGlnaD1lLmhpZ2g7dGhpcy5sb3c9ZS5sb3d9fWNvbnN0IGljPXtnZXQgaygpe3JldHVybiBzaGFkb3codGhpcywiayIsW25ldyBXb3JkNjQoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSxuZXcgV29yZDY0KDE4OTk0NDc0NDEsNjAyODkxNzI1KSxuZXcgV29yZDY0KDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSksbmV3IFdvcmQ2NCgzOTIxMDA5NTczLDIxNzMyOTU1NDgpLG5ldyBXb3JkNjQoOTYxOTg3MTYzLDQwODE2Mjg0NzIpLG5ldyBXb3JkNjQoMTUwODk3MDk5MywzMDUzODM0MjY1KSxuZXcgV29yZDY0KDI0NTM2MzU3NDgsMjkzNzY3MTU3OSksbmV3IFdvcmQ2NCgyODcwNzYzMjIxLDM2NjQ2MDk1NjApLG5ldyBXb3JkNjQoMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSxuZXcgV29yZDY0KDMxMDU5ODQwMSwxMTY0OTk2NTQyKSxuZXcgV29yZDY0KDYwNzIyNTI3OCwxMzIzNjEwNzY0KSxuZXcgV29yZDY0KDE0MjY4ODE5ODcsMzU5MDMwNDk5NCksbmV3IFdvcmQ2NCgxOTI1MDc4Mzg4LDQwNjgxODIzODMpLG5ldyBXb3JkNjQoMjE2MjA3ODIwNiw5OTEzMzYxMTMpLG5ldyBXb3JkNjQoMjYxNDg4ODEwMyw2MzM4MDMzMTcpLG5ldyBXb3JkNjQoMzI0ODIyMjU4MCwzNDc5Nzc0ODY4KSxuZXcgV29yZDY0KDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCksbmV3IFdvcmQ2NCg0MDIyMjI0Nzc0LDk0NDcxMTEzOSksbmV3IFdvcmQ2NCgyNjQzNDcwNzgsMjM0MTI2Mjc3MyksbmV3IFdvcmQ2NCg2MDQ4MDc2MjgsMjAwNzgwMDkzMyksbmV3IFdvcmQ2NCg3NzAyNTU5ODMsMTQ5NTk5MDkwMSksbmV3IFdvcmQ2NCgxMjQ5MTUwMTIyLDE4NTY0MzEyMzUpLG5ldyBXb3JkNjQoMTU1NTA4MTY5MiwzMTc1MjE4MTMyKSxuZXcgV29yZDY0KDE5OTYwNjQ5ODYsMjE5ODk1MDgzNyksbmV3IFdvcmQ2NCgyNTU0MjIwODgyLDM5OTk3MTkzMzkpLG5ldyBXb3JkNjQoMjgyMTgzNDM0OSw3NjY3ODQwMTYpLG5ldyBXb3JkNjQoMjk1Mjk5NjgwOCwyNTY2NTk0ODc5KSxuZXcgV29yZDY0KDMyMTAzMTM2NzEsMzIwMzMzNzk1NiksbmV3IFdvcmQ2NCgzMzM2NTcxODkxLDEwMzQ0NTcwMjYpLG5ldyBXb3JkNjQoMzU4NDUyODcxMSwyNDY2OTQ4OTAxKSxuZXcgV29yZDY0KDExMzkyNjk5MywzNzU4MzI2MzgzKSxuZXcgV29yZDY0KDMzODI0MTg5NSwxNjg3MTc5MzYpLG5ldyBXb3JkNjQoNjY2MzA3MjA1LDExODgxNzk5NjQpLG5ldyBXb3JkNjQoNzczNTI5OTEyLDE1NDYwNDU3MzQpLG5ldyBXb3JkNjQoMTI5NDc1NzM3MiwxNTIyODA1NDg1KSxuZXcgV29yZDY0KDEzOTYxODIyOTEsMjY0MzgzMzgyMyksbmV3IFdvcmQ2NCgxNjk1MTgzNzAwLDIzNDM1MjczOTApLG5ldyBXb3JkNjQoMTk4NjY2MTA1MSwxMDE0NDc3NDgwKSxuZXcgV29yZDY0KDIxNzcwMjYzNTAsMTIwNjc1OTE0MiksbmV3IFdvcmQ2NCgyNDU2OTU2MDM3LDM0NDA3NzYyNyksbmV3IFdvcmQ2NCgyNzMwNDg1OTIxLDEyOTA4NjM0NjApLG5ldyBXb3JkNjQoMjgyMDMwMjQxMSwzMTU4NDU0MjczKSxuZXcgV29yZDY0KDMyNTk3MzA4MDAsMzUwNTk1MjY1NyksbmV3IFdvcmQ2NCgzMzQ1NzY0NzcxLDEwNjIxNzAwOCksbmV3IFdvcmQ2NCgzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLG5ldyBXb3JkNjQoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSxuZXcgV29yZDY0KDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCksbmV3IFdvcmQ2NCgyNzU0MjMzNDQsODUxMTY5NzIwKSxuZXcgV29yZDY0KDQzMDIyNzczNCwzMTAwODIzNzUyKSxuZXcgV29yZDY0KDUwNjk0ODYxNiwxMzYzMjU4MTk1KSxuZXcgV29yZDY0KDY1OTA2MDU1NiwzNzUwNjg1NTkzKSxuZXcgV29yZDY0KDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSxuZXcgV29yZDY0KDk1ODEzOTU3MSwzMzE4MzA3NDI3KSxuZXcgV29yZDY0KDEzMjI4MjIyMTgsMzgxMjcyMzQwMyksbmV3IFdvcmQ2NCgxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLG5ldyBXb3JkNjQoMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5KSxuZXcgV29yZDY0KDE5NTU1NjIyMjIsMTU3NTk5MDAxMiksbmV3IFdvcmQ2NCgyMDI0MTA0ODE1LDExMjU1OTI5MjgpLG5ldyBXb3JkNjQoMjIyNzczMDQ1MiwyNzE2OTA0MzA2KSxuZXcgV29yZDY0KDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSxuZXcgV29yZDY0KDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSxuZXcgV29yZDY0KDI3NTY3MzQxODcsMzczMzExMDI0OSksbmV3IFdvcmQ2NCgzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLG5ldyBXb3JkNjQoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSxuZXcgV29yZDY0KDMzOTE1Njk2MTQsMzkyODM4MzkwMCksbmV3IFdvcmQ2NCgzNTE1MjY3MjcxLDU2NjI4MDcxMSksbmV3IFdvcmQ2NCgzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLG5ldyBXb3JkNjQoNDExODYzMDI3MSw0MDAwMjM5OTkyKSxuZXcgV29yZDY0KDExNjQxODQ3NCwxOTE0MTM4NTU0KSxuZXcgV29yZDY0KDE3NDI5MjQyMSwyNzMxMDU1MjcwKSxuZXcgV29yZDY0KDI4OTM4MDM1NiwzMjAzOTkzMDA2KSxuZXcgV29yZDY0KDQ2MDM5MzI2OSwzMjA2MjAzMTUpLG5ldyBXb3JkNjQoNjg1NDcxNzMzLDU4NzQ5NjgzNiksbmV3IFdvcmQ2NCg4NTIxNDI5NzEsMTA4Njc5Mjg1MSksbmV3IFdvcmQ2NCgxMDE3MDM2Mjk4LDM2NTU0MzEwMCksbmV3IFdvcmQ2NCgxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLG5ldyBXb3JkNjQoMTI4ODAzMzQ3MCwzNDA5ODU1MTU4KSxuZXcgV29yZDY0KDE1MDE1MDU5NDgsNDIzNDUwOTg2NiksbmV3IFdvcmQ2NCgxNjA3MTY3OTE1LDk4NzE2NzQ2OCksbmV3IFdvcmQ2NCgxODE2NDAyMzE2LDEyNDYxODk1OTEpXSl9fTtmdW5jdGlvbiBjaChlLHQsYSxyLGkpe2UuYXNzaWduKHQpO2UuYW5kKGEpO2kuYXNzaWduKHQpO2kubm90KCk7aS5hbmQocik7ZS54b3IoaSl9ZnVuY3Rpb24gbWFqKGUsdCxhLHIsaSl7ZS5hc3NpZ24odCk7ZS5hbmQoYSk7aS5hc3NpZ24odCk7aS5hbmQocik7ZS54b3IoaSk7aS5hc3NpZ24oYSk7aS5hbmQocik7ZS54b3IoaSl9ZnVuY3Rpb24gc2lnbWEoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMjgpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMzQpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMzkpO2UueG9yKGEpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTQpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMTgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoNDEpO2UueG9yKGEpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoOCk7ZS54b3IoYSk7YS5hc3NpZ24odCk7YS5zaGlmdFJpZ2h0KDcpO2UueG9yKGEpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hUHJpbWUoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTkpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoNjEpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg2KTtlLnhvcihhKX1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTIoZSx0LGEscj0hMSl7bGV0IGksbixzLG8sYyxsLGgsdTtpZihyKXtpPW5ldyBXb3JkNjQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKTtuPW5ldyBXb3JkNjQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpO3M9bmV3IFdvcmQ2NCgyNDM4NTI5MzcwLDgxMjcwMjk5OSk7bz1uZXcgV29yZDY0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KTtjPW5ldyBXb3JkNjQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KTtsPW5ldyBXb3JkNjQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KTtoPW5ldyBXb3JkNjQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KTt1PW5ldyBXb3JkNjQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KX1lbHNle2k9bmV3IFdvcmQ2NCgxNzc5MDMzNzAzLDQwODkyMzU3MjApO249bmV3IFdvcmQ2NCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpO3M9bmV3IFdvcmQ2NCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpO289bmV3IFdvcmQ2NCgyNzczNDgwNzYyLDE1OTU3NTAxMjkpO2M9bmV3IFdvcmQ2NCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpO2w9bmV3IFdvcmQ2NCgyNjAwODIyOTI0LDcyNTUxMTE5OSk7aD1uZXcgV29yZDY0KDUyODczNDYzNSw0MjE1Mzg5NTQ3KTt1PW5ldyBXb3JkNjQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpfWNvbnN0IGQ9MTI4Kk1hdGguY2VpbCgoYSsxNykvMTI4KSxmPW5ldyBVaW50OEFycmF5KGQpO2xldCBnLHA7Zm9yKGc9MDtnPGE7KytnKWZbZ109ZVt0KytdO2ZbZysrXT0xMjg7Y29uc3QgbT1kLTE2O2c8bSYmKGc9bSk7Zys9MTE7ZltnKytdPWE+Pj4yOSYyNTU7ZltnKytdPWE+PjIxJjI1NTtmW2crK109YT4+MTMmMjU1O2ZbZysrXT1hPj41JjI1NTtmW2crK109YTw8MyYyNTU7Y29uc3QgYj1uZXcgQXJyYXkoODApO2ZvcihnPTA7Zzw4MDtnKyspYltnXT1uZXcgV29yZDY0KDAsMCk7Y29uc3R7azp5fT1pYztsZXQgdz1uZXcgV29yZDY0KDAsMCkseD1uZXcgV29yZDY0KDAsMCksUz1uZXcgV29yZDY0KDAsMCksaz1uZXcgV29yZDY0KDAsMCksQz1uZXcgV29yZDY0KDAsMCksdj1uZXcgV29yZDY0KDAsMCksRj1uZXcgV29yZDY0KDAsMCksVD1uZXcgV29yZDY0KDAsMCk7Y29uc3QgTz1uZXcgV29yZDY0KDAsMCksRD1uZXcgV29yZDY0KDAsMCksTT1uZXcgV29yZDY0KDAsMCksUj1uZXcgV29yZDY0KDAsMCk7bGV0IE4sRTtmb3IoZz0wO2c8ZDspe2ZvcihwPTA7cDwxNjsrK3Ape2JbcF0uaGlnaD1mW2ddPDwyNHxmW2crMV08PDE2fGZbZysyXTw8OHxmW2crM107YltwXS5sb3c9ZltnKzRdPDwyNHxmW2crNV08PDE2fGZbZys2XTw8OHxmW2crN107Zys9OH1mb3IocD0xNjtwPDgwOysrcCl7Tj1iW3BdO2xpdHRsZVNpZ21hUHJpbWUoTixiW3AtMl0sUik7Ti5hZGQoYltwLTddKTtsaXR0bGVTaWdtYShNLGJbcC0xNV0sUik7Ti5hZGQoTSk7Ti5hZGQoYltwLTE2XSl9dy5hc3NpZ24oaSk7eC5hc3NpZ24obik7Uy5hc3NpZ24ocyk7ay5hc3NpZ24obyk7Qy5hc3NpZ24oYyk7di5hc3NpZ24obCk7Ri5hc3NpZ24oaCk7VC5hc3NpZ24odSk7Zm9yKHA9MDtwPDgwOysrcCl7Ty5hc3NpZ24oVCk7c2lnbWFQcmltZShNLEMsUik7Ty5hZGQoTSk7Y2goTSxDLHYsRixSKTtPLmFkZChNKTtPLmFkZCh5W3BdKTtPLmFkZChiW3BdKTtzaWdtYShELHcsUik7bWFqKE0sdyx4LFMsUik7RC5hZGQoTSk7Tj1UO1Q9RjtGPXY7dj1DO2suYWRkKE8pO0M9aztrPVM7Uz14O3g9dztOLmFzc2lnbihPKTtOLmFkZChEKTt3PU59aS5hZGQodyk7bi5hZGQoeCk7cy5hZGQoUyk7by5hZGQoayk7Yy5hZGQoQyk7bC5hZGQodik7aC5hZGQoRik7dS5hZGQoVCl9aWYocil7RT1uZXcgVWludDhBcnJheSg0OCk7aS5jb3B5VG8oRSwwKTtuLmNvcHlUbyhFLDgpO3MuY29weVRvKEUsMTYpO28uY29weVRvKEUsMjQpO2MuY29weVRvKEUsMzIpO2wuY29weVRvKEUsNDApfWVsc2V7RT1uZXcgVWludDhBcnJheSg2NCk7aS5jb3B5VG8oRSwwKTtuLmNvcHlUbyhFLDgpO3MuY29weVRvKEUsMTYpO28uY29weVRvKEUsMjQpO2MuY29weVRvKEUsMzIpO2wuY29weVRvKEUsNDApO2guY29weVRvKEUsNDgpO3UuY29weVRvKEUsNTYpfXJldHVybiBFfWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTM4NChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVNIQTUxMihlLHQsYSwhMCl9Y29uc3QgbmM9e2dldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSl9fTtmdW5jdGlvbiByb3RyKGUsdCl7cmV0dXJuIGU+Pj50fGU8PDMyLXR9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9jaChlLHQsYSl7cmV0dXJuIGUmdF5+ZSZhfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYShlKXtyZXR1cm4gcm90cihlLDIpXnJvdHIoZSwxMylecm90cihlLDIyKX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X3NpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYVByaW1lKGUpe3JldHVybiByb3RyKGUsMTcpXnJvdHIoZSwxOSleZT4+PjEwfWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTI1NihlLHQsYSl7bGV0IHI9MTc3OTAzMzcwMyxpPTMxNDQxMzQyNzcsbj0xMDEzOTA0MjQyLHM9Mjc3MzQ4MDc2MixvPTEzNTk4OTMxMTksYz0yNjAwODIyOTI0LGw9NTI4NzM0NjM1LGg9MTU0MTQ1OTIyNTtjb25zdCB1PTY0Kk1hdGguY2VpbCgoYSs5KS82NCksZD1uZXcgVWludDhBcnJheSh1KTtsZXQgZixnO2ZvcihmPTA7ZjxhOysrZilkW2ZdPWVbdCsrXTtkW2YrK109MTI4O2NvbnN0IHA9dS04O2Y8cCYmKGY9cCk7Zis9MztkW2YrK109YT4+PjI5JjI1NTtkW2YrK109YT4+MjEmMjU1O2RbZisrXT1hPj4xMyYyNTU7ZFtmKytdPWE+PjUmMjU1O2RbZisrXT1hPDwzJjI1NTtjb25zdCBtPW5ldyBVaW50MzJBcnJheSg2NCkse2s6Yn09bmM7Zm9yKGY9MDtmPHU7KXtmb3IoZz0wO2c8MTY7KytnKXttW2ddPWRbZl08PDI0fGRbZisxXTw8MTZ8ZFtmKzJdPDw4fGRbZiszXTtmKz00fWZvcihnPTE2O2c8NjQ7KytnKW1bZ109Y2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYVByaW1lKG1bZy0yXSkrbVtnLTddK2NhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWEobVtnLTE1XSkrbVtnLTE2XXwwO2xldCBlLHQsYT1yLHU9aSxwPW4seT1zLHc9byx4PWMsUz1sLGs9aDtmb3IoZz0wO2c8NjQ7KytnKXtlPWsrY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYVByaW1lKHcpK2NhbGN1bGF0ZV9zaGEyNTZfY2godyx4LFMpK2JbZ10rbVtnXTt0PWNhbGN1bGF0ZV9zaGEyNTZfc2lnbWEoYSkrY2FsY3VsYXRlX3NoYTI1Nl9tYWooYSx1LHApO2s9UztTPXg7eD13O3c9eStlfDA7eT1wO3A9dTt1PWE7YT1lK3R8MH1yPXIrYXwwO2k9aSt1fDA7bj1uK3B8MDtzPXMreXwwO289byt3fDA7Yz1jK3h8MDtsPWwrU3wwO2g9aCtrfDB9cmV0dXJuIG5ldyBVaW50OEFycmF5KFtyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1Jmksbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyxsPj4yNCYyNTUsbD4+MTYmMjU1LGw+PjgmMjU1LDI1NSZsLGg+PjI0JjI1NSxoPj4xNiYyNTUsaD4+OCYyNTUsMjU1JmhdKX1jbGFzcyBEZWNyeXB0U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5kZWNyeXB0PWE7dGhpcy5uZXh0Q2h1bms9bnVsbDt0aGlzLmluaXRpYWxpemVkPSExfXJlYWRCbG9jaygpe2xldCBlO2lmKHRoaXMuaW5pdGlhbGl6ZWQpZT10aGlzLm5leHRDaHVuaztlbHNle2U9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTt0aGlzLmluaXRpYWxpemVkPSEwfWlmKCFlPy5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLm5leHRDaHVuaz10aGlzLnN0cmVhbS5nZXRCeXRlcyg1MTIpO2NvbnN0IHQ9dGhpcy5uZXh0Q2h1bms/Lmxlbmd0aD4wO2U9KDAsdGhpcy5kZWNyeXB0KShlLCF0KTtjb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9YStlLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihyKS5zZXQoZSxhKTt0aGlzLmJ1ZmZlckxlbmd0aD1yfWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXN9fWNsYXNzIEFSQ0ZvdXJDaXBoZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5hPTA7dGhpcy5iPTA7Y29uc3QgdD1uZXcgVWludDhBcnJheSgyNTYpLGE9ZS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXRbZV09ZTtmb3IobGV0IHI9MCxpPTA7cjwyNTY7KytyKXtjb25zdCBuPXRbcl07aT1pK24rZVtyJWFdJjI1NTt0W3JdPXRbaV07dFtpXT1ufXRoaXMucz10fWVuY3J5cHRCbG9jayhlKXtsZXQgdD10aGlzLmEsYT10aGlzLmI7Y29uc3Qgcj10aGlzLnMsaT1lLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KGkpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3Q9dCsxJjI1NTtjb25zdCBpPXJbdF07YT1hK2kmMjU1O2NvbnN0IG89clthXTtyW3RdPW87clthXT1pO25bc109ZVtzXV5yW2krbyYyNTVdfXRoaXMuYT10O3RoaXMuYj1hO3JldHVybiBufWRlY3J5cHRCbG9jayhlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9ZW5jcnlwdChlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fWNsYXNzIE51bGxDaXBoZXJ7ZGVjcnlwdEJsb2NrKGUpe3JldHVybiBlfWVuY3J5cHQoZSl7cmV0dXJuIGV9fWNsYXNzIEFFU0Jhc2VDaXBoZXJ7X3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTtfaW52X3M9bmV3IFVpbnQ4QXJyYXkoWzgyLDksMTA2LDIxMyw0OCw1NCwxNjUsNTYsMTkxLDY0LDE2MywxNTgsMTI5LDI0MywyMTUsMjUxLDEyNCwyMjcsNTcsMTMwLDE1NSw0NywyNTUsMTM1LDUyLDE0Miw2Nyw2OCwxOTYsMjIyLDIzMywyMDMsODQsMTIzLDE0OCw1MCwxNjYsMTk0LDM1LDYxLDIzOCw3NiwxNDksMTEsNjYsMjUwLDE5NSw3OCw4LDQ2LDE2MSwxMDIsNDAsMjE3LDM2LDE3OCwxMTgsOTEsMTYyLDczLDEwOSwxMzksMjA5LDM3LDExNCwyNDgsMjQ2LDEwMCwxMzQsMTA0LDE1MiwyMiwyMTIsMTY0LDkyLDIwNCw5MywxMDEsMTgyLDE0NiwxMDgsMTEyLDcyLDgwLDI1MywyMzcsMTg1LDIxOCw5NCwyMSw3MCw4NywxNjcsMTQxLDE1NywxMzIsMTQ0LDIxNiwxNzEsMCwxNDAsMTg4LDIxMSwxMCwyNDcsMjI4LDg4LDUsMTg0LDE3OSw2OSw2LDIwOCw0NCwzMCwxNDMsMjAyLDYzLDE1LDIsMTkzLDE3NSwxODksMywxLDE5LDEzOCwxMDcsNTgsMTQ1LDE3LDY1LDc5LDEwMywyMjAsMjM0LDE1MSwyNDIsMjA3LDIwNiwyNDAsMTgwLDIzMCwxMTUsMTUwLDE3MiwxMTYsMzQsMjMxLDE3Myw1MywxMzMsMjI2LDI0OSw1NSwyMzIsMjgsMTE3LDIyMywxMTAsNzEsMjQxLDI2LDExMywyOSw0MSwxOTcsMTM3LDExMSwxODMsOTgsMTQsMTcwLDI0LDE5MCwyNywyNTIsODYsNjIsNzUsMTk4LDIxMCwxMjEsMzIsMTU0LDIxOSwxOTIsMjU0LDEyMCwyMDUsOTAsMjQ0LDMxLDIyMSwxNjgsNTEsMTM2LDcsMTk5LDQ5LDE3NywxOCwxNiw4OSwzOSwxMjgsMjM2LDk1LDk2LDgxLDEyNywxNjksMjUsMTgxLDc0LDEzLDQ1LDIyOSwxMjIsMTU5LDE0NywyMDEsMTU2LDIzOSwxNjAsMjI0LDU5LDc3LDE3NCw0MiwyNDUsMTc2LDIwMCwyMzUsMTg3LDYwLDEzMSw4MywxNTMsOTcsMjMsNDMsNCwxMjYsMTg2LDExOSwyMTQsMzgsMjI1LDEwNSwyMCw5OSw4NSwzMywxMiwxMjVdKTtfbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pO19taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KS5tYXAoKGUsdCk9PnQ8MTI4P3Q8PDE6dDw8MV4yNyk7Y29uc3RydWN0b3IoKXt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpbltlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9blsxM107blsxM109bls5XTtuWzldPW5bNV07bls1XT1uWzFdO25bMV09YTthPW5bMTRdO3I9blsxMF07blsxNF09bls2XTtuWzEwXT1uWzJdO25bNl09YTtuWzJdPXI7YT1uWzE1XTtyPW5bMTFdO2k9bls3XTtuWzE1XT1uWzNdO25bMTFdPWE7bls3XT1yO25bM109aTtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPXRoaXMuX2ludl9zW25bZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpblthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W25bZV1dLHI9dGhpcy5fbWl4W25bZSsxXV0saT10aGlzLl9taXhbbltlKzJdXSxzPXRoaXMuX21peFtuW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5pPj4+MTZeaTw8MTZecz4+PjI0XnM8PDg7bltlXT1hPj4+MjQmMjU1O25bZSsxXT1hPj4xNiYyNTU7bltlKzJdPWE+PjgmMjU1O25bZSszXT0yNTUmYX19YT1uWzEzXTtuWzEzXT1uWzldO25bOV09bls1XTtuWzVdPW5bMV07blsxXT1hO2E9blsxNF07cj1uWzEwXTtuWzE0XT1uWzZdO25bMTBdPW5bMl07bls2XT1hO25bMl09cjthPW5bMTVdO3I9blsxMV07aT1uWzddO25bMTVdPW5bM107blsxMV09YTtuWzddPXI7blszXT1pO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtuW2VdPXRoaXMuX2ludl9zW25bZV1dO25bZV1ePXRbZV19cmV0dXJuIG59X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsaSxuO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07bj1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1uO249c1syXTtpPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPW47c1sxNF09aTtuPXNbM107aT1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPW47c1sxMV09aTtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2VdLGE9c1tlKzFdLGk9c1tlKzJdLG49c1tlKzNdO3I9dF5hXmlebjtzW2VdXj1yXnRoaXMuX21peENvbFt0XmFdO3NbZSsxXV49cl50aGlzLl9taXhDb2xbYV5pXTtzW2UrMl1ePXJedGhpcy5fbWl4Q29sW2lebl07c1tlKzNdXj1yXnRoaXMuX21peENvbFtuXnRdfWZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3Ipc1thXV49dFtyXX1mb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07bj1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1uO249c1syXTtpPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPW47c1sxNF09aTtuPXNbM107aT1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPW47c1sxMV09aTtzWzE1XT1yO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2Epc1tlXV49dFthXTtyZXR1cm4gc31fZGVjcnlwdEJsb2NrMihlLHQpe2NvbnN0IGE9ZS5sZW5ndGg7bGV0IHI9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IG49W107bGV0IHM9dGhpcy5pdjtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtyW2ldPWVbdF07KytpO2lmKGk8MTYpY29udGludWU7Y29uc3QgYT10aGlzLl9kZWNyeXB0KHIsdGhpcy5fa2V5KTtmb3IobGV0IGU9MDtlPDE2OysrZSlhW2VdXj1zW2VdO3M9cjtuLnB1c2goYSk7cj1uZXcgVWludDhBcnJheSgxNik7aT0wfXRoaXMuYnVmZmVyPXI7dGhpcy5idWZmZXJMZW5ndGg9aTt0aGlzLml2PXM7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgbz0xNipuLmxlbmd0aDtpZih0KXtjb25zdCBlPW4uYXQoLTEpO2xldCB0PWVbMTVdO2lmKHQ8PTE2KXtmb3IobGV0IGE9MTUscj0xNi10O2E+PXI7LS1hKWlmKGVbYV0hPT10KXt0PTA7YnJlYWt9by09dDtuW24ubGVuZ3RoLTFdPWUuc3ViYXJyYXkoMCwxNi10KX19Y29uc3QgYz1uZXcgVWludDhBcnJheShvKTtmb3IobGV0IGU9MCx0PTAsYT1uLmxlbmd0aDtlPGE7KytlLHQrPTE2KWMuc2V0KG5bZV0sdCk7cmV0dXJuIGN9ZGVjcnlwdEJsb2NrKGUsdCxhPW51bGwpe2NvbnN0IHI9ZS5sZW5ndGgsaT10aGlzLmJ1ZmZlcjtsZXQgbj10aGlzLmJ1ZmZlclBvc2l0aW9uO2lmKGEpdGhpcy5pdj1hO2Vsc2V7Zm9yKGxldCB0PTA7bjwxNiYmdDxyOysrdCwrK24paVtuXT1lW3RdO2lmKG48MTYpe3RoaXMuYnVmZmVyTGVuZ3RoPW47cmV0dXJuIG5ldyBVaW50OEFycmF5KDApfXRoaXMuaXY9aTtlPWUuc3ViYXJyYXkoMTYpfXRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZGVjcnlwdEJsb2NrPXRoaXMuX2RlY3J5cHRCbG9jazI7cmV0dXJuIHRoaXMuZGVjcnlwdEJsb2NrKGUsdCl9ZW5jcnlwdChlLHQpe2NvbnN0IGE9ZS5sZW5ndGg7bGV0IHI9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IG49W107dHx8PW5ldyBVaW50OEFycmF5KDE2KTtmb3IobGV0IHM9MDtzPGE7KytzKXtyW2ldPWVbc107KytpO2lmKGk8MTYpY29udGludWU7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpcltlXV49dFtlXTtjb25zdCBhPXRoaXMuX2VuY3J5cHQocix0aGlzLl9rZXkpO3Q9YTtuLnB1c2goYSk7cj1uZXcgVWludDhBcnJheSgxNik7aT0wfXRoaXMuYnVmZmVyPXI7dGhpcy5idWZmZXJMZW5ndGg9aTt0aGlzLml2PXQ7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtjb25zdCBzPTE2Km4ubGVuZ3RoLG89bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKGxldCBlPTAsdD0wLGE9bi5sZW5ndGg7ZTxhOysrZSx0Kz0xNilvLnNldChuW2VdLHQpO3JldHVybiBvfX1jbGFzcyBBRVMxMjhDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye19yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTA7dGhpcy5fa2V5U2l6ZT0xNjA7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixpPTE7ZTwxNzY7KytpKXtsZXQgbj1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07bj10W25dO3M9dFtzXTtvPXRbb107Yz10W2NdO25ePWFbaV07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1uXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPW5ldyBVaW50OEFycmF5KDI0MCk7YS5zZXQoZSk7bGV0IHIsaSxuLHMsbz0xO2ZvcihsZXQgZT0zMixjPTE7ZTwyNDA7KytjKXtpZihlJTMyPT0xNil7cj10W3JdO2k9dFtpXTtuPXRbbl07cz10W3NdfWVsc2UgaWYoZSUzMj09MCl7cj1hW2UtM107aT1hW2UtMl07bj1hW2UtMV07cz1hW2UtNF07cj10W3JdO2k9dFtpXTtuPXRbbl07cz10W3NdO3JePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPXJePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1uXj1hW2UtMzJdO2UrKzthW2VdPXNePWFbZS0zMl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgUERGQmFzZXtfaGFzaChlLHQsYSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgX2hhc2hgIGNhbGxlZCIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsYSxyKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtpLnNldChlLDApO2kuc2V0KHQsZS5sZW5ndGgpO2kuc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLGksYSkscil9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxyLFtdKSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtpLnNldChlLDApO2kuc2V0KHQsZS5sZW5ndGgpO2kuc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IG49dGhpcy5faGFzaChlLGksYSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT10aGlzLl9oYXNoKGUscixbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgUERGMTcgZXh0ZW5kcyBQREZCYXNle19oYXNoKGUsdCxhKXtyZXR1cm4gY2FsY3VsYXRlU0hBMjU2KHQsMCx0Lmxlbmd0aCl9fWNsYXNzIFBERjIwIGV4dGVuZHMgUERGQmFzZXtfaGFzaChlLHQsYSl7bGV0IHI9Y2FsY3VsYXRlU0hBMjU2KHQsMCx0Lmxlbmd0aCkuc3ViYXJyYXkoMCwzMiksaT1bMF0sbj0wO2Zvcig7bjw2NHx8aS5hdCgtMSk+bi0zMjspe2NvbnN0IHQ9ZS5sZW5ndGgrci5sZW5ndGgrYS5sZW5ndGgscz1uZXcgVWludDhBcnJheSh0KTtsZXQgbz0wO3Muc2V0KGUsbyk7bys9ZS5sZW5ndGg7cy5zZXQocixvKTtvKz1yLmxlbmd0aDtzLnNldChhLG8pO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoNjQqdCk7Zm9yKGxldCBlPTAsYT0wO2U8NjQ7ZSsrLGErPXQpYy5zZXQocyxhKTtpPW5ldyBBRVMxMjhDaXBoZXIoci5zdWJhcnJheSgwLDE2KSkuZW5jcnlwdChjLHIuc3ViYXJyYXkoMTYsMzIpKTtjb25zdCBsPU1hdGguc3VtUHJlY2lzZShpLnNsaWNlKDAsMTYpKSUzOzA9PT1sP3I9Y2FsY3VsYXRlU0hBMjU2KGksMCxpLmxlbmd0aCk6MT09PWw/cj1jYWxjdWxhdGVTSEEzODQoaSwwLGkubGVuZ3RoKToyPT09bCYmKHI9Y2FsY3VsYXRlU0hBNTEyKGksMCxpLmxlbmd0aCkpO24rK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSl9ZGVjcnlwdFN0cmluZyhlKXtjb25zdCB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2xldCBhPXN0cmluZ1RvQnl0ZXMoZSk7YT10LmRlY3J5cHRCbG9jayhhLCEwKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgxNik7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhyKTtsZXQgaT1zdHJpbmdUb0J5dGVzKGUpO2k9dC5lbmNyeXB0KGkscik7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNitpLmxlbmd0aCk7bi5zZXQocik7bi5zZXQoaSwxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcobil9bGV0IGE9c3RyaW5nVG9CeXRlcyhlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhhKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMgZ2V0IF9kZWZhdWx0UGFzc3dvcmRCeXRlcygpe3JldHVybiBzaGFkb3codGhpcywiX2RlZmF1bHRQYXNzd29yZEJ5dGVzIixuZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pKX0jWWUoZSx0LGEscixpLG4scyxvLGMsbCxoLHUpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgZD02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiBkLmNoZWNrVXNlclBhc3N3b3JkKHQsbyxzKT9kLmdldFVzZXJLZXkodCxjLGgpOnQubGVuZ3RoJiZkLmNoZWNrT3duZXJQYXNzd29yZCh0LHIsbixhKT9kLmdldE93bmVyS2V5KHQsaSxuLGwpOm51bGx9I1plKGUsdCxhLHIsaSxuLHMsbyl7Y29uc3QgYz00MCthLmxlbmd0aCtlLmxlbmd0aCxsPW5ldyBVaW50OEFycmF5KGMpO2xldCBoLHUsZD0wO2lmKHQpe3U9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7ZDx1OysrZClsW2RdPXRbZF19aD0wO2Zvcig7ZDwzMjspbFtkKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW2grK107bC5zZXQoYSxkKTtkKz1hLmxlbmd0aDtsW2QrK109MjU1Jmk7bFtkKytdPWk+PjgmMjU1O2xbZCsrXT1pPj4xNiYyNTU7bFtkKytdPWk+Pj4yNCYyNTU7bC5zZXQoZSxkKTtkKz1lLmxlbmd0aDtpZihuPj00JiYhbyl7bC5maWxsKDI1NSxkLGQrNCk7ZCs9NH1sZXQgZj1jYWxjdWxhdGVNRDUobCwwLGQpO2NvbnN0IGc9cz4+MztpZihuPj0zKWZvcihoPTA7aDw1MDsrK2gpZj1jYWxjdWxhdGVNRDUoZiwwLGcpO2NvbnN0IHA9Zi5zdWJhcnJheSgwLGcpO2xldCBtLGI7aWYobj49Myl7ZD0wO2wuc2V0KENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzLGQpO2QrPTMyO2wuc2V0KGUsZCk7ZCs9ZS5sZW5ndGg7bT1uZXcgQVJDRm91ckNpcGhlcihwKTtiPW0uZW5jcnlwdEJsb2NrKGNhbGN1bGF0ZU1ENShsLDAsZCkpO3U9cC5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheSh1KTtmb3IoaD0xO2g8PTE5OysraCl7Zm9yKGxldCBlPTA7ZTx1OysrZSl0W2VdPXBbZV1eaDttPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2I9bS5lbmNyeXB0QmxvY2soYil9fWVsc2V7bT1uZXcgQVJDRm91ckNpcGhlcihwKTtiPW0uZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzKX1yZXR1cm4gYi5ldmVyeSgoZSx0KT0+clt0XT09PWUpP3A6bnVsbH0jUWUoZSx0LGEscil7Y29uc3QgaT1uZXcgVWludDhBcnJheSgzMik7bGV0IG49MDtjb25zdCBzPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO248czsrK24paVtuXT1lW25dO2xldCBvPTA7Zm9yKDtuPDMyOylpW24rK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXNbbysrXTtsZXQgYz1jYWxjdWxhdGVNRDUoaSwwLG4pO2NvbnN0IGw9cj4+MztpZihhPj0zKWZvcihvPTA7bzw1MDsrK28pYz1jYWxjdWxhdGVNRDUoYywwLGMubGVuZ3RoKTtsZXQgaCx1O2lmKGE+PTMpe3U9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGwpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGw7Kyt0KWVbdF09Y1t0XV5vO2g9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7dT1oLmVuY3J5cHRCbG9jayh1KX19ZWxzZXtoPW5ldyBBUkNGb3VyQ2lwaGVyKGMuc3ViYXJyYXkoMCxsKSk7dT1oLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gdX0jZXQoZSx0LGEscj0hMSl7Y29uc3QgaT1hLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KGkrOSk7bi5zZXQoYSk7bGV0IHM9aTtuW3MrK109MjU1JmU7bltzKytdPWU+PjgmMjU1O25bcysrXT1lPj4xNiYyNTU7bltzKytdPTI1NSZ0O25bcysrXT10Pj44JjI1NTtpZihyKXtuW3MrK109MTE1O25bcysrXT02NTtuW3MrK109MTA4O25bcysrXT04NH1yZXR1cm4gY2FsY3VsYXRlTUQ1KG4sMCxzKS5zdWJhcnJheSgwLE1hdGgubWluKGkrNSwxNikpfSN0dChlLHQsYSxyLGkpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCBuPXRoaXMscz1lLmdldCh0Lm5hbWUpLG89cz8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIobi4jZXQoYSxyLGksITEpKX07aWYoIkFFU1YyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihuLiNldChhLHIsaSwhMCkpfTtpZigiQUVTVjMiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKGkpfTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY3J5cHRvIG1ldGhvZCIpfWNvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCByPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKHIsIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPXIubmFtZTt0aGlzLmRpY3Q9ZTtjb25zdCBpPWUuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fDEhPT1pJiYyIT09aSYmNCE9PWkmJjUhPT1pKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0iKTt0aGlzLmFsZ29yaXRobT1pO2xldCBuPWUuZ2V0KCJMZW5ndGgiKTtpZighbilpZihpPD0zKW49NDA7ZWxzZXtjb25zdCB0PWUuZ2V0KCJDRiIpLGE9ZS5nZXQoIlN0bUYiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmYSBpbnN0YW5jZW9mIE5hbWUpe3Quc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGU9dC5nZXQoYS5uYW1lKTtuPWU/LmdldCgiTGVuZ3RoIil8fDEyODtuPDQwJiYobjw8PTMpfX1pZighTnVtYmVyLmlzSW50ZWdlcihuKXx8bjw0MHx8biU4IT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoIik7Y29uc3Qgcz1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSxjPXMuc3ViYXJyYXkoMCwzMiksbD1vLnN1YmFycmF5KDAsMzIpLGg9ZS5nZXQoIlAiKSx1PWUuZ2V0KCJSIiksZD0oND09PWl8fDU9PT1pKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9ZDtjb25zdCBmPXN0cmluZ1RvQnl0ZXModCk7bGV0IGcscDtpZihhKXtpZig2PT09dSl0cnl7YT11dGY4U3RyaW5nVG9TdHJpbmcoYSl9Y2F0Y2h7d2FybigiQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeTogVW5hYmxlIHRvIGNvbnZlcnQgVVRGOCBlbmNvZGVkIHBhc3N3b3JkLiIpfWc9c3RyaW5nVG9CeXRlcyhhKX1pZig1IT09aSlwPXRoaXMuI1plKGYsZyxjLGwsaCx1LG4sZCk7ZWxzZXtjb25zdCB0PXMuc3ViYXJyYXkoMzIsNDApLGE9cy5zdWJhcnJheSg0MCw0OCkscj1vLnN1YmFycmF5KDAsNDgpLGk9by5zdWJhcnJheSgzMiw0MCksbj1vLnN1YmFycmF5KDQwLDQ4KSxoPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLGQ9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksZj1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTtwPXRoaXMuI1llKHUsZyxjLHQsYSxyLGwsaSxuLGgsZCxmKX1pZighcCl7aWYoIWEpdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJObyBwYXNzd29yZCBnaXZlbiIsWXQpO2NvbnN0IGU9dGhpcy4jUWUoZyxjLHUsbik7cD10aGlzLiNaZShmLGUsYyxsLGgsdSxuLGQpfWlmKCFwKXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiSW5jb3JyZWN0IFBhc3N3b3JkIixadCk7aWYoND09PWkmJnAubGVuZ3RoPDE2KXt0aGlzLmVuY3J5cHRpb25LZXk9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuZW5jcnlwdGlvbktleS5zZXQocCl9ZWxzZSB0aGlzLmVuY3J5cHRpb25LZXk9cDtpZihpPj00KXtjb25zdCB0PWUuZ2V0KCJDRiIpO3QgaW5zdGFuY2VvZiBEaWN0JiYodC5zdXBwcmVzc0VuY3J5cHRpb249ITApO3RoaXMuY2Y9dDt0aGlzLnN0bWY9ZS5nZXQoIlN0bUYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5zdHJmPWUuZ2V0KCJTdHJGIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuZWZmPWUuZ2V0KCJFRkYiKXx8dGhpcy5zdG1mfX1jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZSx0KXtpZig0PT09dGhpcy5hbGdvcml0aG18fDU9PT10aGlzLmFsZ29yaXRobSlyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybSh0aGlzLiN0dCh0aGlzLmNmLHRoaXMuc3RyZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSx0aGlzLiN0dCh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT10aGlzLiNldChlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxjaXBoZXJDb25zdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBuZXcgQVJDRm91ckNpcGhlcihhKX07cmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0oY2lwaGVyQ29uc3RydWN0b3IsY2lwaGVyQ29uc3RydWN0b3IpfX1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxyO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxyPWU/Lmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShhLHIsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7cj10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihyIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoci5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1yO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0sYT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9YS5zdHJlYW1Qb3M7ZS5idWYxPWEucGFyc2VyQnVmMTtlLmJ1ZjI9YS5wYXJzZXJCdWYyO2xldCByO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBhKXx8ISgiZW50cnlDb3VudCJpbiBhKSl7aWYoaXNDbWQocj1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7YS5maXJzdEVudHJ5TnVtPXI7YS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IGk9YS5maXJzdEVudHJ5TnVtO2NvbnN0IG49YS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpfHwhTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IHI9YS5lbnRyeU51bTtyPG47cisrKXthLnN0cmVhbVBvcz10LnBvczthLmVudHJ5TnVtPXI7YS5wYXJzZXJCdWYxPWUuYnVmMTthLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IHM9e307cy5vZmZzZXQ9ZS5nZXRPYmooKTtzLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpzLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpzLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihzLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKHMuZ2VuKXx8IXMuZnJlZSYmIXMudW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7aX0sICR7bn1gKTswPT09ciYmcy5mcmVlJiYxPT09aSYmKGk9MCk7dGhpcy5lbnRyaWVzW3IraV18fCh0aGlzLmVudHJpZXNbcitpXT1zKX1hLmVudHJ5TnVtPTA7YS5zdHJlYW1Qb3M9dC5wb3M7YS5wYXJzZXJCdWYxPWUuYnVmMTthLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBhLmZpcnN0RW50cnlOdW07ZGVsZXRlIGEuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gcn1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3R7ZGljdDp0LHBvczphfT1lLHI9dC5nZXQoIlciKSxpPXQuZ2V0KCJJbmRleCIpfHxbMCx0LmdldCgiU2l6ZSIpXTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczppLGJ5dGVXaWR0aHM6cixlbnRyeU51bTowLHN0cmVhbVBvczphfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2EscixpXT10LmJ5dGVXaWR0aHMsbj10LmVudHJ5UmFuZ2VzO2Zvcig7bi5sZW5ndGg+MDspe2NvbnN0W3Msb109bjtpZighTnVtYmVyLmlzSW50ZWdlcihzKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke3N9LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke3N9LCAke299YCk7Zm9yKGxldCBuPXQuZW50cnlOdW07bjxvOysrbil7dC5lbnRyeU51bT1uO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsYz0wLGw9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09YSYmKG89MSk7Zm9yKGxldCB0PTA7dDxyOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtjPWM8PDh8dH1mb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtsPWw8PDh8dH1jb25zdCBoPXt9O2gub2Zmc2V0PWM7aC5nZW49bDtzd2l0Y2gobyl7Y2FzZSAwOmguZnJlZT0hMDticmVhaztjYXNlIDE6aC51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tzK25dfHwodGhpcy5lbnRyaWVzW3Mrbl09aCl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO24uc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBhPSIiLHI9ZVt0XTtmb3IoOzEwIT09ciYmMTMhPT1yJiY2MCE9PXImJiEoKyt0Pj1lLmxlbmd0aCk7KXthKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpO3I9ZVt0XX1yZXR1cm4gYX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGEpe2NvbnN0IHI9YS5sZW5ndGgsaT1lLmxlbmd0aDtsZXQgbj0wO2Zvcig7dDxpOyl7bGV0IGk9MDtmb3IoO2k8ciYmZVt0K2ldPT09YVtpXTspKytpO2lmKGk+PXIpYnJlYWs7dCsrO24rK31yZXR1cm4gbn1jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGE9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHI9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSksaT1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLG49bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBzPXRoaXMuc3RyZWFtO3MucG9zPTA7Y29uc3Qgbz1zLmdldEJ5dGVzKCksYz1ieXRlc1RvU3RyaW5nKG8pLGw9by5sZW5ndGg7bGV0IGg9cy5zdGFydDtjb25zdCB1PVtdLGQ9W107Zm9yKDtoPGw7KXtsZXQgZj1vW2hdO2lmKDk9PT1mfHwxMD09PWZ8fDEzPT09Znx8MzI9PT1mKXsrK2g7Y29udGludWV9aWYoMzc9PT1mKXtkb3srK2g7aWYoaD49bClicmVhaztmPW9baF19d2hpbGUoMTAhPT1mJiYxMyE9PWYpO2NvbnRpbnVlfWNvbnN0IGc9cmVhZFRva2VuKG8saCk7bGV0IHA7aWYoZy5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09Zy5sZW5ndGh8fC9ccy8udGVzdChnWzRdKSkpe2grPXNraXBVbnRpbChvLGgscik7dS5wdXNoKGgpO2grPXNraXBVbnRpbChvLGgsaSl9ZWxzZSBpZihwPWEuZXhlYyhnKSl7Y29uc3QgdD0wfHBbMV0sYT0wfHBbMl0scj1oK2cubGVuZ3RoO2xldCBpLHU9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09YSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMubWFrZVN1YlN0cmVhbShyKSl9KS5nZXRPYmooKTt1PSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtnfSk6ICIke2V9Ii5gKTp1PSEwfX1lbHNlIHU9ITA7dSYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0Omgtcy5zdGFydCxnZW46YSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1yO2NvbnN0IGY9ZS5leGVjKGMpO2lmKGYpe2k9ZS5sYXN0SW5kZXgrMS1oO2lmKCJlbmRvYmoiIT09ZlsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtmWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO2ktPWZbMV0ubGVuZ3RoKzF9fWVsc2UgaT1sLWg7Y29uc3QgbT1vLnN1YmFycmF5KGgsaCtpKSxiPXNraXBVbnRpbChtLDAsbik7aWYoYjxpJiZtW2IrNV08NjQpe2QucHVzaChoLXMuc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChoLXMuc3RhcnQpfWgrPWl9ZWxzZSBpZihnLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1nLmxlbmd0aHx8L1xzLy50ZXN0KGdbN10pKSl7dS5wdXNoKGgpO2NvbnN0IGU9aCtnLmxlbmd0aDtsZXQgYTt0Lmxhc3RJbmRleD1lO2NvbnN0IHI9dC5leGVjKGMpO2lmKHIpe2E9dC5sYXN0SW5kZXgrMS1oO2lmKCJzdGFydHhyZWYiIT09clsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtyWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTthLT1yWzFdLmxlbmd0aCsxfX1lbHNlIGE9bC1oO2grPWF9ZWxzZSBoKz1nLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIGQpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBmPVtdO2xldCBnLHAsbT0hMTtmb3IoY29uc3QgZSBvZiB1KXtzLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBhPXQuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2YucHVzaChhKTthLmhhcygiRW5jcnlwdCIpJiYobT0hMCl9fWZvcihjb25zdCBlIG9mWy4uLmYsImdlbkZhbGxiYWNrIiwuLi5mXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCFwKWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgYT1lLmdldCgiUm9vdCIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IHI9YS5nZXQoIlBhZ2VzIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgaT1yLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKGkpJiYodD0hMCl9Y2F0Y2goZSl7cD1lO2NvbnRpbnVlfWlmKHQmJighbXx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO2c9ZX1pZihnKXJldHVybiBnO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFmLmxlbmd0aClmb3IoY29uc3QgZSBpbiB0aGlzLmVudHJpZXMpe2lmKCFPYmplY3QuaGFzT3duKHRoaXMuZW50cmllcyxlKSljb250aW51ZTtjb25zdCB0PXRoaXMuZW50cmllc1tlXSxhPVJlZi5nZXQocGFyc2VJbnQoZSksdC5nZW4pO2xldCByO3RyeXtyPXRoaXMuZmV0Y2goYSl9Y2F0Y2h7Y29udGludWV9ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihyPXIuZGljdCk7aWYociBpbnN0YW5jZW9mIERpY3QmJnIuaGFzKCJSb290IikpcmV0dXJuIHJ9dGhyb3cgbmV3IEludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUERGIHN0cnVjdHVyZS4iKX1yZWFkWFJlZihlPSExKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9bmV3IFNldDtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7dHJ5e2NvbnN0IGU9dGhpcy5zdGFydFhSZWZRdWV1ZVswXTtpZihhLmhhcyhlKSl7d2FybigicmVhZFhSZWYgLSBza2lwcGluZyBYUmVmIHRhYmxlIHNpbmNlIGl0IHdhcyBhbHJlYWR5IHBhcnNlZC4iKTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnNoaWZ0KCk7Y29udGludWV9YS5hZGQoZSk7dC5wb3M9ZSt0LnN0YXJ0O2NvbnN0IHI9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgaSxuPXIuZ2V0T2JqKCk7aWYoaXNDbWQobiwieHJlZiIpKXtpPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShyKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9aSk7bj1pLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobikmJiF0aGlzLl94cmVmU3Rtcy5oYXMobikpe3RoaXMuX3hyZWZTdG1zLmFkZChuKTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobil9fWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihyLmdldE9iaigpKSYmaXNDbWQoci5nZXRPYmooKSwib2JqIikmJihuPXIuZ2V0T2JqKCkpaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0iKTtpPXRoaXMucHJvY2Vzc1hSZWZTdHJlYW0obik7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PWkpO2lmKCFpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1uPWkuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihuKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobik6biBpbnN0YW5jZW9mIFJlZiYmdGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKG4ubnVtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCIod2hpbGUgcmVhZGluZyBYUmVmKTogIitlKX10aGlzLnN0YXJ0WFJlZlF1ZXVlLnNoaWZ0KCl9aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoKGUsdCk6ZX1mZXRjaChlLHQ9ITEpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO2NvbnN0IGE9ZS5udW0scj10aGlzLl9jYWNoZU1hcC5nZXQoYSk7aWYodm9pZCAwIT09cil7ciBpbnN0YW5jZW9mIERpY3QmJiFyLm9iaklkJiYoci5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiByfWxldCBpPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PWkpcmV0dXJuIGk7aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBuYX10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e2k9aS51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLGksdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxpLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1pIGluc3RhbmNlb2YgRGljdD9pLm9iaklkPWUudG9TdHJpbmcoKTppIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGkuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWZldGNoVW5jb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCByPWUuZ2VuO2xldCBpPWUubnVtO2lmKHQuZ2VuIT09cil7Y29uc3Qgbj1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxyKXt3YXJuKG4pO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQoaSx0LmdlbiksdCxhKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKG4pfWNvbnN0IG49dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCkscz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIobikseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89cy5nZXRPYmooKSxjPXMuZ2V0T2JqKCksbD1zLmdldE9iaigpO2lmKG8hPT1pfHxjIT09cnx8IShsIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09bC5jbWQpe2lmKGwuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtpPXBhcnNlSW50KGwuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihpKSlyZXR1cm4gaX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWE/cy5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShpLHIpKTpzLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGksdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCByPXQub2Zmc2V0LGk9dGhpcy5mZXRjaChSZWYuZ2V0KHIsMCkpO2lmKCEoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBuPWkuZGljdC5nZXQoIkZpcnN0Iikscz1pLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIobil8fCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBjPW5ldyBBcnJheShzKSxsPW5ldyBBcnJheShzKTtmb3IobGV0IGU9MDtlPHM7KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBhPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7YX1gKTtjW2VdPXQ7Y29uc3QgaT10aGlzLmdldEVudHJ5KHQpO2k/Lm9mZnNldD09PXImJmkuZ2VuIT09ZSYmKGkuZ2VuPWUpO2xbZV09YX1jb25zdCBoPShpLnN0YXJ0fHwwKStuLHU9bmV3IEFycmF5KHMpO2ZvcihsZXQgZT0wO2U8czsrK2Upe2NvbnN0IHQ9ZTxzLTE/bFtlKzFdLWxbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtLiIpO289bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkubWFrZVN1YlN0cmVhbShoK2xbZV0sdCxpLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1vLmdldE9iaigpO3VbZV09YTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSljb250aW51ZTtjb25zdCBuPWNbZV0sZD10aGlzLmVudHJpZXNbbl07ZCYmZC5vZmZzZXQ9PT1yJiZkLmdlbj09PWUmJnRoaXMuX2NhY2hlTWFwLnNldChuLGEpfWlmKHZvaWQgMD09PSh0PXVbdC5nZW5dKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKGEuYmVnaW4sYS5lbmQpO3JldHVybiB0aGlzLmZldGNoQXN5bmMoZSx0KX19Z2V0Q2F0YWxvZ09iaigpe3JldHVybiB0aGlzLnJvb3R9fWNvbnN0IHNjPVswLDAsNjEyLDc5Ml07Y2xhc3MgUGFnZXsjYXQ9ITE7I3J0PW51bGw7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6aSxnbG9iYWxJZEZhY3Rvcnk6bixmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsZ2xvYmFsSW1hZ2VDYWNoZTpoLHN5c3RlbUZvbnRDYWNoZTp1LG5vbkJsZW5kTW9kZXNTZXQ6ZCx4ZmFGYWN0b3J5OmZ9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1pO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZT1sO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1oO3RoaXMuc3lzdGVtRm9udENhY2hlPXU7dGhpcy5ub25CbGVuZE1vZGVzU2V0PWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPWUuZXZhbHVhdG9yT3B0aW9uczt0aGlzLnhmYUZhY3Rvcnk9Zjtjb25zdCBnPXtvYmo6MH07dGhpcy5fbG9jYWxJZEZhY3Rvcnk9Y2xhc3MgZXh0ZW5kcyBue3N0YXRpYyBjcmVhdGVPYmpJZCgpe3JldHVybmBwJHthfV8keysrZy5vYmp9YH1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7cmV0dXJuYHAke2kudG9TdHJpbmcoKX1gfX19I2l0KGUpe3JldHVybiBuZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSl9I250KGUsdD0hMSl7Y29uc3QgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnRoaXMucGFnZURpY3Qsa2V5OmUsZ2V0QXJyYXk6dCxzdG9wV2hlbkZvdW5kOiExfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/MSE9PWEubGVuZ3RoJiZhWzBdaW5zdGFuY2VvZiBEaWN0P0RpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTphfSk6YVswXTphfWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMucGFnZURpY3QuZ2V0QXJyYXkoIkNvbnRlbnRzIil9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9dGhpcy4jbnQoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfWdldEJvdW5kaW5nQm94KGUpe2lmKHRoaXMueGZhRGF0YSlyZXR1cm4gdGhpcy54ZmFEYXRhLmJib3g7Y29uc3QgdD1sb29rdXBOb3JtYWxSZWN0KHRoaXMuI250KGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5nZXRCb3VuZGluZ0JveCgiTWVkaWFCb3giKXx8c2MpfWdldCBjcm9wQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjcm9wQm94Iix0aGlzLmdldEJvdW5kaW5nQm94KCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2NvbnN0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VyVW5pdCIsIm51bWJlciI9PXR5cGVvZiBlJiZlPjA/ZToxKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IGE9VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihhJiZhWzJdLWFbMF0+MCYmYVszXS1hWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixhKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLiNudCgiUm90YXRlIil8fDA7ZSU5MCE9MD9lPTA6ZT49MzYwP2UlPTM2MDplPDAmJihlPShlJTM2MCszNjApJTM2MCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJyb3RhdGUiLGUpfSNzdChlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9YXN5bmMgZ2V0Q29udGVudFN0cmVhbSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50Iik7cmV0dXJuIGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2U6QXJyYXkuaXNBcnJheShlKT9uZXcgU3RyZWFtc1NlcXVlbmNlU3RyZWFtKGUsdGhpcy4jc3QuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW19Z2V0IHhmYURhdGEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX1hc3luYyNvdChlLHQsYSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiBlKWlmKGkuaWQpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcoaS5pZCk7aWYoIWUpe3dhcm4oYEEgbm9uLWxpbmtlZCBhbm5vdGF0aW9uIGNhbm5vdCBiZSBtb2RpZmllZDogJHtpLmlkfWApO2NvbnRpbnVlfWlmKGkuZGVsZXRlZCl7dC5wdXQoZSxlKTtpZihpLnBvcHVwUmVmKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKGkucG9wdXBSZWYpO2UmJnQucHV0KGUsZSl9Y29udGludWV9aWYoaS5wb3B1cD8uZGVsZXRlZCl7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhpLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWE/LnB1dChlKTtpLnJlZj1lO3IucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKGU9PntlIGluc3RhbmNlb2YgRGljdCYmKGkub2xkQW5ub3RhdGlvbj1lLmNsb25lKCkpfSwoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSk7ZGVsZXRlIGkuaWR9YXdhaXQgUHJvbWlzZS5hbGwocil9YXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxhLHIsaSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj10aGlzLiNpdChlKSxzPW5ldyBSZWZTZXRDYWNoZSxvPW5ldyBSZWZTZXQ7YXdhaXQgdGhpcy4jb3QoYSxzLG8pO2NvbnN0IGM9dGhpcy5wYWdlRGljdCxsPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKGU9PiEoZSBpbnN0YW5jZW9mIFJlZiYmcy5oYXMoZSkpKSxoPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhuLHQsYSxyLGkpO2Zvcihjb25zdHtyZWY6ZX1vZiBoLmFubm90YXRpb25zKWUgaW5zdGFuY2VvZiBSZWYmJiFvLmhhcyhlKSYmbC5wdXNoKGUpO2NvbnN0IHU9Yy5jbG9uZSgpO3Uuc2V0KCJBbm5vdHMiLGwpO2kucHV0KHRoaXMucmVmLHtkYXRhOnV9KTtmb3IoY29uc3QgZSBvZiBzKWkucHV0KGUse2RhdGE6bnVsbH0pfWFzeW5jIHNhdmUoZSx0LGEscil7Y29uc3QgaT10aGlzLiNpdChlKSxuPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zLHM9W107Zm9yKGNvbnN0IGUgb2YgbilzLnB1c2goZS5zYXZlKGksdCxhLHIpLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtyZXR1cm4gUHJvbWlzZS5hbGwocyl9YXN5bmMgbG9hZFJlc291cmNlcyhlKXthd2FpdCh0aGlzLiNydD8/PXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywicmVzb3VyY2VzIikpO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKX1hc3luYyNjdChlLHQpe2NvbnN0IGE9ZT8uZ2V0KCJSZXNvdXJjZXMiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0JiZhLnNpemUpKXJldHVybiB0aGlzLnJlc291cmNlczthd2FpdCBPYmplY3RMb2FkZXIubG9hZChhLHQsdGhpcy54cmVmKTtyZXR1cm4gRGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OlthLHRoaXMucmVzb3VyY2VzXSxtZXJnZVN1YkRpY3RzOiEwfSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOmUsc2luazp0LHRhc2s6YSxpbnRlbnQ6cixjYWNoZUtleTppLGFubm90YXRpb25TdG9yYWdlOmM9bnVsbCxtb2RpZmllZElkczpkPW51bGx9KXtjb25zdCBnPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLHA9dGhpcy5sb2FkUmVzb3VyY2VzKGdhKSxtPXRoaXMuI2l0KGUpLGI9dGhpcy54ZmFGYWN0b3J5P251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYykseT1iPy5nZXQodGhpcy5wYWdlSW5kZXgpO2xldCB3PVByb21pc2UucmVzb2x2ZShudWxsKSx4PW51bGw7aWYoeSl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCB0O2NvbnN0IHI9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6dH1vZiB5KSFlfHx0fHxyLmhhcyhlKXx8ci5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6aX09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKHIuc2l6ZT4wKXtjb25zdCBlPXkuc2xpY2UoKTtmb3IoY29uc3RbdCxhXW9mIGMpdC5zdGFydHNXaXRoKGYpJiZhLmJpdG1hcCYmci5oYXMoYS5iaXRtYXBJZCkmJmUucHVzaChhKTt0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGUsdGhpcy54cmVmLGkpfWVsc2UgdD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyh5LHRoaXMueHJlZixpKTt4PW5ldyBSZWZTZXQ7dz1Qcm9taXNlLmFsbChbZSx0aGlzLiNvdCh5LHgsbnVsbCldKS50aGVuKChbZV0pPT5lP0Fubm90YXRpb25GYWN0b3J5LnByaW50TmV3QW5ub3RhdGlvbnMoZSxtLGEseSx0KTpudWxsKX1jb25zdCBTPVByb21pc2UuYWxsKFtnLHBdKS50aGVuKGFzeW5jKFtuXSk9Pntjb25zdCBzPWF3YWl0IHRoaXMuI2N0KG4uZGljdCxnYSksbz1uZXcgT3BlcmF0b3JMaXN0KHIsdCk7ZS5zZW5kKCJTdGFydFJlbmRlclBhZ2UiLHt0cmFuc3BhcmVuY3k6bS5oYXNCbGVuZE1vZGVzKHMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6aX0pO2F3YWl0IG0uZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bix0YXNrOmEscmVzb3VyY2VzOnMsb3BlcmF0b3JMaXN0Om99KTtyZXR1cm4gb30pO2xldFtrLEMsdl09YXdhaXQgUHJvbWlzZS5hbGwoW1MsdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsd10pO2lmKHYpe0M9Qy5maWx0ZXIoZT0+IShlLnJlZiYmeC5oYXMoZS5yZWYpKSk7Zm9yKGxldCBlPTAsdD12Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCBhPXZbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IHI9Qy5maW5kSW5kZXgoZT0+ZS5yZWYmJmlzUmVmc0VxdWFsKGUucmVmLGEucmVmVG9SZXBsYWNlKSk7aWYocj49MCl7Qy5zcGxpY2UociwxLGEpO3Yuc3BsaWNlKGUtLSwxKTt0LS19fX1DPUMuY29uY2F0KHYpfWlmKDA9PT1DLmxlbmd0aHx8ciZoKXtrLmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOmsudG90YWxMZW5ndGh9fWNvbnN0IEY9ISEociZsKSxUPSEhKHImdSksTz0hIShyJm4pLEQ9ISEociZzKSxNPSEhKHImbyksUj1bXTtmb3IoY29uc3QgZSBvZiBDKShPfHxEJiZlLm11c3RCZVZpZXdlZChjLEYpJiZlLm11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKFQsZCl8fE0mJmUubXVzdEJlUHJpbnRlZChjKSkmJlIucHVzaChlLmdldE9wZXJhdG9yTGlzdChtLGEscixjKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2EubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKTtjb25zdCBOPWF3YWl0IFByb21pc2UuYWxsKFIpO2xldCBFPSExLEw9ITE7Zm9yKGNvbnN0e29wTGlzdDplLHNlcGFyYXRlRm9ybTp0LHNlcGFyYXRlQ2FudmFzOmF9b2YgTil7ay5hZGRPcExpc3QoZSk7RXx8PXQ7THx8PWF9ay5mbHVzaCghMCx7Zm9ybTpFLGNhbnZhczpMfSk7cmV0dXJue2xlbmd0aDprLnRvdGFsTGVuZ3RofX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxkaXNhYmxlTm9ybWFsaXphdGlvbjpyLHNpbms6aSxpbnRlcnNlY3RvcjpuPW51bGx9KXtjb25zdCBzPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLG89dGhpcy5sb2FkUmVzb3VyY2VzKHBhKSxjPXRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJsYW5nIiksW2wsLGhdPWF3YWl0IFByb21pc2UuYWxsKFtzLG8sY10pLHU9YXdhaXQgdGhpcy4jY3QobC5kaWN0LHBhKTtyZXR1cm4gdGhpcy4jaXQoZSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpsLHRhc2s6dCxyZXNvdXJjZXM6dSxpbmNsdWRlTWFya2VkQ29udGVudDphLGRpc2FibGVOb3JtYWxpemF0aW9uOnIsc2luazppLHZpZXdCb3g6dGhpcy52aWV3LGxhbmc6aCxpbnRlcnNlY3RvcjpufSl9YXN5bmMgZ2V0U3RydWN0VHJlZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290Iik7aWYoIWUpcmV0dXJuIG51bGw7YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7dHJ5e2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pO3JldHVybiBhd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHQsInNlcmlhbGl6YWJsZSIpfWNhdGNoKGUpe3dhcm4oYGdldFN0cnVjdFRyZWU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH19X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuIHI7Y29uc3QgaT1bXSxjPVtdO2xldCBsO2NvbnN0IGg9ISEoYSZuKSx1PSEhKGEmcyksZD0hIShhJm8pLGY9W107Zm9yKGNvbnN0IGEgb2Ygcil7Y29uc3Qgcj1ofHx1JiZhLnZpZXdhYmxlOyhyfHxkJiZhLnByaW50YWJsZSkmJmkucHVzaChhLmRhdGEpO2lmKGEuaGFzVGV4dENvbnRlbnQmJnIpe2w/Pz10aGlzLiNpdChlKTtjLnB1c2goYS5leHRyYWN0VGV4dENvbnRlbnQobCx0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSl9ZWxzZSBhLm92ZXJsYXlzVGV4dENvbnRlbnQmJnImJmYucHVzaChhKX1pZihmLmxlbmd0aD4wKXtjb25zdCBhPW5ldyBJbnRlcnNlY3RvcihmKTtjLnB1c2godGhpcy5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITEsZGlzYWJsZU5vcm1hbGl6YXRpb246ITEsc2luazpudWxsLHZpZXdCb3g6dGhpcy52aWV3LGxhbmc6bnVsbCxpbnRlcnNlY3RvcjphfSkudGhlbigoKT0+e2Euc2V0VGV4dCgpfSkpfWF3YWl0IFByb21pc2UuYWxsKGMpO3JldHVybiBpfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy4jbnQoIkFubm90cyIpO3JldHVybiBzaGFkb3codGhpcywiYW5ub3RhdGlvbnMiLEFycmF5LmlzQXJyYXkoZSk/ZTpbXSl9Z2V0IF9wYXJzZWRBbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oYXN5bmMgZT0+e2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZTtjb25zdFt0LGFdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7aWYoIXQpcmV0dXJuW107Y29uc3Qgcj1hPy5vcnBoYW5GaWVsZHMsaT1bXTtmb3IoY29uc3QgYSBvZiBlKWkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLGEsdCx0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxyLG51bGwsdGhpcy5yZWYpLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYF9wYXJzZWRBbm5vdGF0aW9uczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpO2NvbnN0IG49W107bGV0IHMsbztmb3IoY29uc3QgZSBvZiBhd2FpdCBQcm9taXNlLmFsbChpKSllJiYoZSBpbnN0YW5jZW9mIFdpZGdldEFubm90YXRpb24/KG98fD1bXSkucHVzaChlKTplIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uPyhzfHw9W10pLnB1c2goZSk6bi5wdXNoKGUpKTtvJiZuLnB1c2goLi4ubyk7cyYmbi5wdXNoKC4uLnMpO3JldHVybiBufSk7dGhpcy4jYXQ9ITA7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLGUpfWdldCBqc0FjdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImpzQWN0aW9ucyIsY29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMucGFnZURpY3Qsc2UpKX1hc3luYyBjb2xsZWN0QW5ub3RhdGlvbnNCeVR5cGUoZSx0LGEscixpKXtjb25zdHtwYWdlSW5kZXg6bn09dGhpcztpZih0aGlzLiNhdCl7Y29uc3QgZT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztmb3IoY29uc3R7ZGF0YTp0fW9mIGUpaWYoIWF8fGEuaGFzKHQuYW5ub3RhdGlvblR5cGUpKXt0LnBhZ2VJbmRleD1uO3IucHVzaChQcm9taXNlLnJlc29sdmUodCkpfXJldHVybn1jb25zdCBzPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKTtmb3IoY29uc3QgbyBvZiBzKXIucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLG8saSx0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxudWxsLGEsdGhpcy5yZWYpLnRoZW4oYXN5bmMgYT0+e2lmKCFhKXJldHVybiBudWxsO2EuZGF0YS5wYWdlSW5kZXg9bjtpZihhLmhhc1RleHRDb250ZW50JiZhLnZpZXdhYmxlKXtjb25zdCByPXRoaXMuI2l0KGUpO2F3YWl0IGEuZXh0cmFjdFRleHRDb250ZW50KHIsdCxbLTEvMCwtMS8wLDEvMCwxLzBdKX1yZXR1cm4gYS5kYXRhfSkuY2F0Y2goZnVuY3Rpb24oZSl7d2FybihgY29sbGVjdEFubm90YXRpb25zQnlUeXBlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9fWNvbnN0IG9jPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLGNjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbGM9bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxhPTEwMjQscj0hMSl7Y29uc3QgaT10Lmxlbmd0aCxuPWUucGVla0J5dGVzKGEpLHM9bi5sZW5ndGgtaTtpZihzPD0wKXJldHVybiExO2lmKHIpe2NvbnN0IGE9aS0xO2xldCByPW4ubGVuZ3RoLTE7Zm9yKDtyPj1hOyl7bGV0IHM9MDtmb3IoO3M8aSYmbltyLXNdPT09dFthLXNdOylzKys7aWYocz49aSl7ZS5wb3MrPXItYTtyZXR1cm4hMH1yLS19fWVsc2V7bGV0IGE9MDtmb3IoO2E8PXM7KXtsZXQgcj0wO2Zvcig7cjxpJiZuW2Ercl09PT10W3JdOylyKys7aWYocj49aSl7ZS5wb3MrPWE7cmV0dXJuITB9YSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHsjbHQ9bmV3IE1hcDsjaHQ9bnVsbDtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO2NvbnN0IGE9e2ZvbnQ6MH07dGhpcy5fZ2xvYmFsSWRGYWN0b3J5PWNsYXNze3N0YXRpYyBnZXREb2NJZCgpe3JldHVybmBnXyR7ZS5kb2NJZH1gfXN0YXRpYyBjcmVhdGVGb250SWQoKXtyZXR1cm4iZiIrICsrYS5mb250fXN0YXRpYyBjcmVhdGVPYmpJZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGNyZWF0ZU9iaklkYCBjYWxsZWQuIil9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldFBhZ2VPYmpJZGAgY2FsbGVkLiIpfX19cGFyc2UoZSl7dGhpcy54cmVmLnBhcnNlKGUpO3RoaXMuY2F0YWxvZz1uZXcgQ2F0YWxvZyh0aGlzLnBkZk1hbmFnZXIsdGhpcy54cmVmKX1nZXQgbGluZWFyaXphdGlvbigpe2xldCBlPW51bGw7dHJ5e2U9TGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJsaW5lYXJpemF0aW9uIixlKX1nZXQgc3RhcnRYUmVmKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD0wO2lmKHRoaXMubGluZWFyaXphdGlvbil7ZS5yZXNldCgpO2lmKGZpbmQoZSxsYykpe2Uuc2tpcCg2KTtsZXQgYT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoYSk7KXtlLnBvcysrO2E9ZS5wZWVrQnl0ZSgpfXQ9ZS5wb3MtZS5zdGFydH19ZWxzZXtjb25zdCBhPTEwMjQscj1jYy5sZW5ndGg7bGV0IGk9ITEsbj1lLmVuZDtmb3IoOyFpJiZuPjA7KXtuLT1hLXI7bjwwJiYobj0wKTtlLnBvcz1uO2k9ZmluZChlLGNjLGEsITApfWlmKGkpe2Uuc2tpcCg5KTtsZXQgYTtkb3thPWUuZ2V0Qnl0ZSgpfXdoaWxlKGlzV2hpdGVTcGFjZShhKSk7bGV0IHI9IiI7Zm9yKDthPj0zMiYmYTw9NTc7KXtyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZS5nZXRCeXRlKCl9dD1wYXJzZUludChyLDEwKTtpc05hTih0KSYmKHQ9MCl9fXJldHVybiBzaGFkb3codGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsb2MpKXJldHVybjtlLm1vdmVTdGFydCgpO2Uuc2tpcChvYy5sZW5ndGgpO2xldCB0LGE9IiI7Zm9yKDsodD1lLmdldEJ5dGUoKSk+MzImJmEubGVuZ3RoPDc7KWErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dWEudGVzdChhKT90aGlzLiNodD1hOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9I3V0KGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApe3dhcm4oIiNoYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuI3V0KGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT1pc05hbWUoZS5nZXQoIkZUIiksIlNpZyIpLHI9ZS5nZXQoIlJlY3QiKSxpPUFycmF5LmlzQXJyYXkocikmJnIuZXZlcnkoZT0+MD09PWUpO3JldHVybiBhJiZpfSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3R7YWNyb0Zvcm06ZX09dGhpcy5jYXRhbG9nO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5nZXQoIlhGQSIpLGE9bmV3IE1hcChbInhkcDp4ZHAiLCJ0ZW1wbGF0ZSIsImRhdGFzZXRzIiwiY29uZmlnIiwiY29ubmVjdGlvblNldCIsImxvY2FsZVNldCIsInN0eWxlc2hlZXQiLCIveGRwOnhkcCJdLm1hcChlPT5bZSxudWxsXSkpO2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXthLnNldCgieGRwOnhkcCIsdCk7cmV0dXJuIGF9aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKz0yKXtsZXQgaTtpPTA9PT1lPyJ4ZHA6eGRwIjplPT09ci0yPyIveGRwOnhkcCI6dFtlXTtpZighYS5oYXMoaSkpY29udGludWU7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO24gaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhbi5pc0VtcHR5JiZhLnNldChpLG4pfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKTtmb3IoY29uc3QgdCBvZlsiZGF0YXNldHMiLCJ4ZHA6eGRwIl0pe2NvbnN0IGE9ZS5nZXQodCk7aWYoYSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2Escl1vZiBlKWlmKHIpdHJ5e3RbYV09c3RyaW5nVG9VVEY4U3RyaW5nKHIuZ2V0U3RyaW5nKCkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO3JldHVybiBudWxsfXJldHVybiB0fWdldCB4ZmFGYWN0b3J5KCl7bGV0IGU7dGhpcy5wZGZNYW5hZ2VyLmVuYWJsZVhmYSYmdGhpcy5jYXRhbG9nLm5lZWRzUmVuZGVyaW5nJiZ0aGlzLmZvcm1JbmZvLmhhc1hmYSYmIXRoaXMuZm9ybUluZm8uaGFzQWNyb0Zvcm0mJihlPXRoaXMueGZhRGF0YSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFGYWN0b3J5IixlP25ldyBYRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyNkdCgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2UmJnRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoZSl9YXN5bmMjZnQoZSx0KXtjb25zdCBhPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpO2lmKCFhKXJldHVybjtjb25zdCByPWF3YWl0IGEuZ2V0QXN5bmMoIkRSIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKHIsWyJGb250Il0sdGhpcy54cmVmKTtjb25zdCBpPXIuZ2V0KCJGb250Iik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLHt1c2VTeXN0ZW1Gb250czohMX0pLHtidWlsdEluQ01hcENhY2hlOnMsZm9udENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmN9PXRoaXMuY2F0YWxvZyxsPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOm8sYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpjLG9wdGlvbnM6bn0pLGg9bmV3IE9wZXJhdG9yTGlzdCx1PVtdLGQ9e2dldCBmb250KCl7cmV0dXJuIHUuYXQoLTEpfSxzZXQgZm9udChlKXt1LnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxwYXJzZUZvbnQ9KGUsYSxpKT0+bC5oYW5kbGVTZXRGb250KHIsW05hbWUuZ2V0KGUpLDFdLG51bGwsaCx0LGQsYSxpKS5jYXRjaChlPT57d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSxmPVtdO2Zvcihjb25zdFtlLHRdb2YgaSl7Y29uc3QgYT10LmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcj1hLmdldCgiRm9udEZhbWlseSIpO3I9ci5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGk9e2ZvbnRGYW1pbHk6cixmb250V2VpZ2h0OmEuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LWEuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQoaSkmJmYucHVzaChwYXJzZUZvbnQoZSxudWxsLGkpKX1hd2FpdCBQcm9taXNlLmFsbChmKTtjb25zdCBnPXRoaXMueGZhRmFjdG9yeS5zZXRGb250cyh1KTtpZighZylyZXR1cm47bi5pZ25vcmVFcnJvcnM9ITA7Zi5sZW5ndGg9MDt1Lmxlbmd0aD0wO2NvbnN0IHA9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBnKWdldFhmYUZvbnROYW1lKGAke2V9LVJlZ3VsYXJgKXx8cC5hZGQoZSk7cC5zaXplJiZnLnB1c2goIlBkZkpTLUZhbGxiYWNrIik7Zm9yKGNvbnN0IGUgb2YgZylpZighcC5oYXMoZSkpZm9yKGNvbnN0IHQgb2Zbe25hbWU6IlJlZ3VsYXIiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJCb2xkIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiSXRhbGljIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZToxMn0se25hbWU6IkJvbGRJdGFsaWMiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjEyfV0pe2NvbnN0IGE9YCR7ZX0tJHt0Lm5hbWV9YDtmLnB1c2gocGFyc2VGb250KGEsZ2V0WGZhRm9udERpY3QoYSkse2ZvbnRGYW1pbHk6ZSxmb250V2VpZ2h0OnQuZm9udFdlaWdodCxpdGFsaWNBbmdsZTp0Lml0YWxpY0FuZ2xlfSkpfWF3YWl0IFByb21pc2UuYWxsKGYpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyh1LHApfWxvYWRYZmFSZXNvdXJjZXMoZSx0KXtyZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuI2Z0KGUsdCkuY2F0Y2goKCk9Pnt9KSx0aGlzLiNkdCgpXSl9c2VyaWFsaXplWGZhRGF0YShlKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5zZXJpYWxpemVEYXRhKGUpOm51bGx9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5jYXRhbG9nLnZlcnNpb258fHRoaXMuI2h0fWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0se2Fjcm9Gb3JtOnR9PXRoaXMuY2F0YWxvZztpZighdClyZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKTt0cnl7Y29uc3QgYT10LmdldCgiRmllbGRzIikscj1BcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aD4wO2UuaGFzRmllbGRzPXI7Y29uc3QgaT10LmdldCgiWEZBIik7ZS5oYXNYZmE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MHx8aSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFpLmlzRW1wdHk7Y29uc3Qgbj0hISgxJnQuZ2V0KCJTaWdGbGFncyIpKSxzPW4mJnRoaXMuI3V0KGEpO2UuaGFzQWNyb0Zvcm09ciYmIXM7ZS5oYXNTaWduYXR1cmVzPW59Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3R7Y2F0YWxvZzplLGZvcm1JbmZvOnQseHJlZjphfT10aGlzLHI9e1BERkZvcm1hdFZlcnNpb246dGhpcy52ZXJzaW9uLExhbmd1YWdlOmUubGFuZyxFbmNyeXB0RmlsdGVyTmFtZTphLmVuY3J5cHQ/LmZpbHRlck5hbWU/P251bGwsSXNMaW5lYXJpemVkOiEhdGhpcy5saW5lYXJpemF0aW9uLElzQWNyb0Zvcm1QcmVzZW50OnQuaGFzQWNyb0Zvcm0sSXNYRkFQcmVzZW50OnQuaGFzWGZhLElzQ29sbGVjdGlvblByZXNlbnQ6ISFlLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0Lmhhc1NpZ25hdHVyZXN9O2xldCBpO3RyeXtpPWEudHJhaWxlci5nZXQoIkluZm8iKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJUaGUgZG9jdW1lbnQgaW5mb3JtYXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRJbmZvIixyKTtmb3IoY29uc3RbZSx0XW9mIGkpe3N3aXRjaChlKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgdCl7cltlXT1zdHJpbmdUb1BERlN0cmluZyh0KTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKHQgaW5zdGFuY2VvZiBOYW1lKXtyW2VdPXQ7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgYTtzd2l0Y2godHlwZW9mIHQpe2Nhc2Uic3RyaW5nIjphPXN0cmluZ1RvUERGU3RyaW5nKHQpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOmE9dDticmVhaztkZWZhdWx0OnQgaW5zdGFuY2VvZiBOYW1lJiYoYT10KX1pZih2b2lkIDA9PT1hKXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2V9IiwgaW4gSW5mbzogJHt0fS5gKTtjb250aW51ZX1yLkN1c3RvbT8/PU9iamVjdC5jcmVhdGUobnVsbCk7ci5DdXN0b21bZV09YTtjb250aW51ZX13YXJuKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7ZX0iLCBpbiBJbmZvOiAke3R9LmApfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRJbmZvIixyKX1nZXQgZmluZ2VycHJpbnRzKCl7Y29uc3QgZT0iXDAiLnJlcGVhdCgxNik7ZnVuY3Rpb24gdmFsaWRhdGUodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYxNj09PXQubGVuZ3RoJiZ0IT09ZX1jb25zdCB0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSUQiKTtsZXQgYSxyO2lmKEFycmF5LmlzQXJyYXkodCkmJnZhbGlkYXRlKHRbMF0pKXthPXN0cmluZ1RvQnl0ZXModFswXSk7dFsxXSE9PXRbMF0mJnZhbGlkYXRlKHRbMV0pJiYocj1zdHJpbmdUb0J5dGVzKHRbMV0pKX1lbHNlIGE9Y2FsY3VsYXRlTUQ1KHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaW5nZXJwcmludHMiLFt0b0hleFV0aWwoYSkscj90b0hleFV0aWwocik6bnVsbF0pfWFzeW5jI2d0KGUpe2NvbnN0e2NhdGFsb2c6dCxsaW5lYXJpemF0aW9uOmEseHJlZjpyfT10aGlzLGk9UmVmLmdldChhLm9iamVjdE51bWJlckZpcnN0LDApO3RyeXtjb25zdCBlPWF3YWl0IHIuZmV0Y2hBc3luYyhpKTtpZihlIGluc3RhbmNlb2YgRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2YgUmVmJiYoYT1hd2FpdCByLmZldGNoQXN5bmMoYSkpO2lmKGlzTmFtZShhLCJQYWdlIil8fCFlLmhhcygiVHlwZSIpJiYhZS5oYXMoIktpZHMiKSYmZS5oYXMoIkNvbnRlbnRzIikpe3QucGFnZUtpZHNDb3VudENhY2hlLmhhcyhpKXx8dC5wYWdlS2lkc0NvdW50Q2FjaGUucHV0KGksMSk7dC5wYWdlSW5kZXhDYWNoZS5oYXMoaSl8fHQucGFnZUluZGV4Q2FjaGUucHV0KGksMCk7cmV0dXJuW2UsaV19fXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpe3dhcm4oYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLiNsdC5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOmEsbGluZWFyaXphdGlvbjpyLHhmYUZhY3Rvcnk6aX09dGhpcztsZXQgbjtuPWk/UHJvbWlzZS5yZXNvbHZlKFtEaWN0LmVtcHR5LG51bGxdKTpyPy5wYWdlRmlyc3Q9PT1lP3RoaXMuI2d0KGUpOmEuZ2V0UGFnZURpY3QoZSk7bj1uLnRoZW4oKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbENvbG9yU3BhY2VDYWNoZTphLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOmEuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6YS5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDphLm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTppfSkpO3RoaXMuI2x0LnNldChlLG4pO3JldHVybiBufWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbil7dGhpcy4jbHQuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOmF9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCByO3RyeXthd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxhLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGEuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47cj10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO2lmKHI8PTEpcmV0dXJuO2F3YWl0IHRoaXMuZ2V0UGFnZShyLTEpfWNhdGNoKGkpe3RoaXMuI2x0LmRlbGV0ZShyLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBuO3RyeXtuPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW3IsaV1db2Ygbil7bGV0IG47aWYociBpbnN0YW5jZW9mIEVycm9yKXtuPVByb21pc2UucmVqZWN0KHIpO24uY2F0Y2goKCk9Pnt9KX1lbHNlIG49UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6cixyZWY6aSxnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dC5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0LnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OnQubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Om51bGx9KSk7dGhpcy4jbHQuc2V0KGUsbil9dC5zZXRBY3R1YWxOdW1QYWdlcyhuLnNpemUpfX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdHtjYXRhbG9nOmEscGRmTWFuYWdlcjpyfT10aGlzO2Zvcihjb25zdCBpIG9mIGF3YWl0IFByb21pc2UuYWxsKGEuZm9udENhY2hlKSlpZihpLmxvYWRlZE5hbWU9PT1lKXtpLmZhbGxiYWNrKHQsci5ldmFsdWF0b3JPcHRpb25zKTtyZXR1cm59fWFzeW5jIGNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMuY2F0YWxvZz90aGlzLmNhdGFsb2cuY2xlYW51cChlKTpjbGVhckdsb2JhbENhY2hlcygpfWFzeW5jI3B0KGUsdCxhLHIsaSxuLHMpe2NvbnN0e3hyZWY6b309dGhpcztpZighKGEgaW5zdGFuY2VvZiBSZWYpfHxuLmhhcyhhKSlyZXR1cm47bi5wdXQoYSk7Y29uc3QgYz1hd2FpdCBvLmZldGNoQXN5bmMoYSk7aWYoIShjIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2xldCBsPWF3YWl0IGMuZ2V0QXN5bmMoIlN1YnR5cGUiKTtsPWwgaW5zdGFuY2VvZiBOYW1lP2wubmFtZTpudWxsO2lmKCJMaW5rIj09PWwpcmV0dXJuO2lmKGMuaGFzKCJUIikpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgYy5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWVsc2V7bGV0IGE9Yztmb3IoOzspe2E9YS5nZXRSYXcoIlBhcmVudCIpfHx0O2lmKGEgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGEpKWJyZWFrO2E9YXdhaXQgby5mZXRjaEFzeW5jKGEpfWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWJyZWFrO2lmKGEuaGFzKCJUIikpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgYS5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gO2JyZWFrfX19dCYmIWMuaGFzKCJQYXJlbnQiKSYmaXNOYW1lKGMuZ2V0KCJTdWJ0eXBlIiksIldpZGdldCIpJiZzLnB1dChhLHQpO3IuaGFzKGUpfHxyLnNldChlLFtdKTtyLmdldChlKS5wdXNoKEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZShvLGEsaSxudWxsLCEwLHMsbnVsbCxudWxsKS50aGVuKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYCNjb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSk7aWYoIWMuaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IGg9YXdhaXQgYy5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoaCkpZm9yKGNvbnN0IHQgb2YgaClhd2FpdCB0aGlzLiNwdChlLGEsdCxyLGksbixzKX1nZXQgZmllbGRPYmplY3RzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaWVsZE9iamVjdHMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZvcm1JbmZvIikudGhlbihhc3luYyBlPT57aWYoIWUuaGFzRmllbGRzKXJldHVybiBudWxsO2NvbnN0IHQ9YXdhaXQgdGhpcy5hbm5vdGF0aW9uR2xvYmFscztpZighdClyZXR1cm4gbnVsbDtjb25zdHthY3JvRm9ybTphfT10LHI9bmV3IFJlZlNldCxpPU9iamVjdC5jcmVhdGUobnVsbCksbj1uZXcgTWFwLHM9bmV3IFJlZlNldENhY2hlO2Zvcihjb25zdCBlIG9mIGEuZ2V0KCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNwdCgiIixudWxsLGUsbix0LHIscyk7Y29uc3Qgbz1bXTtmb3IoY29uc3RbZSx0XW9mIG4pby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4odD0+eyh0PXQuZmlsdGVyKGU9PiEhZSkpLmxlbmd0aD4wJiYoaVtlXT10KX0pKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOm9iamVjdFNpemUoaSk+MD9pOm51bGwsb3JwaGFuRmllbGRzOnN9fSkpfWdldCBoYXNKU0FjdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImhhc0pTQWN0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIikpfWFzeW5jIF9wYXJzZUhhc0pTQWN0aW9ucygpe2NvbnN0W2UsdF09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO3JldHVybiEhZXx8ISF0Py5hbGxGaWVsZHMmJk9iamVjdC52YWx1ZXModC5hbGxGaWVsZHMpLnNvbWUoZT0+ZS5zb21lKGU9Pm51bGwhPT1lLmFjdGlvbnMpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtPy5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fDA9PT1lLmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LnB1c2goYS50b1N0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLHQubGVuZ3RoP3Q6bnVsbCl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3Ioe2RvY0Jhc2VVcmw6ZSxkb2NJZDp0LGVuYWJsZVhmYTphLGV2YWx1YXRvck9wdGlvbnM6cixoYW5kbGVyOmkscGFzc3dvcmQ6bn0pe3RoaXMuX2RvY0Jhc2VVcmw9ZnVuY3Rpb24gcGFyc2VEb2NCYXNlVXJsKGUpe2lmKGUpe2NvbnN0IHQ9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlKTtpZih0KXJldHVybiB0LmhyZWY7d2FybihgSW52YWxpZCBhYnNvbHV0ZSBkb2NCYXNlVXJsOiAiJHtlfSIuYCl9cmV0dXJuIG51bGx9KGUpO3RoaXMuX2RvY0lkPXQ7dGhpcy5fcGFzc3dvcmQ9bjt0aGlzLmVuYWJsZVhmYT1hO3IuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQmJj1GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDtyLmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUocik7SW1hZ2VSZXNpemVyLnNldE9wdGlvbnMocik7SnBlZ1N0cmVhbS5zZXRPcHRpb25zKHIpO09wZXJhdG9yTGlzdC5zZXRPcHRpb25zKHIpO2NvbnN0IHM9ey4uLnIsaGFuZGxlcjppfTtKcHhJbWFnZS5zZXRPcHRpb25zKHMpO0ljY0NvbG9yU3BhY2Uuc2V0T3B0aW9ucyhzKTtDbXlrSUNDQmFzZWRDUy5zZXRPcHRpb25zKHMpfWdldCBkb2NJZCgpe3JldHVybiB0aGlzLl9kb2NJZH1nZXQgcGFzc3dvcmQoKXtyZXR1cm4gdGhpcy5fcGFzc3dvcmR9Z2V0IGRvY0Jhc2VVcmwoKXtyZXR1cm4gdGhpcy5fZG9jQmFzZVVybH1lbnN1cmVEb2MoZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudCxlLHQpfWVuc3VyZVhSZWYoZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC54cmVmLGUsdCl9ZW5zdXJlQ2F0YWxvZyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LmNhdGFsb2csZSx0KX1nZXRQYWdlKGUpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmdldFBhZ2UoZSl9Zm9udEZhbGxiYWNrKGUsdCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZm9udEZhbGxiYWNrKGUsdCl9Y2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jbGVhbnVwKGUpfWFzeW5jIGVuc3VyZShlLHQsYSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZW5zdXJlYCBjYWxsZWQiKX1yZXF1ZXN0UmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0UmFuZ2VgIGNhbGxlZCIpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdExvYWRlZFN0cmVhbWAgY2FsbGVkIil9c2VuZFByb2dyZXNzaXZlRGF0YShlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBzZW5kUHJvZ3Jlc3NpdmVEYXRhYCBjYWxsZWQiKX11cGRhdGVQYXNzd29yZChlKXt0aGlzLl9wYXNzd29yZD1lfXRlcm1pbmF0ZShlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGB0ZXJtaW5hdGVgIGNhbGxlZCIpfX1jbGFzcyBMb2NhbFBkZk1hbmFnZXIgZXh0ZW5kcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PW5ldyBTdHJlYW0oZS5zb3VyY2UpO3RoaXMucGRmRG9jdW1lbnQ9bmV3IFBERkRvY3VtZW50KHRoaXMsdCk7dGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZT1Qcm9taXNlLnJlc29sdmUodCl9YXN5bmMgZW5zdXJlKGUsdCxhKXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9cmVxdWVzdFJhbmdlKGUsdCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbVByb21pc2V9dGVybWluYXRlKGUpe319Y2xhc3MgTmV0d29ya1BkZk1hbmFnZXIgZXh0ZW5kcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IENodW5rZWRTdHJlYW1NYW5hZ2VyKGUuc291cmNlLHttc2dIYW5kbGVyOmUuaGFuZGxlcixsZW5ndGg6ZS5sZW5ndGgsZGlzYWJsZUF1dG9GZXRjaDplLmRpc2FibGVBdXRvRmV0Y2gscmFuZ2VDaHVua1NpemU6ZS5yYW5nZUNodW5rU2l6ZX0pO3RoaXMucGRmRG9jdW1lbnQ9bmV3IFBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LGEpe3RyeXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IHI7YXdhaXQgdGhpcy5yZXF1ZXN0UmFuZ2Uoci5iZWdpbixyLmVuZCk7cmV0dXJuIHRoaXMuZW5zdXJlKGUsdCxhKX19cmVxdWVzdFJhbmdlKGUsdCl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0UmFuZ2UoZSx0KX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdEFsbENodW5rcyhlKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5vblJlY2VpdmVEYXRhKHtjaHVuazplfSl9dGVybWluYXRlKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5hYm9ydChlKX19Y29uc3QgaGM9MSx1Yz0yLGRjPTEsZmM9MixnYz0zLHBjPTQsbWM9NSxiYz02LHljPTcsd2M9ODtmdW5jdGlvbiBvbkZuKCl7fWZ1bmN0aW9uIHdyYXBSZWFzb24oZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgSW52YWxpZFBERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBVbmtub3duRXJyb3JFeGNlcHRpb24pcmV0dXJuIGU7ZSBpbnN0YW5jZW9mIEVycm9yfHwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfHx1bnJlYWNoYWJsZSgnd3JhcFJlYXNvbjogRXhwZWN0ZWQgInJlYXNvbiIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtzd2l0Y2goZS5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IEFib3J0RXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJJbnZhbGlkUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IEludmFsaWRQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgUmVzcG9uc2VFeGNlcHRpb24oZS5tZXNzYWdlLGUuc3RhdHVzLGUubWlzc2luZyk7Y2FzZSJVbmtub3duRXJyb3JFeGNlcHRpb24iOnJldHVybiBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLmRldGFpbHMpfXJldHVybiBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpfWNsYXNzIE1lc3NhZ2VIYW5kbGVyeyNtdD1uZXcgQWJvcnRDb250cm9sbGVyO2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1hO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuI2J0LmJpbmQodGhpcykse3NpZ25hbDp0aGlzLiNtdC5zaWduYWx9KX0jYnQoe2RhdGE6ZX0pe2lmKGUudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYoZS5zdHJlYW0pe3RoaXMuI3l0KGUpO3JldHVybn1pZihlLmNhbGxiYWNrKXtjb25zdCB0PWUuY2FsbGJhY2tJZCxhPXRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoIWEpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAke3R9YCk7ZGVsZXRlIHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoZS5jYWxsYmFjaz09PWhjKWEucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PXVjKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7YS5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCB0PXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl07aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IGE9dGhpcy5zb3VyY2VOYW1lLHI9ZS5zb3VyY2VOYW1lLGk9dGhpcy5jb21PYmo7UHJvbWlzZS50cnkodCxlLmRhdGEpLnRoZW4oZnVuY3Rpb24odCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixjYWxsYmFjazpoYyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxkYXRhOnR9KX0sZnVuY3Rpb24odCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixjYWxsYmFjazp1YyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbih0KX0pfSk7cmV0dXJufWUuc3RyZWFtSWQ/dGhpcy4jd3QoZSk6dChlLmRhdGEpfW9uKGUsdCl7Y29uc3QgYT10aGlzLmFjdGlvbkhhbmRsZXI7aWYoYVtlXSl0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIiR7ZX0iYCk7YVtlXT10fXNlbmQoZSx0LGEpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxkYXRhOnR9LGEpfXNlbmRXaXRoUHJvbWlzZShlLHQsYSl7Y29uc3Qgcj10aGlzLmNhbGxiYWNrSWQrKyxpPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbcl09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6cixkYXRhOnR9LGEpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGEscil7Y29uc3QgaT10aGlzLnN0cmVhbUlkKyssbj10aGlzLnNvdXJjZU5hbWUscz10aGlzLnRhcmdldE5hbWUsbz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3QgYz1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2ldPXtjb250cm9sbGVyOmEsc3RhcnRDYWxsOmMscHVsbENhbGw6bnVsbCxjYW5jZWxDYWxsOm51bGwsaXNDbG9zZWQ6ITF9O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnMsYWN0aW9uOmUsc3RyZWFtSWQ6aSxkYXRhOnQsZGVzaXJlZFNpemU6YS5kZXNpcmVkU2l6ZX0scik7cmV0dXJuIGMucHJvbWlzZX0scHVsbDplPT57Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2ldLnB1bGxDYWxsPXQ7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cyxzdHJlYW06YmMsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9Pnthc3NlcnQoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2ldLmNhbmNlbENhbGw9dDt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2ldLmlzQ2xvc2VkPSEwO28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnMsc3RyZWFtOmRjLHN0cmVhbUlkOmkscmVhc29uOndyYXBSZWFzb24oZSl9KTtyZXR1cm4gdC5wcm9taXNlfX0sYSl9I3d0KGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxyPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLG49dGhpcyxzPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sbz17ZW5xdWV1ZShlLG49MSxzKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBvPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09bjtpZihvPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5yZWFkeT10aGlzLnNpbmtDYXBhYmlsaXR5LnByb21pc2V9aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06cGMsc3RyZWFtSWQ6dCxjaHVuazplfSxzKX0sY2xvc2UoKXtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTpnYyxzdHJlYW1JZDp0fSk7ZGVsZXRlIG4uc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXthc3NlcnQoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTptYyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9fSxzaW5rQ2FwYWJpbGl0eTpQcm9taXNlLndpdGhSZXNvbHZlcnMoKSxvblB1bGw6bnVsbCxvbkNhbmNlbDpudWxsLGlzQ2FuY2VsbGVkOiExLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemUscmVhZHk6bnVsbH07by5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7by5yZWFkeT1vLnNpbmtDYXBhYmlsaXR5LnByb21pc2U7dGhpcy5zdHJlYW1TaW5rc1t0XT1vO1Byb21pc2UudHJ5KHMsZS5kYXRhLG8pLnRoZW4oZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTp3YyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0sZnVuY3Rpb24oZSl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06d2Msc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSl9I3l0KGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxyPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLG49dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxzPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIHdjOmUuc3VjY2Vzcz9uLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6bi5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHljOmUuc3VjY2Vzcz9uLnB1bGxDYWxsLnJlc29sdmUoKTpuLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBiYzppZighcyl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06eWMsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cy5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZzLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtzLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7UHJvbWlzZS50cnkocy5vblB1bGx8fG9uRm4pLnRoZW4oZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTp5YyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0sZnVuY3Rpb24oZSl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06eWMsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSk7YnJlYWs7Y2FzZSBwYzphc3NlcnQobiwiZW5xdWV1ZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKG4uaXNDbG9zZWQpYnJlYWs7bi5jb250cm9sbGVyLmVucXVldWUoZS5jaHVuayk7YnJlYWs7Y2FzZSBnYzphc3NlcnQobiwiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihuLmlzQ2xvc2VkKWJyZWFrO24uaXNDbG9zZWQ9ITA7bi5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy4jeHQobix0KTticmVhaztjYXNlIG1jOmFzc2VydChuLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO24uY29udHJvbGxlci5lcnJvcih3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jeHQobix0KTticmVhaztjYXNlIGZjOmUuc3VjY2Vzcz9uLmNhbmNlbENhbGwucmVzb2x2ZSgpOm4uY2FuY2VsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3h0KG4sdCk7YnJlYWs7Y2FzZSBkYzppZighcylicmVhaztjb25zdCBvPXdyYXBSZWFzb24oZS5yZWFzb24pO1Byb21pc2UudHJ5KHMub25DYW5jZWx8fG9uRm4sbykudGhlbihmdW5jdGlvbigpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOmZjLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSxmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTpmYyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KTtzLnNpbmtDYXBhYmlsaXR5LnJlamVjdChvKTtzLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jI3h0KGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbD8ucHJvbWlzZSxlLnB1bGxDYWxsPy5wcm9taXNlLGUuY2FuY2VsQ2FsbD8ucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLiNtdD8uYWJvcnQoKTt0aGlzLiNtdD1udWxsfX1hc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsYSx7ZW5jcnlwdDpyPW51bGwsZW5jcnlwdFJlZjppPW51bGx9KXtjb25zdCBuPXImJmkhPT1lP3IuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUubnVtLGUuZ2VuKTpudWxsO2EucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gb2JqXG5gKTthd2FpdCB3cml0ZVZhbHVlKHQsYSxuKTthLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGEpe3QucHVzaCgiPDwiKTtmb3IoY29uc3RbcixpXW9mIGUuZ2V0UmF3RW50cmllcygpKXt0LnB1c2goYCAvJHtlc2NhcGVQREZOYW1lKHIpfSBgKTthd2FpdCB3cml0ZVZhbHVlKGksdCxhKX10LnB1c2goIj4+Iil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdC5wdXNoKGAvJHtlc2NhcGVQREZOYW1lKGUubmFtZSl9YCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKXx8QXJyYXlCdWZmZXIuaXNWaWV3KGUpKWF3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEpe3QucHVzaCgiWyIpO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7YXdhaXQgd3JpdGVWYWx1ZShlW3JdLHQsYSk7cjxpLTEmJnQucHVzaCgiICIpfXQucHVzaCgiXSIpfShlLHQsYSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpe2EmJihlPWEuZW5jcnlwdFN0cmluZyhlKSk7dC5wdXNoKGAoJHtlc2NhcGVTdHJpbmcoZSl9KWApfWVsc2UibnVtYmVyIj09dHlwZW9mIGV8fCJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIERpY3Q/YXdhaXQgd3JpdGVEaWN0KGUsdCxhKTplIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsYSl7KGU9ZS5nZXRPcmlnaW5hbFN0cmVhbSgpKS5yZXNldCgpO2xldCByPWUuZ2V0Qnl0ZXMoKTtjb25zdHtkaWN0Oml9PWUsW24sc109YXdhaXQgUHJvbWlzZS5hbGwoW2kuZ2V0QXN5bmMoIkZpbHRlciIpLGkuZ2V0QXN5bmMoIkRlY29kZVBhcm1zIildKSxvPWlzTmFtZShBcnJheS5pc0FycmF5KG4pP2F3YWl0IGkueHJlZi5mZXRjaElmUmVmQXN5bmMoblswXSk6biwiRmxhdGVEZWNvZGUiKTtpZihyLmxlbmd0aD49MjU2JiYhbyl0cnl7Y29uc3QgZT1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSx0PWUud3JpdGFibGUuZ2V0V3JpdGVyKCk7YXdhaXQgdC5yZWFkeTt0LndyaXRlKHIpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IHQucmVhZHk7YXdhaXQgdC5jbG9zZSgpfSkuY2F0Y2goKCk9Pnt9KTtjb25zdCBhPWF3YWl0IG5ldyBSZXNwb25zZShlLnJlYWRhYmxlKS5hcnJheUJ1ZmZlcigpO3I9bmV3IFVpbnQ4QXJyYXkoYSk7bGV0IGMsbDtpZihuKXtpZighbyl7Yz1BcnJheS5pc0FycmF5KG4pP1tOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSwuLi5uXTpbTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksbl07cyYmKGw9QXJyYXkuaXNBcnJheShzKT9bbnVsbCwuLi5zXTpbbnVsbCxzXSl9fWVsc2UgYz1OYW1lLmdldCgiRmxhdGVEZWNvZGUiKTtjJiZpLnNldCgiRmlsdGVyIixjKTtsJiZpLnNldCgiRGVjb2RlUGFybXMiLGwpfWNhdGNoKGUpe2luZm8oYHdyaXRlU3RyZWFtIC0gY2Fubm90IGNvbXByZXNzIGRhdGE6ICIke2V9Ii5gKX1sZXQgYz1ieXRlc1RvU3RyaW5nKHIpO2EmJihjPWEuZW5jcnlwdFN0cmluZyhjKSk7aS5zZXQoIkxlbmd0aCIsYy5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChpLHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iLGMsIlxuZW5kc3RyZWFtIil9KGUsdCxhKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGEscil7Zm9yKGxldCBpPXQrYS0xO2k+YS0xO2ktLSl7cltpXT0yNTUmZTtlPj49OH1yZXR1cm4gYSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoO2ZvcihsZXQgaT0wO2k8cjtpKyspYVt0K2ldPTI1NSZlLmNoYXJDb2RlQXQoaSk7cmV0dXJuIHQrcn1mdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGNoYW5nZXM6YSx4cmVmOnJ9KXtpZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTtmb3IoY29uc3R7eGZhOmV9b2YgdCl7aWYoIWUpY29udGludWU7Y29uc3R7cGF0aDp0LHZhbHVlOnJ9PWU7aWYoIXQpY29udGludWU7Y29uc3QgaT1wYXJzZVhGQVBhdGgodCk7bGV0IG49YS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShpLDApOyFuJiZpLmxlbmd0aD4xJiYobj1hLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKFtpLmF0KC0xKV0sMCkpO24/bi5jaGlsZE5vZGVzPUFycmF5LmlzQXJyYXkocik/ci5tYXAoZT0+bmV3IFNpbXBsZURPTU5vZGUoInZhbHVlIixlKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIscildOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3Qgcj1bXTthLmRvY3VtZW50RWxlbWVudC5kdW1wKHIpO3JldHVybiByLmpvaW4oIiIpfShyLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksYSl9Y29uc3QgaT1uZXcgU3RyaW5nU3RyZWFtKGUpO2kuZGljdD1uZXcgRGljdChyKTtpLmRpY3Quc2V0SWZOYW1lKCJUeXBlIiwiRW1iZWRkZWRGaWxlIik7YS5wdXQodCx7ZGF0YTppfSl9ZnVuY3Rpb24gZ2V0SW5kZXhlcyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdHtyZWY6YX1vZiBlKWEubnVtPT09dC5hdCgtMikrdC5hdCgtMSk/dFt0Lmxlbmd0aC0xXSs9MTp0LnB1c2goYS5udW0sMSk7cmV0dXJuIHR9ZnVuY3Rpb24gY29tcHV0ZUlEcyhlLHQsYSl7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IHI9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMykscj10LmZpbGVuYW1lfHwiIixpPVthLnRvU3RyaW5nKCkscixlLnRvU3RyaW5nKCksLi4udC5pbmZvTWFwLnZhbHVlcygpXSxuPU1hdGguc3VtUHJlY2lzZShpLm1hcChlPT5lLmxlbmd0aCkpLHM9bmV3IFVpbnQ4QXJyYXkobik7bGV0IG89MDtmb3IoY29uc3QgZSBvZiBpKW89d3JpdGVTdHJpbmcoZSxvLHMpO3JldHVybiBieXRlc1RvU3RyaW5nKGNhbGN1bGF0ZU1ENShzLDAscy5sZW5ndGgpKX0oZSx0KTthLnNldCgiSUQiLFt0LmZpbGVJZHNbMF18fHIscl0pfX1hc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmUseHJlZkluZm86dCxjaGFuZ2VzOmEseHJlZjpyPW51bGwsaGFzWGZhOmk9ITEseGZhRGF0YXNldHNSZWY6bj1udWxsLGhhc1hmYURhdGFzZXRzRW50cnk6cz0hMSxuZWVkQXBwZWFyYW5jZXM6byxhY3JvRm9ybVJlZjpjPW51bGwsYWNyb0Zvcm06bD1udWxsLHhmYURhdGE6aD1udWxsLHVzZVhyZWZTdHJlYW06dT0hMX0pe2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjcm9mb3JtKHt4cmVmOmUsYWNyb0Zvcm06dCxhY3JvRm9ybVJlZjphLGhhc1hmYTpyLGhhc1hmYURhdGFzZXRzRW50cnk6aSx4ZmFEYXRhc2V0c1JlZjpuLG5lZWRBcHBlYXJhbmNlczpzLGNoYW5nZXM6b30peyFyfHxpfHxufHx3YXJuKCJYRkEgLSBDYW5ub3Qgc2F2ZSBpdCIpO2lmKCFzJiYoIXJ8fCFufHxpKSlyZXR1cm47Y29uc3QgYz10LmNsb25lKCk7aWYociYmIWkpe2NvbnN0IGU9dC5nZXQoIlhGQSIpLnNsaWNlKCk7ZS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Uuc3BsaWNlKDMsMCxuKTtjLnNldCgiWEZBIixlKX1zJiZjLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7by5wdXQoYSx7ZGF0YTpjfSl9KHt4cmVmOnIsYWNyb0Zvcm06bCxhY3JvRm9ybVJlZjpjLGhhc1hmYTppLGhhc1hmYURhdGFzZXRzRW50cnk6cyx4ZmFEYXRhc2V0c1JlZjpuLG5lZWRBcHBlYXJhbmNlczpvLGNoYW5nZXM6YX0pO2kmJnVwZGF0ZVhGQSh7eGZhRGF0YTpoLHhmYURhdGFzZXRzUmVmOm4sY2hhbmdlczphLHhyZWY6cn0pO2NvbnN0IGQ9ZnVuY3Rpb24gZ2V0VHJhaWxlckRpY3QoZSx0LGEpe2NvbnN0IHI9bmV3IERpY3QobnVsbCk7ci5zZXRJZkRlZmluZWQoIlByZXYiLGU/LnN0YXJ0WFJlZik7Y29uc3QgaT1lLm5ld1JlZjtpZihhKXt0LnB1dChpLHtkYXRhOiIifSk7ci5zZXQoIlNpemUiLGkubnVtKzEpO3Iuc2V0SWZOYW1lKCJUeXBlIiwiWFJlZiIpfWVsc2Ugci5zZXQoIlNpemUiLGkubnVtKTtyLnNldElmRGVmaW5lZCgiUm9vdCIsZT8ucm9vdFJlZik7ci5zZXRJZkRlZmluZWQoIkluZm8iLGU/LmluZm9SZWYpO3Iuc2V0SWZEZWZpbmVkKCJFbmNyeXB0IixlPy5lbmNyeXB0UmVmKTtyZXR1cm4gcn0odCxhLHUpLGY9W10sZz1hd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZUNoYW5nZXMoZSx0LGE9W10pe2NvbnN0IHI9W107Zm9yKGNvbnN0W2kse2RhdGE6bixvYmpTdHJlYW1SZWY6cyxpbmRleDpvfV1vZiBlLml0ZW1zKCkpaWYocylyLnB1c2goe3JlZjppLGRhdGE6bixvYmpTdHJlYW1SZWY6cyxpbmRleDpvfSk7ZWxzZSBpZihudWxsIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXthd2FpdCB3cml0ZU9iamVjdChpLG4sYSx0KTtyLnB1c2goe3JlZjppLGRhdGE6YS5qb2luKCIiKX0pO2EubGVuZ3RoPTB9ZWxzZSByLnB1c2goe3JlZjppLGRhdGE6bn0pO3JldHVybiByLnNvcnQoKGUsdCk9PmUucmVmLm51bS10LnJlZi5udW0pfShhLHIsZik7bGV0IHA9ZS5sZW5ndGg7Y29uc3QgbT1lLmF0KC0xKTtpZigxMCE9PW0mJjEzIT09bSl7Zi5wdXNoKCJcbiIpO3ArPTF9Zm9yKGNvbnN0e2RhdGE6ZX1vZiBnKW51bGwhPT1lJiZmLnB1c2goZSk7YXdhaXQodT9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGEscixpKXtjb25zdCBuPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOnIsb2JqU3RyZWFtUmVmOmksaW5kZXg6Y31vZiBhKXtsZXQgYTtzPU1hdGgubWF4KHMsdCk7aWYoaSl7YT1jO24ucHVzaChbMixpLm51bSxhXSl9ZWxzZSBpZihudWxsIT09cil7YT1NYXRoLm1pbihlLmdlbiw2NTUzNSk7bi5wdXNoKFsxLHQsYV0pO3QrPXIubGVuZ3RofWVsc2V7YT1NYXRoLm1pbihlLmdlbisxLDY1NTM1KTtuLnB1c2goWzAsMCxhXSl9bz1NYXRoLm1heChvLGEpfXIuc2V0KCJJbmRleCIsZ2V0SW5kZXhlcyhhKSk7Y29uc3QgYz1bMSxnZXRTaXplSW5CeXRlcyhzKSxnZXRTaXplSW5CeXRlcyhvKV07ci5zZXQoIlciLGMpO2NvbXB1dGVJRHModCxlLHIpO2NvbnN0IGw9TWF0aC5zdW1QcmVjaXNlKGMpLGg9bmV3IFVpbnQ4QXJyYXkobCpuLmxlbmd0aCksdT1uZXcgU3RyZWFtKGgpO3UuZGljdD1yO2xldCBkPTA7Zm9yKGNvbnN0W2UsdCxhXW9mIG4pe2Q9d3JpdGVJbnQoZSxjWzBdLGQsaCk7ZD13cml0ZUludCh0LGNbMV0sZCxoKTtkPXdyaXRlSW50KGEsY1syXSxkLGgpfWF3YWl0IHdyaXRlT2JqZWN0KGUubmV3UmVmLHUsaSx7fSk7aS5wdXNoKCJzdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxwLGcsZCxmKTphc3luYyBmdW5jdGlvbiBnZXRYUmVmVGFibGUoZSx0LGEscixpKXtpLnB1c2goInhyZWZcbiIpO2NvbnN0IG49Z2V0SW5kZXhlcyhhKTtsZXQgcz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOnJ9b2YgYSl7aWYoZS5udW09PT1uW3NdKXtpLnB1c2goYCR7bltzXX0gJHtuW3MrMV19XG5gKTtzKz0yfWlmKG51bGwhPT1yKXtpLnB1c2goYCR7dC50b1N0cmluZygpLnBhZFN0YXJ0KDEwLCIwIil9ICR7TWF0aC5taW4oZS5nZW4sNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBuXHJcbmApO3QrPXIubGVuZ3RofWVsc2UgaS5wdXNoKGAwMDAwMDAwMDAwICR7TWF0aC5taW4oZS5nZW4rMSw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IGZcclxuYCl9Y29tcHV0ZUlEcyh0LGUscik7aS5wdXNoKCJ0cmFpbGVyXG4iKTthd2FpdCB3cml0ZURpY3QocixpLG51bGwpO2kucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxwLGcsZCxmKSk7Y29uc3QgYj1lLmxlbmd0aCtNYXRoLnN1bVByZWNpc2UoZi5tYXAoZT0+ZS5sZW5ndGgpKSx5PW5ldyBVaW50OEFycmF5KGIpO3kuc2V0KGUpO2xldCB3PWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIGYpdz13cml0ZVN0cmluZyhlLHcseSk7cmV0dXJuIHl9Y2xhc3MgUGFnZURhdGF7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBhZ2U9ZTt0aGlzLmRvY3VtZW50RGF0YT10O3RoaXMuYW5ub3RhdGlvbnM9bnVsbDt0aGlzLnBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnM9bnVsbDt0LnBhZ2VzTWFwLnB1dChlLnJlZix0aGlzKX19Y2xhc3MgRG9jdW1lbnREYXRhe2NvbnN0cnVjdG9yKGUpe3RoaXMuZG9jdW1lbnQ9ZTt0aGlzLmRlc3RpbmF0aW9ucz1udWxsO3RoaXMucGFnZUxhYmVscz1udWxsO3RoaXMucGFnZXNNYXA9bmV3IFJlZlNldENhY2hlO3RoaXMub2xkUmVmTWFwcGluZz1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5kZWR1cE5hbWVkRGVzdGluYXRpb25zPW5ldyBNYXA7dGhpcy51c2VkTmFtZWREZXN0aW5hdGlvbnM9bmV3IFNldDt0aGlzLnBvc3Rwb25lZFJlZkNvcGllcz1uZXcgUmVmU2V0Q2FjaGU7dGhpcy51c2VkU3RydWN0UGFyZW50cz1uZXcgU2V0O3RoaXMub2xkU3RydWN0UGFyZW50TWFwcGluZz1uZXcgTWFwO3RoaXMuc3RydWN0VHJlZVJvb3Q9bnVsbDt0aGlzLnBhcmVudFRyZWU9bnVsbDt0aGlzLmlkVHJlZT1udWxsO3RoaXMucm9sZU1hcD1udWxsO3RoaXMuY2xhc3NNYXA9bnVsbDt0aGlzLm5hbWVzcGFjZXM9bnVsbDt0aGlzLnN0cnVjdFRyZWVBRj1udWxsO3RoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uPVtdfX1jbGFzcyBYUmVmV3JhcHBlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmVudHJpZXM9ZX1mZXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmVudHJpZXNbZS5udW1dOmV9fWNsYXNzIFBERkVkaXRvcntjb25zdHJ1Y3Rvcih7dXNlT2JqZWN0U3RyZWFtczplPSEwLHRpdGxlOnQ9IiIsYXV0aG9yOmE9IiJ9PXt9KXt0aGlzLmhhc1NpbmdsZUZpbGU9ITE7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbDt0aGlzLm9sZFBhZ2VzPVtdO3RoaXMubmV3UGFnZXM9W107dGhpcy54cmVmPVtudWxsXTt0aGlzLnhyZWZXcmFwcGVyPW5ldyBYUmVmV3JhcHBlcih0aGlzLnhyZWYpO3RoaXMubmV3UmVmQ291bnQ9MTtbdGhpcy5yb290UmVmLHRoaXMucm9vdERpY3RdPXRoaXMubmV3RGljdDtbdGhpcy5pbmZvUmVmLHRoaXMuaW5mb0RpY3RdPXRoaXMubmV3RGljdDtbdGhpcy5wYWdlc1JlZix0aGlzLnBhZ2VzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMubmFtZXNEaWN0PW51bGw7dGhpcy51c2VPYmplY3RTdHJlYW1zPWU7dGhpcy5vYmpTdHJlYW1SZWZzPWU/bmV3IFNldDpudWxsO3RoaXMudmVyc2lvbj0iMS43Ijt0aGlzLnRpdGxlPXQ7dGhpcy5hdXRob3I9YTt0aGlzLnBhZ2VMYWJlbHM9bnVsbDt0aGlzLm5hbWVkRGVzdGluYXRpb25zPW5ldyBNYXA7dGhpcy5wYXJlbnRUcmVlPW5ldyBNYXA7dGhpcy5zdHJ1Y3RUcmVlS2lkcz1bXTt0aGlzLmlkVHJlZT1uZXcgTWFwO3RoaXMuY2xhc3NNYXA9bmV3IERpY3Q7dGhpcy5yb2xlTWFwPW5ldyBEaWN0O3RoaXMubmFtZXNwYWNlcz1uZXcgTWFwO3RoaXMuc3RydWN0VHJlZUFGPVtdO3RoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uPVtdfWdldCBuZXdSZWYoKXtyZXR1cm4gUmVmLmdldCh0aGlzLm5ld1JlZkNvdW50KyssMCl9Z2V0IG5ld0RpY3QoKXtjb25zdCBlPXRoaXMubmV3UmVmO3JldHVybltlLHRoaXMueHJlZltlLm51bV09bmV3IERpY3RdfWFzeW5jI1N0KGUsdCl7Y29uc3QgYT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbYS5udW1dPWF3YWl0IHRoaXMuI0F0KGUsITAsdCk7cmV0dXJuIGF9Y2xvbmVEaWN0KGUpe2NvbnN0IHQ9ZS5jbG9uZSgpO3QueHJlZj10aGlzLnhyZWZXcmFwcGVyO3JldHVybiB0fWFzeW5jI0F0KGUsdCxhKXtpZihlIGluc3RhbmNlb2YgUmVmKXtjb25zdHtjdXJyZW50RG9jdW1lbnQ6e29sZFJlZk1hcHBpbmc6dH19PXRoaXM7bGV0IHI9dC5nZXQoZSk7aWYocilyZXR1cm4gcjtjb25zdCBpPWU7aWYoIm51bWJlciI9PXR5cGVvZihlPWF3YWl0IGEuZmV0Y2hBc3luYyhpKSkpcmV0dXJuIGU7cj10aGlzLm5ld1JlZjt0LnB1dChpLHIpO3RoaXMueHJlZltyLm51bV09YXdhaXQgdGhpcy4jQXQoZSwhMCxhKTtyZXR1cm4gcn1jb25zdCByPVtdLHtjdXJyZW50RG9jdW1lbnQ6e3Bvc3Rwb25lZFJlZkNvcGllczppfX09dGhpcztpZihBcnJheS5pc0FycmF5KGUpKXt0JiYoZT1lLnNsaWNlKCkpO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1pLmdldChlW3RdKTtuP24ucHVzaChhPT5lW3RdPWEpOnIucHVzaCh0aGlzLiNBdChlW3RdLCEwLGEpLnRoZW4oYT0+ZVt0XT1hKSl9YXdhaXQgUHJvbWlzZS5hbGwocik7cmV0dXJuIGV9bGV0IG47aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0peyh7ZGljdDpufT1lPWUuZ2V0T3JpZ2luYWxTdHJlYW0oKS5jbG9uZSgpKTtuLnhyZWY9dGhpcy54cmVmV3JhcHBlcn1lbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KXt0JiYoKGU9ZS5jbG9uZSgpKS54cmVmPXRoaXMueHJlZldyYXBwZXIpO249ZX1pZihuKXtmb3IoY29uc3RbZSx0XW9mIG4uZ2V0UmF3RW50cmllcygpKXtjb25zdCBzPWkuZ2V0KHQpO3M/cy5wdXNoKHQ9Pm4uc2V0KGUsdCkpOnIucHVzaCh0aGlzLiNBdCh0LCEwLGEpLnRoZW4odD0+bi5zZXQoZSx0KSkpfWF3YWl0IFByb21pc2UuYWxsKHIpfXJldHVybiBlfWFzeW5jI2t0KGUsdCxhLHIsaSxuLHMsbz1uZXcgUmVmU2V0KXtjb25zdHtjdXJyZW50RG9jdW1lbnQ6e3BhZ2VzTWFwOmMsb2xkUmVmTWFwcGluZzpsfX09dGhpcyxoPXQuZ2V0UmF3KCJQZyIpO2lmKGggaW5zdGFuY2VvZiBSZWYmJiFjLmhhcyhoKSlyZXR1cm4gbnVsbDtsZXQgdTtjb25zdCBkPXU9dC5nZXRSYXcoIksiKTtpZihkIGluc3RhbmNlb2YgUmVmKXtpZihvLmhhcyhkKSlyZXR1cm4gbnVsbDt1PWF3YWl0IGEuZmV0Y2hBc3luYyhkKTtBcnJheS5pc0FycmF5KHUpfHwodT1bZF0pfXU9QXJyYXkuaXNBcnJheSh1KT91Olt1XTtjb25zdCBmPVtdLGc9W107Zm9yKGxldCB0IG9mIHUpe2NvbnN0IGg9dCBpbnN0YW5jZW9mIFJlZj90Om51bGw7aWYoaCl7aWYoby5oYXMoaCkpY29udGludWU7by5wdXQoaCk7dD1hd2FpdCBhLmZldGNoQXN5bmMoaCl9aWYoIm51bWJlciI9PXR5cGVvZiB0KXtmLnB1c2godCk7Y29udGludWV9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgdT10LmdldFJhdygiUGciKTtpZih1IGluc3RhbmNlb2YgUmVmJiYhYy5oYXModSkpY29udGludWU7Y29uc3QgZD10LmdldCgiVHlwZSIpO2lmKCFkfHxpc05hbWUoZCwiU3RydWN0RWxlbSIpKXtsZXQgZT0hMTtpZihoJiZyLmhhcyhoKSl7aWYoIWlzTmFtZSh0LmdldCgiUyIpLCJMaW5rIikpY29udGludWU7ZT0hMH1jb25zdCBjPWF3YWl0IHRoaXMuI2t0KGgsdCxhLHIsaSxuLHMsbyk7aWYoYyl7Zy5wdXNoKGYubGVuZ3RoKTtmLnB1c2goYyk7aCYmbC5wdXQoaCxjKTtlJiZ0aGlzLnhyZWZbYy5udW1dLnNldElmTmFtZSgiUyIsIlNwYW4iKX1jb250aW51ZX1pZihpc05hbWUoZCwiT0JKUiIpKXtpZighaCljb250aW51ZTtjb25zdCB0PWwuZ2V0KGgpO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy54cmVmW3QubnVtXS5nZXRSYXcoIk9iaiIpO2lmKGEgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9dGhpcy54cmVmW2EubnVtXTtpZih0IGluc3RhbmNlb2YgRGljdCYmIXQuaGFzKCJTdHJ1Y3RQYXJlbnQiKSYmZSl7Y29uc3QgYT10aGlzLnBhcmVudFRyZWUuc2l6ZTt0aGlzLnBhcmVudFRyZWUuc2V0KGEsW2wsZV0pO3Quc2V0KCJTdHJ1Y3RQYXJlbnQiLGEpfX1mLnB1c2godCk7Y29udGludWV9aWYoaXNOYW1lKGQsIk1DUiIpKXtjb25zdCBlPWF3YWl0IHRoaXMuI0F0KGh8fHQsITAsYSk7Zi5wdXNoKGUpO2NvbnRpbnVlfWlmKGgpe2NvbnN0IGU9YXdhaXQgdGhpcy4jQXQoaCwhMCxhKTtmLnB1c2goZSl9fWlmKDAhPT11Lmxlbmd0aCYmMD09PWYubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHA9dGhpcy5uZXdSZWYsbT10aGlzLnhyZWZbcC5udW1dPXRoaXMuY2xvbmVEaWN0KHQpO20uZGVsZXRlKCJJRCIpO20uZGVsZXRlKCJDIik7bS5kZWxldGUoIksiKTttLmRlbGV0ZSgiUCIpO20uZGVsZXRlKCJTIik7YXdhaXQgdGhpcy4jQXQobSwhMSxhKTtjb25zdCBiPXQuZ2V0KCJDIik7aWYoYiBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9bi5nZXQoYi5uYW1lKTtlP20uc2V0KCJDIixOYW1lLmdldChlKSk6bS5zZXQoIkMiLGIpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShiKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBiKWlmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBhPW4uZ2V0KHQubmFtZSk7YT9lLnB1c2goTmFtZS5nZXQoYSkpOmUucHVzaCh0KX1tLnNldCgiQyIsZSl9Y29uc3QgeT10LmdldCgiUyIpO2lmKHkgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXMuZ2V0KHkubmFtZSk7ZT9tLnNldCgiUyIsTmFtZS5nZXQoZSkpOm0uc2V0KCJTIix5KX1jb25zdCB3PXQuZ2V0KCJJRCIpO2lmKCJzdHJpbmciPT10eXBlb2Ygdyl7Y29uc3QgZT1zdHJpbmdUb1BERlN0cmluZyh3LCExKSx0PWkuZ2V0KGUpO3Q/bS5zZXQoIklEIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHQpKTptLnNldCgiSUQiLHcpfWxldCB4PW0uZ2V0KCJBIik7aWYoeCl7QXJyYXkuaXNBcnJheSh4KXx8KHg9W3hdKTtmb3IobGV0IGUgb2YgeCl7ZT10aGlzLnhyZWZXcmFwcGVyLmZldGNoKGUpO2lmKGlzTmFtZShlLmdldCgiTyIpLCJUYWJsZSIpJiZlLmhhcygiSGVhZGVycyIpKXtjb25zdCB0PXRoaXMueHJlZldyYXBwZXIuZmV0Y2goZS5nZXRSYXcoIkhlYWRlcnMiKSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9aS5nZXQoc3RyaW5nVG9QREZTdHJpbmcodFtlXSwhMSkpO2EmJih0W2VdPWEpfX19fWZvcihjb25zdCBlIG9mIGcpe2NvbnN0IHQ9ZltlXTt0aGlzLnhyZWZbdC5udW1dLnNldCgiUCIscCl9MT09PWYubGVuZ3RoP20uc2V0KCJLIixmWzBdKTpmLmxlbmd0aD4xJiZtLnNldCgiSyIsZik7cmV0dXJuIHB9YXN5bmMgZXh0cmFjdFBhZ2VzKGUpe2NvbnN0IHQ9W107bGV0IGE9MDt0aGlzLmhhc1NpbmdsZUZpbGU9MT09PWUubGVuZ3RoO2NvbnN0IHI9W107Zm9yKGNvbnN0e2RvY3VtZW50OmksaW5jbHVkZVBhZ2VzOm4sZXhjbHVkZVBhZ2VzOnN9b2YgZSl7aWYoIWkpY29udGludWU7Y29uc3QgZT1uZXcgRG9jdW1lbnREYXRhKGkpO3IucHVzaChlKTt0LnB1c2godGhpcy4jQ3QoZSkpO2xldCBvLGMsbCxoO2Zvcihjb25zdCBlIG9mIG58fFtdKUFycmF5LmlzQXJyYXkoZSk/KGN8fD1bXSkucHVzaChlKToob3x8PW5ldyBTZXQpLmFkZChlKTtmb3IoY29uc3QgZSBvZiBzfHxbXSlBcnJheS5pc0FycmF5KGUpPyhofHw9W10pLnB1c2goZSk6KGx8fD1uZXcgU2V0KS5hZGQoZSk7Zm9yKGxldCByPTAsbj1pLm51bVBhZ2VzO3I8bjtyKyspe2lmKGw/LmhhcyhyKSljb250aW51ZTtpZihoKXtsZXQgZT0hMTtmb3IoY29uc3RbdCxhXW9mIGgpaWYocj49dCYmcjw9YSl7ZT0hMDticmVha31pZihlKWNvbnRpbnVlfWxldCBuPSExO28mJihuPW8uaGFzKHIpKTtpZighbiYmYylmb3IoY29uc3RbZSx0XW9mIGMpaWYocj49ZSYmcjw9dCl7bj0hMDticmVha31ufHxvfHxjfHwobj0hMCk7aWYoIW4pY29udGludWU7Y29uc3Qgcz1hKys7dC5wdXNoKGkuZ2V0UGFnZShyKS50aGVuKHQ9Pnt0aGlzLm9sZFBhZ2VzW3NdPW5ldyBQYWdlRGF0YSh0LGUpfSkpfX1hd2FpdCBQcm9taXNlLmFsbCh0KTt0Lmxlbmd0aD0wO3RoaXMuI3Z0KHIpO3RoaXMuI0Z0KCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5vbGRQYWdlcyl0LnB1c2godGhpcy4jSXQoZSkpO2F3YWl0IFByb21pc2UuYWxsKHQpO3RoaXMuI1R0KCk7dGhpcy4jT3Qocik7Zm9yKGxldCBlPTAsdD10aGlzLm9sZFBhZ2VzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMubmV3UGFnZXNbZV09YXdhaXQgdGhpcy4jRHQoZSxudWxsKTt0aGlzLiNNdChyKTthd2FpdCB0aGlzLiNSdChyKTtyZXR1cm4gdGhpcy53cml0ZVBERigpfWFzeW5jI0N0KGUpe2NvbnN0e2RvY3VtZW50OntwZGZNYW5hZ2VyOnQseHJlZjphfX09ZTthd2FpdCBQcm9taXNlLmFsbChbdC5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKS50aGVuKHQ9PmUuZGVzdGluYXRpb25zPXQpLHQuZW5zdXJlQ2F0YWxvZygicmF3UGFnZUxhYmVscyIpLnRoZW4odD0+ZS5wYWdlTGFiZWxzPXQpLHQuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKS50aGVuKHQ9PmUuc3RydWN0VHJlZVJvb3Q9dCldKTtjb25zdCByPWUuc3RydWN0VHJlZVJvb3Q7aWYocil7Y29uc3QgdD1yLmRpY3QsaT10LmdldCgiUGFyZW50VHJlZSIpO2lmKGkpe2NvbnN0IHQ9bmV3IE51bWJlclRyZWUoaSxhKTtlLnBhcmVudFRyZWU9dC5nZXRBbGwoITApfWNvbnN0IG49dC5nZXQoIklEVHJlZSIpO2lmKG4pe2NvbnN0IHQ9bmV3IE5hbWVUcmVlKG4sYSk7ZS5pZFRyZWU9dC5nZXRBbGwoITApfWUucm9sZU1hcD10LmdldCgiUm9sZU1hcCIpfHxudWxsO2UuY2xhc3NNYXA9dC5nZXQoIkNsYXNzTWFwIil8fG51bGw7bGV0IHM9dC5nZXQoIk5hbWVzcGFjZXMiKXx8bnVsbDtzJiYhQXJyYXkuaXNBcnJheShzKSYmKHM9W3NdKTtlLm5hbWVzcGFjZXM9cztlLnN0cnVjdFRyZWVBRj10LmdldCgiQUYiKXx8bnVsbDtlLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj10LmdldCgiUHJvbnVuY2lhdGlvbkxleGljb24iKXx8bnVsbH19YXN5bmMjSXQoZSl7Y29uc3R7cGFnZTp7eHJlZjp0LGFubm90YXRpb25zOmF9LGRvY3VtZW50RGF0YTp7cGFnZXNNYXA6cixkZXN0aW5hdGlvbnM6aSx1c2VkTmFtZWREZXN0aW5hdGlvbnM6bn19PWU7aWYoIWEpcmV0dXJuO2NvbnN0IHM9W107bGV0IG89W10sYz0wO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IGE9YysrO3MucHVzaCh0LmZldGNoSWZSZWZBc3luYyhlKS50aGVuKGFzeW5jIHQ9PntpZighaXNOYW1lKHQuZ2V0KCJTdWJ0eXBlIiksIkxpbmsiKSl7b1thXT1lO3JldHVybn1jb25zdCBzPXQuZ2V0KCJBIiksYz1zIGluc3RhbmNlb2YgRGljdD9zLmdldCgiRCIpOnQuZ2V0KCJEZXN0Iik7aWYoYyYmKCFBcnJheS5pc0FycmF5KGMpfHxjWzBdaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhjWzBdKSkpe2lmKCJzdHJpbmciPT10eXBlb2YgYyl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhjLCEwKTtpZihpLmhhcyh0KSl7b1thXT1lO24uYWRkKHQpfX19ZWxzZSBvW2FdPWV9KSl9YXdhaXQgUHJvbWlzZS5hbGwocyk7bz1vLmZpbHRlcihlPT4hIWUpO2UuYW5ub3RhdGlvbnM9by5sZW5ndGg+MD9vOm51bGx9I090KGUpe2Zvcihjb25zdHtwb3N0cG9uZWRSZWZDb3BpZXM6dCxwYWdlc01hcDphfW9mIGUpZm9yKGNvbnN0IGUgb2YgYS5rZXlzKCkpdC5wdXQoZSxbXSl9I010KGUpe2Zvcihjb25zdHtwb3N0cG9uZWRSZWZDb3BpZXM6dCxvbGRSZWZNYXBwaW5nOmF9b2YgZSl7Zm9yKGNvbnN0W2Uscl1vZiB0Lml0ZW1zKCkpe2NvbnN0IHQ9YS5nZXQoZSk7Zm9yKGNvbnN0IGUgb2YgcillKHQpfXQuY2xlYXIoKX19I0J0KGUsdCxhPW5ldyBSZWZTZXQpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKCFhLmhhcyhlKSl7YS5wdXQoZSk7dGhpcy4jQnQodGhpcy54cmVmW2UubnVtXSx0LGEpfXJldHVybn1pZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgciBvZiBlKXRoaXMuI0J0KHIsdCxhKTtyZXR1cm59bGV0IHI7ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/KHtkaWN0OnJ9PWUpOmUgaW5zdGFuY2VvZiBEaWN0JiYocj1lKTtpZihyKXt0KHIpO2Zvcihjb25zdCBlIG9mIHIuZ2V0UmF3VmFsdWVzKCkpdGhpcy4jQnQoZSx0LGEpfX1hc3luYyNSdChlKXtsZXQgdD0wO2NvbnN0e3BhcmVudFRyZWU6YX09dGhpcztmb3IobGV0IGU9MCxyPXRoaXMubmV3UGFnZXMubGVuZ3RoO2U8cjtlKyspe2NvbnN0e2RvY3VtZW50RGF0YTp7cGFyZW50VHJlZTpyLG9sZFJlZk1hcHBpbmc6aSxvbGRTdHJ1Y3RQYXJlbnRNYXBwaW5nOm4sdXNlZFN0cnVjdFBhcmVudHM6cyxkb2N1bWVudDp7eHJlZjpvfX19PXRoaXMub2xkUGFnZXNbZV07aWYoIXIpY29udGludWU7Y29uc3QgYz10aGlzLm5ld1BhZ2VzW2VdLGw9dGhpcy54cmVmW2MubnVtXTt0aGlzLiNCdChsLGU9Pntjb25zdCBjPWUuZ2V0KCJTdHJ1Y3RQYXJlbnQiKT8/ZS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZigibnVtYmVyIiE9dHlwZW9mIGMpcmV0dXJuO3MuYWRkKGMpO2xldCBsPXIuZ2V0KGMpO2NvbnN0IGg9bCBpbnN0YW5jZW9mIFJlZj9sOm51bGw7aWYoaCl7Y29uc3QgZT1vLmZldGNoKGgpO0FycmF5LmlzQXJyYXkoZSkmJihsPWUpfUFycmF5LmlzQXJyYXkobCkmJmwuZXZlcnkoZT0+bnVsbD09PWUpJiYobD1udWxsKTtpZighbCl7ZS5oYXMoIlN0cnVjdFBhcmVudCIpP2UuZGVsZXRlKCJTdHJ1Y3RQYXJlbnQiKTplLmRlbGV0ZSgiU3RydWN0UGFyZW50cyIpO3JldHVybn1sZXQgdT1uLmdldChjKTtpZih2b2lkIDA9PT11KXt1PXQrKztuLnNldChjLHUpO2Euc2V0KHUsW2ksbF0pfWUuaGFzKCJTdHJ1Y3RQYXJlbnQiKT9lLnNldCgiU3RydWN0UGFyZW50Iix1KTplLnNldCgiU3RydWN0UGFyZW50cyIsdSl9KX1jb25zdHtzdHJ1Y3RUcmVlS2lkczpyLGlkVHJlZTppLGNsYXNzTWFwOm4scm9sZU1hcDpzLG5hbWVzcGFjZXM6byxzdHJ1Y3RUcmVlQUY6YyxzdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb246bH09dGhpcztmb3IoY29uc3QgdCBvZiBlKXtjb25zdHtkb2N1bWVudDp7eHJlZjplfSxvbGRSZWZNYXBwaW5nOmEscGFyZW50VHJlZTpoLHVzZWRTdHJ1Y3RQYXJlbnRzOnUsc3RydWN0VHJlZVJvb3Q6ZCxpZFRyZWU6ZixjbGFzc01hcDpnLHJvbGVNYXA6cCxuYW1lc3BhY2VzOm0sc3RydWN0VHJlZUFGOmIsc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uOnl9PXQ7aWYoIWQpY29udGludWU7dGhpcy5jdXJyZW50RG9jdW1lbnQ9dDtjb25zdCB3PW5ldyBSZWZTZXQ7Zm9yKGNvbnN0W2UsdF1vZiBofHxbXSkhdS5oYXMoZSkmJnQgaW5zdGFuY2VvZiBSZWYmJncucHV0KHQpO2NvbnN0IHg9bmV3IE1hcDtmb3IoY29uc3RbZSx0XW9mIGZ8fFtdKXtsZXQgYT1lO2lmKGkuaGFzKGUpKWZvcihsZXQgdD0xOzt0Kyspe2NvbnN0IHI9YCR7ZX1fJHt0fWA7aWYoIWkuaGFzKHIpKXt4LnNldChlLHIpO2E9cjticmVha319aS5zZXQoYSx0KX1jb25zdCBTPW5ldyBNYXA7aWYoZz8uc2l6ZT4wKWZvcihsZXRbdCxhXW9mIGcpe2E9YXdhaXQgdGhpcy4jQXQoYSwhMCxlKTtpZihuLmhhcyh0KSlmb3IobGV0IGU9MTs7ZSsrKXtjb25zdCBhPWAke3R9XyR7ZX1gO2lmKCFuLmhhcyhhKSl7Uy5zZXQodCxhKTt0PWE7YnJlYWt9fW4uc2V0KHQsYSl9Y29uc3Qgaz1uZXcgTWFwO2lmKHA/LnNpemU+MClmb3IoY29uc3RbZSx0XW9mIHApe2NvbnN0IGE9cy5nZXQoZSk7aWYoYSl7aWYoYSE9PXQpZm9yKGxldCBhPTE7O2ErKyl7Y29uc3Qgcj1gJHtlfV8ke2F9YDtpZighcy5oYXMocikpe2suc2V0KGUscik7cy5zZXQocix0KTticmVha319fWVsc2Ugcy5zZXQoZSx0KX1pZihtPy5sZW5ndGg+MClmb3IoY29uc3QgdCBvZiBtKXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2xldCByPWEuZ2V0KCJOUyIpO2lmKCFyfHxvLmhhcyhyKSljb250aW51ZTtyPXN0cmluZ1RvUERGU3RyaW5nKHIsITEpO2NvbnN0IGk9YXdhaXQgdGhpcy4jQXQoYSwhMCxlKTtvLnNldChyLGkpfWlmKGIpZm9yKGNvbnN0IHQgb2YgYiljLnB1c2goYXdhaXQgdGhpcy4jQXQodCwhMCxlKSk7aWYoeSlmb3IoY29uc3QgdCBvZiB5KWwucHVzaChhd2FpdCB0aGlzLiNBdCh0LCEwLGUpKTtsZXQgQz1kLmRpY3QuZ2V0KCJLIik7aWYoQyl7Qz1BcnJheS5pc0FycmF5KEMpP0M6W0NdO2ZvcihsZXQgdCBvZiBDKXtjb25zdCBhPXQgaW5zdGFuY2VvZiBSZWY/dDpudWxsO2lmKGEmJncuaGFzKGEpKWNvbnRpbnVlO3Q9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7Y29uc3QgaT1hd2FpdCB0aGlzLiNrdChhLHQsZSx3LHgsUyxrKTtpJiZyLnB1c2goaSl9Zm9yKGNvbnN0W2UsdF1vZiBmfHxbXSl7Y29uc3Qgcj1hLmdldCh0KSxuPXguZ2V0KGUpfHxlO3I/aS5zZXQobixyKTppLmRlbGV0ZShuKX19fWZvcihjb25zdFtlLFt0LHJdXW9mIGEpe2lmKCFyKXthLmRlbGV0ZShlKTtjb250aW51ZX1pZighQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT10LmdldChyKTt2b2lkIDA9PT1pP2EuZGVsZXRlKGUpOmEuc2V0KGUsaSk7Y29udGludWV9Y29uc3QgaT1yLm1hcChlPT5lIGluc3RhbmNlb2YgUmVmJiZ0LmdldChlKXx8bnVsbCk7MD09PWkubGVuZ3RofHxpLmV2ZXJ5KGU9Pm51bGw9PT1lKT9hLmRlbGV0ZShlKTphLnNldChlLGkpfXRoaXMuY3VycmVudERvY3VtZW50PW51bGx9I3Z0KGUpe2Zvcihjb25zdCB0IG9mIGUpe2lmKCF0LmRlc3RpbmF0aW9ucyljb250aW51ZTtjb25zdHtkZXN0aW5hdGlvbnM6ZSxwYWdlc01hcDphfT10LHI9dC5kZXN0aW5hdGlvbnM9bmV3IE1hcDtmb3IoY29uc3RbdCxpXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtjb25zdCBlPWlbMF0sbj1hLmdldChlKTtpZihuKXsobi5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zfHw9bmV3IFNldCkuYWRkKHQpO3Iuc2V0KHQsaSl9fX19I1R0KCl7Y29uc3R7bmFtZWREZXN0aW5hdGlvbnM6ZX09dGhpcztmb3IobGV0IHQ9MCxhPXRoaXMub2xkUGFnZXMubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9dGhpcy5vbGRQYWdlc1t0XSx7ZG9jdW1lbnREYXRhOntkZXN0aW5hdGlvbnM6cixkZWR1cE5hbWVkRGVzdGluYXRpb25zOmksdXNlZE5hbWVkRGVzdGluYXRpb25zOm59fT1hO2xldHtwb2ludGluZ05hbWVkRGVzdGluYXRpb25zOnN9PWE7aWYocyl7YS5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zPXM9cy5pbnRlcnNlY3Rpb24obik7Zm9yKGNvbnN0IGEgb2Ygcyl7aWYoIW4uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHM9ci5nZXQoYSkuc2xpY2UoKTtpZighZS5oYXMoYSkpe2Uuc2V0KGEscyk7Y29udGludWV9Y29uc3Qgbz1gJHthfV9wJHt0KzF9YDtpLnNldChhLG8pO2Uuc2V0KG8scyl9fX19I050KGUsdCl7aWYoMD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgZml4RGVzdGluYXRpb249KGUsYSxyKT0+eyJzdHJpbmciPT10eXBlb2YgciYmZS5zZXQoYSx0LmdldChzdHJpbmdUb1BERlN0cmluZyhyLCEwKSl8fHIpfTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRoaXMueHJlZlt0Lm51bV07aWYoIWlzTmFtZShlLmdldCgiU3VidHlwZSIpLCJMaW5rIikpY29udGludWU7Y29uc3QgYT1lLmdldCgiQSIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcygiRCIpKXtjb25zdCBlPWEuZ2V0KCJEIik7Zml4RGVzdGluYXRpb24oYSwiRCIsZSk7Y29udGludWV9Y29uc3Qgcj1lLmdldCgiRGVzdCIpO2ZpeERlc3RpbmF0aW9uKGUsIkRlc3QiLHIpfX1hc3luYyNGdCgpe2lmKCF0aGlzLmhhc1NpbmdsZUZpbGUpcmV0dXJuO2NvbnN0e2RvY3VtZW50RGF0YTp7ZG9jdW1lbnQ6ZSxwYWdlTGFiZWxzOnR9fT10aGlzLm9sZFBhZ2VzWzBdO2lmKCF0KXJldHVybjtjb25zdCBhPWUubnVtUGFnZXMscj1bXSxpPW5ldyBTZXQodGhpcy5vbGRQYWdlcy5tYXAoKHtwYWdlOntwYWdlSW5kZXg6ZX19KT0+ZSkpO2xldCBuPW51bGwscz0tMTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBhPXQuZ2V0KGUpO2lmKGEpe249YTtzPW4uaGFzKCJTdCIpP2U6LTF9aWYoaS5oYXMoZSkpe2lmKC0xIT09cyl7Y29uc3QgdD1uLmdldCgiU3QiKTtuPXRoaXMuY2xvbmVEaWN0KG4pO24uc2V0KCJTdCIsdCsoZS1zKSk7cz0tMX1yLnB1c2gobil9fW49clswXTtsZXQgbz0wO2NvbnN0IGM9dGhpcy5wYWdlTGFiZWxzPVtbMCxuXV07Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXJbZV07aWYodCE9PW4pe289ZTtuPXQ7Yy5wdXNoKFtvLG5dKX19fWFzeW5jI0R0KGUpe2NvbnN0e3BhZ2U6dCxkb2N1bWVudERhdGE6YSxhbm5vdGF0aW9uczpyLHBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnM6aX09dGhpcy5vbGRQYWdlc1tlXTt0aGlzLmN1cnJlbnREb2N1bWVudD1hO2NvbnN0e2RlZHVwTmFtZWREZXN0aW5hdGlvbnM6bixvbGRSZWZNYXBwaW5nOnN9PWEse3hyZWY6byxyb3RhdGU6YyxtZWRpYUJveDpsLHJlc291cmNlczpoLHJlZjp1fT10LGQ9dGhpcy5uZXdSZWYsZj10aGlzLnhyZWZbZC5udW1dPXRoaXMuY2xvbmVEaWN0KHQucGFnZURpY3QpO3MucHV0KHUsZCk7aWYoaSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW4uZ2V0KGUpfHxlO3RoaXMubmFtZWREZXN0aW5hdGlvbnMuZ2V0KHQpWzBdPWR9Zm9yKGNvbnN0IGUgb2ZbIlJvdGF0ZSIsIk1lZGlhQm94IiwiQ3JvcEJveCIsIkJsZWVkQm94IiwiVHJpbUJveCIsIkFydEJveCIsIlJlc291cmNlcyIsIkFubm90cyIsIlBhcmVudCIsIlVzZXJVbml0Il0pZi5kZWxldGUoZSk7Y29uc3QgZz10aGlzLm5ld1JlZkNvdW50O2F3YWl0IHRoaXMuI0F0KGYsITEsbyk7Zi5zZXQoIlJvdGF0ZSIsYyk7Zi5zZXQoIk1lZGlhQm94IixsKTtmb3IoY29uc3QgZSBvZlsiQ3JvcEJveCIsIkJsZWVkQm94IiwiVHJpbUJveCIsIkFydEJveCJdKXtjb25zdCBhPXQuZ2V0Qm91bmRpbmdCb3goZSk7YT8uc29tZSgoZSx0KT0+ZSE9PWxbdF0pJiZmLnNldChlLGEpfWNvbnN0IHA9dC51c2VyVW5pdDsxIT09cCYmZi5zZXQoIlVzZXJVbml0IixwKTtmLnNldElmRGljdCgiUmVzb3VyY2VzIixhd2FpdCB0aGlzLiNBdChoLCEwLG8pKTtpZihyKXtjb25zdCBlPWF3YWl0IHRoaXMuI0F0KHIsITAsbyk7dGhpcy4jTnQoZSxuKTtmLnNldElmQXJyYXkoIkFubm90cyIsZSl9aWYodGhpcy51c2VPYmplY3RTdHJlYW1zKXtjb25zdCBlPXRoaXMubmV3UmVmQ291bnQsdD1bXTtmb3IobGV0IGE9ZzthPGU7YSsrKXt0aGlzLnhyZWZbYV1pbnN0YW5jZW9mIEJhc2VTdHJlYW18fHQucHVzaChSZWYuZ2V0KGEsMCkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9NjU1MzUpe2NvbnN0IGE9dGhpcy5uZXdSZWY7dGhpcy5vYmpTdHJlYW1SZWZzLmFkZChhLm51bSk7dGhpcy54cmVmW2EubnVtXT10LnNsaWNlKGUsZSs2NTUzNSl9fXRoaXMuY3VycmVudERvY3VtZW50PW51bGw7cmV0dXJuIGR9I1B0KCl7Y29uc3R7bmV3UGFnZXM6ZSxyb290RGljdDp0LHBhZ2VzUmVmOmEscGFnZXNEaWN0OnJ9PXRoaXM7dC5zZXQoIlBhZ2VzIixhKTtyLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7ci5zZXQoIkNvdW50IixlLmxlbmd0aCk7Y29uc3QgaT1be2RpY3Q6cixraWRzOmUscGFyZW50UmVmOmF9XTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdHtkaWN0OmUsa2lkczp0LHBhcmVudFJlZjphfT1pLnBvcCgpO2lmKHQubGVuZ3RoPD0xNil7ZS5zZXQoIktpZHMiLHQpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy54cmVmW2UubnVtXS5zZXQoIlBhcmVudCIsYSk7Y29udGludWV9Y29uc3Qgcj1NYXRoLm1heCgxNixNYXRoLmNlaWwodC5sZW5ndGgvMTYpKSxuPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9ciluLnB1c2godC5zbGljZShlLGUrcikpO2NvbnN0IHM9W107ZS5zZXQoIktpZHMiLHMpO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0W3Qscl09dGhpcy5uZXdEaWN0O3MucHVzaCh0KTtyLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7ci5zZXQoIlBhcmVudCIsYSk7ci5zZXQoIkNvdW50IixlLmxlbmd0aCk7aS5wdXNoKHtkaWN0OnIsa2lkczplLHBhcmVudFJlZjp0fSl9fX0jRXQoZSx0KXtjb25zdCBhPWUuc29ydCh0PyhbZV0sW3RdKT0+ZS5sb2NhbGVDb21wYXJlKHQpOihbZV0sW3RdKT0+ZS10KSxbcixpXT10aGlzLm5ld0RpY3Qsbj1be2RpY3Q6aSxlbnRyaWVzOmF9XSxzPXQ/Ik5hbWVzIjoiTnVtcyI7Zm9yKDtuLmxlbmd0aD4wOyl7Y29uc3R7ZGljdDplLGVudHJpZXM6dH09bi5wb3AoKTtpZih0Lmxlbmd0aDw9NjQpe2Uuc2V0KCJMaW1pdHMiLFt0WzBdWzBdLHQuYXQoLTEpWzBdXSk7ZS5zZXQocyx0LmZsYXQoKSk7Y29udGludWV9Y29uc3QgYT1bXSxyPU1hdGgubWF4KDY0LE1hdGguY2VpbCh0Lmxlbmd0aC82NCkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9cilhLnB1c2godC5zbGljZShlLGUrcikpO2NvbnN0IGk9W107ZS5zZXQoIktpZHMiLGkpO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0W3QsYV09dGhpcy5uZXdEaWN0O2kucHVzaCh0KTthLnNldCgiTGltaXRzIixbZVswXVswXSxlLmF0KC0xKVswXV0pO24ucHVzaCh7ZGljdDphLGVudHJpZXM6ZX0pfX1yZXR1cm4gcn0jTHQoKXtjb25zdHtwYWdlTGFiZWxzOmV9PXRoaXM7aWYoIWV8fDA9PT1lLmxlbmd0aClyZXR1cm47Y29uc3R7cm9vdERpY3Q6dH09dGhpcyxhPXRoaXMuI0V0KHRoaXMucGFnZUxhYmVscywhMSk7dC5zZXQoIlBhZ2VMYWJlbHMiLGEpfSNfdCgpe2NvbnN0e25hbWVkRGVzdGluYXRpb25zOmV9PXRoaXM7aWYoMCE9PWUuc2l6ZSl7aWYoIXRoaXMubmFtZXNEaWN0KXtbdGhpcy5uYW1lc1JlZix0aGlzLm5hbWVzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMucm9vdERpY3Quc2V0KCJOYW1lcyIsdGhpcy5uYW1lc1JlZil9dGhpcy5uYW1lc0RpY3Quc2V0KCJEZXN0cyIsdGhpcy4jRXQoQXJyYXkuZnJvbShlLmVudHJpZXMoKSksITApKX19I1V0KCl7Y29uc3R7c3RydWN0VHJlZUtpZHM6ZX09dGhpcztpZighZXx8MD09PWUubGVuZ3RoKXJldHVybjtjb25zdHtyb290RGljdDp0fT10aGlzLGE9dGhpcy5uZXdSZWYscj10aGlzLnhyZWZbYS5udW1dPW5ldyBEaWN0O3Iuc2V0SWZOYW1lKCJUeXBlIiwiU3RydWN0VHJlZVJvb3QiKTtyLnNldElmQXJyYXkoIksiLGUpO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dGhpcy54cmVmW3QubnVtXSxyPWUuZ2V0KCJUeXBlIik7ciYmIWlzTmFtZShyLCJTdHJ1Y3RFbGVtIil8fGUuc2V0KCJQIixhKX1pZih0aGlzLnBhcmVudFRyZWUuc2l6ZT4wKXtjb25zdCBlPXRoaXMuI0V0KEFycmF5LmZyb20odGhpcy5wYXJlbnRUcmVlLmVudHJpZXMoKSksITEpO3RoaXMueHJlZltlLm51bV0uc2V0SWZOYW1lKCJUeXBlIiwiUGFyZW50VHJlZSIpO3Iuc2V0KCJQYXJlbnRUcmVlIixlKTtyLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLHRoaXMucGFyZW50VHJlZS5zaXplKX1pZih0aGlzLmlkVHJlZS5zaXplPjApe2NvbnN0IGU9dGhpcy4jRXQoQXJyYXkuZnJvbSh0aGlzLmlkVHJlZS5lbnRyaWVzKCkpLCEwKTt0aGlzLnhyZWZbZS5udW1dLnNldElmTmFtZSgiVHlwZSIsIklEVHJlZSIpO3Iuc2V0KCJJRFRyZWUiLGUpfWlmKHRoaXMuY2xhc3NNYXAuc2l6ZT4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5jbGFzc01hcDtyLnNldCgiQ2xhc3NNYXAiLGUpfWlmKHRoaXMucm9sZU1hcC5zaXplPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLnJvbGVNYXA7ci5zZXQoIlJvbGVNYXAiLGUpfWlmKHRoaXMubmFtZXNwYWNlcy5zaXplPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT1BcnJheS5mcm9tKHRoaXMubmFtZXNwYWNlcy52YWx1ZXMoKSk7ci5zZXQoIk5hbWVzcGFjZXMiLGUpfWlmKHRoaXMuc3RydWN0VHJlZUFGLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5zdHJ1Y3RUcmVlQUY7ci5zZXQoIkFGIixlKX1pZih0aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbi5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uO3Iuc2V0KCJQcm9udW5jaWF0aW9uTGV4aWNvbiIsZSl9dC5zZXQoIlN0cnVjdFRyZWVSb290IixhKX1hc3luYyNqdCgpe2NvbnN0e3Jvb3REaWN0OmV9PXRoaXM7ZS5zZXRJZk5hbWUoIlR5cGUiLCJDYXRhbG9nIik7ZS5zZXRJZk5hbWUoIlZlcnNpb24iLHRoaXMudmVyc2lvbik7dGhpcy4jUHQoKTt0aGlzLiNMdCgpO3RoaXMuI190KCk7dGhpcy4jVXQoKX0jWHQoKXtjb25zdCBlPW5ldyBNYXA7aWYodGhpcy5oYXNTaW5nbGVGaWxlKXtjb25zdHt4cmVmOnt0cmFpbGVyOnR9fT10aGlzLm9sZFBhZ2VzWzBdLmRvY3VtZW50RGF0YS5kb2N1bWVudCxhPXQuZ2V0KCJJbmZvIik7Zm9yKGNvbnN0W3Qscl1vZiBhfHxbXSkic3RyaW5nIj09dHlwZW9mIHImJmUuc2V0KHQsc3RyaW5nVG9QREZTdHJpbmcocikpfWUuZGVsZXRlKCJNb2REYXRlIik7ZS5zZXQoIkNyZWF0aW9uRGF0ZSIsZ2V0TW9kaWZpY2F0aW9uRGF0ZSgpKTtlLnNldCgiQ3JlYXRvciIsIlBERi5qcyIpO2Uuc2V0KCJQcm9kdWNlciIsIkZpcmVmb3giKTt0aGlzLmF1dGhvciYmZS5zZXQoIkF1dGhvciIsdGhpcy5hdXRob3IpO3RoaXMudGl0bGUmJmUuc2V0KCJUaXRsZSIsdGhpcy50aXRsZSk7Zm9yKGNvbnN0W3QsYV1vZiBlKXRoaXMuaW5mb0RpY3Quc2V0KHQsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShhKSk7cmV0dXJuIGV9YXN5bmMjcXQoKXtpZighdGhpcy5oYXNTaW5nbGVGaWxlKXJldHVybltudWxsLG51bGwsbnVsbF07Y29uc3R7ZG9jdW1lbnREYXRhOmV9PXRoaXMub2xkUGFnZXNbMF0se2RvY3VtZW50Ont4cmVmOnt0cmFpbGVyOnQsZW5jcnlwdDphfX19PWU7aWYoIXQuaGFzKCJFbmNyeXB0IikpcmV0dXJuW251bGwsbnVsbCxudWxsXTtjb25zdCByPXQuZ2V0KCJFbmNyeXB0Iik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuW251bGwsbnVsbCxudWxsXTt0aGlzLmN1cnJlbnREb2N1bWVudD1lO2NvbnN0IGk9W2F3YWl0IHRoaXMuI1N0KHIsdC54cmVmKSxhLHQuZ2V0KCJJRCIpXTt0aGlzLmN1cnJlbnREb2N1bWVudD1udWxsO3JldHVybiBpfWFzeW5jI0h0KCl7Y29uc3QgZT1uZXcgUmVmU2V0Q2FjaGU7ZS5wdXQoUmVmLmdldCgwLDY1NTM1KSx7ZGF0YTpudWxsfSk7Zm9yKGxldCB0PTEsYT10aGlzLnhyZWYubGVuZ3RoO3Q8YTt0KyspdGhpcy5vYmpTdHJlYW1SZWZzPy5oYXModCk/YXdhaXQgdGhpcy4jV3QoUmVmLmdldCh0LDApLHRoaXMueHJlZlt0XSxlKTplLnB1dChSZWYuZ2V0KHQsMCkse2RhdGE6dGhpcy54cmVmW3RdfSk7cmV0dXJuW2UsdGhpcy5uZXdSZWZdfWFzeW5jI1d0KGUsdCxhKXtjb25zdCByPVsiIl0saT1bXTtsZXQgbj0wO2NvbnN0IHM9W107Zm9yKGxldCBvPTAsYz10Lmxlbmd0aDtvPGM7bysrKXtjb25zdCBjPXRbb107YS5wdXQoYyx7ZGF0YTpudWxsLG9ialN0cmVhbVJlZjplLGluZGV4Om99KTtpLnB1c2goYCR7Yy5udW19ICR7bn1gKTtjb25zdCBsPXRoaXMueHJlZltjLm51bV07YXdhaXQgd3JpdGVWYWx1ZShsLHMsbnVsbCk7Y29uc3QgaD1zLmpvaW4oIiIpO3MubGVuZ3RoPTA7ci5wdXNoKGgpO24rPWgubGVuZ3RoKzF9clswXT1pLmpvaW4oIlxuIik7Y29uc3Qgbz1uZXcgU3RyaW5nU3RyZWFtKHIuam9pbigiXG4iKSksYz1vLmRpY3Q9bmV3IERpY3Q7Yy5zZXRJZk5hbWUoIlR5cGUiLCJPYmpTdG0iKTtjLnNldCgiTiIsdC5sZW5ndGgpO2Muc2V0KCJGaXJzdCIsclswXS5sZW5ndGgrMSk7YS5wdXQoZSx7ZGF0YTpvfSl9YXN5bmMgd3JpdGVQREYoKXthd2FpdCB0aGlzLiNqdCgpO2NvbnN0IGU9dGhpcy4jWHQoKSxbdCxhLHJdPWF3YWl0IHRoaXMuI3F0KCksW2ksbl09YXdhaXQgdGhpcy4jSHQoKSxzPVsuLi5gJVBERi0ke3RoaXMudmVyc2lvbn1cbiVgLnNwbGl0KCIiKS5tYXAoZT0+ZS5jaGFyQ29kZUF0KDApKSwyNTAsMjIyLDI1MCwyMDZdO3JldHVybiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOm5ldyBVaW50OEFycmF5KHMpLGNoYW5nZXM6aSx4cmVmSW5mbzp7c3RhcnRYUmVmOm51bGwscm9vdFJlZjp0aGlzLnJvb3RSZWYsaW5mb1JlZjp0aGlzLmluZm9SZWYsZW5jcnlwdFJlZjp0LG5ld1JlZjpuLGZpbGVJZHM6cnx8W251bGwsbnVsbF0saW5mb01hcDplfSx1c2VYcmVmU3RyZWFtOnRoaXMudXNlT2JqZWN0U3RyZWFtcyx4cmVmOntlbmNyeXB0OmEsZW5jcnlwdFJlZjp0fX0pfX1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgYT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oZT0+e3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPWUuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lLmlzUmFuZ2VTdXBwb3J0ZWQ7dGhpcy5fY29udGVudExlbmd0aD1lLmNvbnRlbnRMZW5ndGh9KX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljeyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYiZnVuY3Rpb24iPT10eXBlb2Ygc2VsZi5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBzZWxmJiZ0aGlzLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKX1zdGF0aWMgc2V0dXAoZSx0KXtsZXQgYT0hMTtlLm9uKCJ0ZXN0Iix0PT57aWYoIWEpe2E9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSk7ZS5vbigiY29uZmlndXJlIixlPT57IWZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKGUpe051bWJlci5pc0ludGVnZXIoZSkmJihRdD1lKX0oZS52ZXJib3NpdHkpfSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsZT0+dGhpcy5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KSl9c3RhdGljIGNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpe2xldCBhLHI9ITEsaT1udWxsO2NvbnN0IG49bmV3IFNldCxzPWdldFZlcmJvc2l0eUxldmVsKCkse2RvY0lkOm8sYXBpVmVyc2lvbjpjfT1lLGw9IjUuNC40NDkiO2lmKGMhPT1sKXRocm93IG5ldyBFcnJvcihgVGhlIEFQSSB2ZXJzaW9uICIke2N9IiBkb2VzIG5vdCBtYXRjaCB0aGUgV29ya2VyIHZlcnNpb24gIiR7bH0iLmApO2NvbnN0IGJ1aWxkTXNnPShlLHQpPT5gVGhlIFxgJHtlfS5wcm90b3R5cGVcYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydHkgIiR7dH0iLCB0aHVzIGJyZWFraW5nIGUuZy4gXGBmb3IuLi5pblxgIGl0ZXJhdGlvbiBvZiAke2V9cy5gO2Zvcihjb25zdCBlIGlue30pdGhyb3cgbmV3IEVycm9yKGJ1aWxkTXNnKCJPYmplY3QiLGUpKTtmb3IoY29uc3QgZSBpbltdKXRocm93IG5ldyBFcnJvcihidWlsZE1zZygiQXJyYXkiLGUpKTtjb25zdCBoPW8rIl93b3JrZXIiO2xldCB1PW5ldyBNZXNzYWdlSGFuZGxlcihoLG8sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKHIpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7bi5hZGQoZSl9ZnVuY3Rpb24gZmluaXNoV29ya2VyVGFzayhlKXtlLmZpbmlzaCgpO24uZGVsZXRlKGUpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFSZXNvdXJjZXMiKTtzdGFydFdvcmtlclRhc2soZSk7YXdhaXQgYS5lbnN1cmVEb2MoImxvYWRYZmFSZXNvdXJjZXMiLFt1LGVdKTtmaW5pc2hXb3JrZXJUYXNrKGUpfWNvbnN0W3IsaV09YXdhaXQgUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJudW1QYWdlcyIpLGEuZW5zdXJlRG9jKCJmaW5nZXJwcmludHMiKV0pO3JldHVybntudW1QYWdlczpyLGZpbmdlcnByaW50czppLGh0bWxGb3JYZmE6dD9hd2FpdCBhLmVuc3VyZURvYygiaHRtbEZvclhmYSIpOm51bGx9fWZ1bmN0aW9uIHNldHVwRG9jKGUpe2Z1bmN0aW9uIG9uU3VjY2VzcyhlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7dS5zZW5kKCJHZXREb2MiLHtwZGZJbmZvOmV9KX1mdW5jdGlvbiBvbkZhaWx1cmUoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil7Y29uc3QgdD1uZXcgV29ya2VyVGFzayhgUGFzc3dvcmRFeGNlcHRpb246IHJlc3BvbnNlICR7ZS5jb2RlfWApO3N0YXJ0V29ya2VyVGFzayh0KTt1LnNlbmRXaXRoUHJvbWlzZSgiUGFzc3dvcmRSZXF1ZXN0IixlKS50aGVuKGZ1bmN0aW9uKHtwYXNzd29yZDplfSl7ZmluaXNoV29ya2VyVGFzayh0KTthLnVwZGF0ZVBhc3N3b3JkKGUpO3BkZk1hbmFnZXJSZWFkeSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKHQpO3Uuc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pfWVsc2UgdS5zZW5kKCJEb2NFeGNlcHRpb24iLHdyYXBSZWFzb24oZSkpfWZ1bmN0aW9uIHBkZk1hbmFnZXJSZWFkeSgpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITEpLnRoZW4ob25TdWNjZXNzLGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2EucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oZnVuY3Rpb24oKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCEwKS50aGVuKG9uU3VjY2VzcyxvbkZhaWx1cmUpfSk6b25GYWlsdXJlKGUpfSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmEscmFuZ2VDaHVua1NpemU6cixsZW5ndGg6bixkb2NCYXNlVXJsOnMsZW5hYmxlWGZhOmMsZXZhbHVhdG9yT3B0aW9uczpsfSl7Y29uc3QgaD17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDphLGRvY0Jhc2VVcmw6cyxkb2NJZDpvLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bCxoYW5kbGVyOnUsbGVuZ3RoOm4scGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTpyfTtpZihlKXtoLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGgpfWNvbnN0IGQ9bmV3IFBERldvcmtlclN0cmVhbSh1KSxmPWQuZ2V0RnVsbFJlYWRlcigpLGc9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IHAsbT1bXSxiPTA7Zi5oZWFkZXJzUmVhZHkudGhlbihmdW5jdGlvbigpe2lmKGYuaXNSYW5nZVN1cHBvcnRlZCl7aC5zb3VyY2U9ZDtoLmxlbmd0aD1mLmNvbnRlbnRMZW5ndGg7aC5kaXNhYmxlQXV0b0ZldGNofHw9Zi5pc1N0cmVhbWluZ1N1cHBvcnRlZDtwPW5ldyBOZXR3b3JrUGRmTWFuYWdlcihoKTtmb3IoY29uc3QgZSBvZiBtKXAuc2VuZFByb2dyZXNzaXZlRGF0YShlKTttPVtdO2cucmVzb2x2ZShwKTtpPW51bGx9fSkuY2F0Y2goZnVuY3Rpb24oZSl7Zy5yZWplY3QoZSk7aT1udWxsfSk7bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTphfSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihhKXtpZighcCl7Y29uc3QgZT1hcnJheUJ1ZmZlcnNUb0J5dGVzKG0pO209W107biYmZS5sZW5ndGghPT1uJiZ3YXJuKCJyZXBvcnRlZCBIVFRQIGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBhY3R1YWwiKTtoLnNvdXJjZT1lO3A9bmV3IExvY2FsUGRmTWFuYWdlcihoKTtnLnJlc29sdmUocCl9aT1udWxsO3JldHVybn1iKz1lLmJ5dGVMZW5ndGg7Zi5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8dS5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDpiLHRvdGFsOk1hdGgubWF4KGIsZi5jb250ZW50TGVuZ3RofHwwKX0pO3A/cC5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpOm0ucHVzaChlKTtmLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07Zi5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KS5jYXRjaChmdW5jdGlvbihlKXtnLnJlamVjdChlKTtpPW51bGx9KTtpPWU9PntkLmNhbmNlbEFsbFJlcXVlc3RzKGUpfTtyZXR1cm4gZy5wcm9taXNlfSkoZSkudGhlbihmdW5jdGlvbihlKXtpZihyKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1hPWU7YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKGU9Pnt1LnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KX0pLnRoZW4ocGRmTWFuYWdlclJlYWR5LG9uRmFpbHVyZSl9dS5vbigiR2V0UGFnZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlKGUsInJvdGF0ZSIpLGEuZW5zdXJlKGUsInJlZiIpLGEuZW5zdXJlKGUsInVzZXJVbml0IiksYS5lbnN1cmUoZSwidmlldyIpXSkudGhlbihmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDphLHZpZXc6cn19KX0pfSk7dS5vbigiR2V0UGFnZUluZGV4IixmdW5jdGlvbihlKXtjb25zdCB0PVJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pO3Uub24oIkdldERlc3RpbmF0aW9ucyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KTt1Lm9uKCJHZXREZXN0aW5hdGlvbiIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KTt1Lm9uKCJHZXRQYWdlTGFiZWxzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KTt1Lm9uKCJHZXRQYWdlTGF5b3V0IixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KTt1Lm9uKCJHZXRQYWdlTW9kZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZU1vZGUiKX0pO3Uub24oIkdldFZpZXdlclByZWZlcmVuY2VzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSk7dS5vbigiR2V0T3BlbkFjdGlvbiIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSk7dS5vbigiR2V0QXR0YWNobWVudHMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KTt1Lm9uKCJHZXREb2NKU0FjdGlvbnMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpfSk7dS5vbigiR2V0UGFnZUpTQWN0aW9ucyIsZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGEuZ2V0UGFnZShlKS50aGVuKGU9PmEuZW5zdXJlKGUsImpzQWN0aW9ucyIpKX0pO3Uub24oIkdldEFubm90YXRpb25zQnlUeXBlIixhc3luYyBmdW5jdGlvbih7dHlwZXM6ZSxwYWdlSW5kZXhlc1RvU2tpcDp0fSl7Y29uc3RbcixpXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIildKTtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBuPVtdLHM9W107bGV0IG89bnVsbDt0cnl7Zm9yKGxldCBjPTAsbD1yO2M8bDtjKyspaWYoIXQ/LmhhcyhjKSl7aWYoIW8pe289bmV3IFdvcmtlclRhc2soIkdldEFubm90YXRpb25zQnlUeXBlIik7c3RhcnRXb3JrZXJUYXNrKG8pfW4ucHVzaChhLmdldFBhZ2UoYykudGhlbihhc3luYyB0PT50JiZ0LmNvbGxlY3RBbm5vdGF0aW9uc0J5VHlwZSh1LG8sZSxzLGkpfHxbXSkpfWF3YWl0IFByb21pc2UuYWxsKG4pO3JldHVybihhd2FpdCBQcm9taXNlLmFsbChzKSkuZmlsdGVyKGU9PiEhZSl9ZmluYWxseXtvJiZmaW5pc2hXb3JrZXJUYXNrKG8pfX0pO3Uub24oIkdldE91dGxpbmUiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSk7dS5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pO3Uub24oIkdldFBlcm1pc3Npb25zIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSk7dS5vbigiR2V0TWV0YWRhdGEiLGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGEuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKSxhLmVuc3VyZUNhdGFsb2coImhhc1N0cnVjdFRyZWUiKV0pfSk7dS5vbigiR2V0TWFya0luZm8iLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KTt1Lm9uKCJHZXREYXRhIixmdW5jdGlvbihlKXtyZXR1cm4gYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbihlPT5lLmJ5dGVzKX0pO3Uub24oIkdldEFubm90YXRpb25zIixmdW5jdGlvbih7cGFnZUluZGV4OmUsaW50ZW50OnR9KXtyZXR1cm4gYS5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEodSxyLHQpLnRoZW4oZT0+e2ZpbmlzaFdvcmtlclRhc2socik7cmV0dXJuIGV9LGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3Rocm93IGV9KX0pfSk7dS5vbigiR2V0RmllbGRPYmplY3RzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oZT0+ZT8uYWxsRmllbGRzfHxudWxsKX0pO3Uub24oIkhhc0pTQWN0aW9ucyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pO3Uub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSk7dS5vbigiRXh0cmFjdFBhZ2VzIixhc3luYyBmdW5jdGlvbih7cGFnZUluZm9zOmV9KXtpZighZSl7d2FybigiZXh0cmFjdFBhZ2VzOiBub3RoaW5nIHRvIGV4dHJhY3QuIik7cmV0dXJuIG51bGx9QXJyYXkuaXNBcnJheShlKXx8KGU9W2VdKTtsZXQgdD0wO2Zvcihjb25zdCByIG9mIGUpaWYobnVsbD09PXIuZG9jdW1lbnQpci5kb2N1bWVudD1hLnBkZkRvY3VtZW50O2Vsc2UgaWYoQXJyYXlCdWZmZXIuaXNWaWV3KHIuZG9jdW1lbnQpKXtjb25zdCBlPW5ldyBMb2NhbFBkZk1hbmFnZXIoe3NvdXJjZTpyLmRvY3VtZW50LGRvY0lkOmAke299X2V4dHJhY3RQYWdlc18ke3QrK31gLGhhbmRsZXI6dSxwYXNzd29yZDpyLnBhc3N3b3JkPz9udWxsLGV2YWx1YXRvck9wdGlvbnM6T2JqZWN0LmFzc2lnbih7fSxhLmV2YWx1YXRvck9wdGlvbnMpfSk7bGV0IGk9ITEsbj0hMDtmb3IoOzspdHJ5e2F3YWl0IGUucmVxdWVzdExvYWRlZFN0cmVhbSgpO2F3YWl0IGUuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGUuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGUuZW5zdXJlRG9jKCJwYXJzZSIsW2ldKTticmVha31jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uKXtpZighMT09PWkpe2k9ITA7Y29udGludWV9bj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IFhSZWZQYXJzZUV4Y2VwdGlvbi4iKX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgUGFzc3dvcmRFeGNlcHRpb246IHJlc3BvbnNlICR7dC5jb2RlfWApO3N0YXJ0V29ya2VyVGFzayhhKTt0cnl7Y29uc3R7cGFzc3dvcmQ6YX09YXdhaXQgdS5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsdCk7ZS51cGRhdGVQYXNzd29yZChhKX1jYXRjaHtuPSExO3dhcm4oImV4dHJhY3RQYWdlczogaW52YWxpZCBwYXNzd29yZC4iKX1maW5hbGx5e2ZpbmlzaFdvcmtlclRhc2soYSl9fWVsc2V7bj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgZG9jdW1lbnQuIil9aWYoIW4pYnJlYWt9bnx8KHIuZG9jdW1lbnQ9bnVsbCk7aWYoYXdhaXQgZS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpKXtyLmRvY3VtZW50PW51bGw7d2FybigiZXh0cmFjdFBhZ2VzIGRvZXMgbm90IHN1cHBvcnQgcHVyZSBYRkEgZG9jdW1lbnRzLiIpfWVsc2Ugci5kb2N1bWVudD1lLnBkZkRvY3VtZW50fWVsc2Ugd2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIGRvY3VtZW50LiIpO3RyeXtjb25zdCB0PW5ldyBQREZFZGl0b3I7cmV0dXJuIGF3YWl0IHQuZXh0cmFjdFBhZ2VzKGUpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSk7cmV0dXJuIG51bGx9fSk7dS5vbigiU2F2ZURvY3VtZW50Iixhc3luYyBmdW5jdGlvbih7aXNQdXJlWGZhOmUsbnVtUGFnZXM6dCxhbm5vdGF0aW9uU3RvcmFnZTpyLGZpbGVuYW1lOml9KXtjb25zdCBuPVthLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSxhLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybVJlZiIpLGEuZW5zdXJlRG9jKCJzdGFydFhSZWYiKSxhLmVuc3VyZURvYygieHJlZiIpLGEuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKV0scz1uZXcgUmVmU2V0Q2FjaGUsbz1bXSxjPWU/bnVsbDpnZXROZXdBbm5vdGF0aW9uc01hcChyKSxbbCxoLGQsZixnLHBdPWF3YWl0IFByb21pc2UuYWxsKG4pLG09Zy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCBiO2lmKGMpe3A/YXdhaXQgcC5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmEsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6Y30pJiYoYj1wKTphd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOm0scGRmTWFuYWdlcjphLG5ld0Fubm90YXRpb25zQnlQYWdlOmN9KSYmKGI9bnVsbCk7Y29uc3QgZT1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhyLnZhbHVlcygpLGcsYS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKSx0PXZvaWQgMD09PWI/bzpbXTtmb3IoY29uc3RbcixpXW9mIGMpdC5wdXNoKGEuZ2V0UGFnZShyKS50aGVuKHQ9Pntjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBTYXZlIChlZGl0b3IpOiBwYWdlICR7cn1gKTtzdGFydFdvcmtlclRhc2soYSk7cmV0dXJuIHQuc2F2ZU5ld0Fubm90YXRpb25zKHUsYSxpLGUscykuZmluYWxseShmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSl9KX0pKTtudWxsPT09Yj9vLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbihhc3luYygpPT57YXdhaXQgU3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6Yyx4cmVmOmcsY2F0YWxvZ1JlZjptLHBkZk1hbmFnZXI6YSxjaGFuZ2VzOnN9KX0pKTpiJiZvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbihhc3luYygpPT57YXdhaXQgYi51cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTpjLHBkZk1hbmFnZXI6YSxjaGFuZ2VzOnN9KX0pKX1pZihlKW8ucHVzaChhLmVuc3VyZURvYygic2VyaWFsaXplWGZhRGF0YSIsW3JdKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKW8ucHVzaChhLmdldFBhZ2UoZSkudGhlbihmdW5jdGlvbih0KXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBTYXZlOiBwYWdlICR7ZX1gKTtzdGFydFdvcmtlclRhc2soYSk7cmV0dXJuIHQuc2F2ZSh1LGEscixzKS5maW5hbGx5KGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhhKX0pfSkpO2NvbnN0IHk9YXdhaXQgUHJvbWlzZS5hbGwobyk7bGV0IHc9bnVsbDtpZihlKXt3PXlbMF07aWYoIXcpcmV0dXJuIGwuYnl0ZXN9ZWxzZSBpZigwPT09cy5zaXplKXJldHVybiBsLmJ5dGVzO2NvbnN0IHg9ZCYmaCBpbnN0YW5jZW9mIERpY3QmJnMudmFsdWVzKCkuc29tZShlPT5lLm5lZWRBcHBlYXJhbmNlcyksUz1oIGluc3RhbmNlb2YgRGljdCYmaC5nZXQoIlhGQSIpfHxudWxsO2xldCBrPW51bGwsQz0hMTtpZihBcnJheS5pc0FycmF5KFMpKXtmb3IobGV0IGU9MCx0PVMubGVuZ3RoO2U8dDtlKz0yKWlmKCJkYXRhc2V0cyI9PT1TW2VdKXtrPVNbZSsxXTtDPSEwfW51bGw9PT1rJiYoaz1nLmdldE5ld1RlbXBvcmFyeVJlZigpKX1lbHNlIFMmJndhcm4oIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpO2xldCB2PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZy50cmFpbGVyKXtjb25zdCBlPW5ldyBNYXAsdD1nLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W2Escl1vZiB0KSJzdHJpbmciPT10eXBlb2YgciYmZS5zZXQoYSxzdHJpbmdUb1BERlN0cmluZyhyKSk7dj17cm9vdFJlZjptLGVuY3J5cHRSZWY6Zy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpnLmdldE5ld1RlbXBvcmFyeVJlZigpLGluZm9SZWY6Zy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm9NYXA6ZSxmaWxlSWRzOmcudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmYsZmlsZW5hbWU6aX19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6bC5ieXRlcyx4cmVmSW5mbzp2LGNoYW5nZXM6cyx4cmVmOmcsaGFzWGZhOiEhUyx4ZmFEYXRhc2V0c1JlZjprLGhhc1hmYURhdGFzZXRzRW50cnk6QyxuZWVkQXBwZWFyYW5jZXM6eCxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmgseGZhRGF0YTp3LHVzZVhyZWZTdHJlYW06aXNEaWN0KGcudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKT0+e2cucmVzZXROZXdUZW1wb3JhcnlSZWYoKX0pfSk7dS5vbigiR2V0T3BlcmF0b3JMaXN0IixmdW5jdGlvbihlLHQpe2NvbnN0IHI9ZS5wYWdlSW5kZXg7YS5nZXRQYWdlKHIpLnRoZW4oZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7cn1gKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgbj1zPj1jZT9EYXRlLm5vdygpOjA7YS5nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6dSxzaW5rOnQsdGFzazppLGludGVudDplLmludGVudCxjYWNoZUtleTplLmNhY2hlS2V5LGFubm90YXRpb25TdG9yYWdlOmUuYW5ub3RhdGlvblN0b3JhZ2UsbW9kaWZpZWRJZHM6ZS5tb2RpZmllZElkc30pLnRoZW4oZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhpKTtuJiZpbmZvKGBwYWdlPSR7cisxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktbn1tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSxmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pfSl9KTt1Lm9uKCJHZXRUZXh0Q29udGVudCIsZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6cixpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOm59PWU7YS5nZXRQYWdlKHIpLnRoZW4oZnVuY3Rpb24oZSl7Y29uc3QgYT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIityKTtzdGFydFdvcmtlclRhc2soYSk7Y29uc3Qgbz1zPj1jZT9EYXRlLm5vdygpOjA7ZS5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6dSx0YXNrOmEsc2luazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmksZGlzYWJsZU5vcm1hbGl6YXRpb246bn0pLnRoZW4oZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpO28mJmluZm8oYHBhZ2U9JHtyKzF9IC0gZ2V0VGV4dENvbnRlbnQ6IHRpbWU9YCsoRGF0ZS5ub3coKS1vKSsibXMiKTt0LmNsb3NlKCl9LGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soYSk7YS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSl9KX0pO3Uub24oIkdldFN0cnVjdFRyZWUiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oZT0+YS5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpKX0pO3Uub24oIkZvbnRGYWxsYmFjayIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQsdSl9KTt1Lm9uKCJDbGVhbnVwIixmdW5jdGlvbihlKXtyZXR1cm4gYS5jbGVhbnVwKCEwKX0pO3Uub24oIlRlcm1pbmF0ZSIsZnVuY3Rpb24oZSl7cj0hMDtjb25zdCB0PVtdO2lmKGEpe2EudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWEuY2xlYW51cCgpO3QucHVzaChlKTthPW51bGx9ZWxzZSBjbGVhckdsb2JhbENhY2hlcygpO2k/LihuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygbil7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oZnVuY3Rpb24oKXt1LmRlc3Ryb3koKTt1PW51bGx9KX0pO3Uub24oIlJlYWR5IixmdW5jdGlvbih0KXtzZXR1cERvYyhlKTtlPW51bGx9KTtyZXR1cm4gaH1zdGF0aWMgaW5pdGlhbGl6ZUZyb21Qb3J0KGUpe2NvbnN0IHQ9bmV3IE1lc3NhZ2VIYW5kbGVyKCJ3b3JrZXIiLCJtYWluIixlKTt0aGlzLnNldHVwKHQsZSk7dC5zZW5kKCJyZWFkeSIsbnVsbCl9fWdsb2JhbFRoaXMucGRmanNXb3JrZXI9e1dvcmtlck1lc3NhZ2VIYW5kbGVyfTtleHBvcnR7V29ya2VyTWVzc2FnZUhhbmRsZXJ9Ow==";
export {
  l as default
};
//# sourceMappingURL=pdf.worker.min-DFxVranA.js.map