@curless/hotel-storefront 0.32.0 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/card.generated.d.ts +1 -1
- package/dist/card.generated.js +2 -2
- package/dist/card.generated.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/package.json +1 -1
package/dist/card.generated.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// The hotel booking MCP App card - a single self-contained HTML (Vite +
|
|
3
3
|
// vite-plugin-singlefile, with the MCP Apps SDK bundled), base64-embedded so it
|
|
4
4
|
// is bundler-safe. Regenerate after changing the widget UI.
|
|
5
|
-
export const HOTEL_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgPHRpdGxlPkhvdGVsczwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+Y29uc3QgSGc9KGZ1bmN0aW9uKCl7Y29uc3QgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtyZXR1cm4gdCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCJ9KSgpLFdnPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSx6dT17fSxWZz1mdW5jdGlvbih0LG4sbyl7bGV0IHM9UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IGk9ZnVuY3Rpb24ocCl7cmV0dXJuIFByb21pc2UuYWxsKHAubWFwKGg9PlByb21pc2UucmVzb2x2ZShoKS50aGVuKGY9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmZ9KSxmPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpmfSkpKSl9O2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSx1PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLGQ9dT8ubm9uY2V8fHU/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtzPWkobi5tYXAocD0+e2lmKHA9V2cocCxvKSxwIGluIHp1KXJldHVybjt6dVtwXT0hMDtjb25zdCBoPXAuZW5kc1dpdGgoIi5jc3MiKSxmPWg/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgej1hLmxlbmd0aC0xO3o+PTA7ei0tKXtjb25zdCBBPWFbel07aWYoQS5ocmVmPT09cCYmKCFofHxBLnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke3B9Il0ke2Z9YCkpcmV0dXJuO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGsucmVsPWg/InN0eWxlc2hlZXQiOkhnLGh8fChrLmFzPSJzY3JpcHQiKSxrLmNyb3NzT3JpZ2luPSIiLGsuaHJlZj1wLGQmJmsuc2V0QXR0cmlidXRlKCJub25jZSIsZCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrKSxoKXJldHVybiBuZXcgUHJvbWlzZSgoeixBKT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIseiksay5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PkEobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7cH1gKSkpfSl9KSl9ZnVuY3Rpb24gcihpKXtjb25zdCBhPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoYS5wYXlsb2FkPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksIWEuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBpfXJldHVybiBzLnRoZW4oaT0+e2Zvcihjb25zdCBhIG9mIGl8fFtdKWEuc3RhdHVzPT09InJlamVjdGVkIiYmcihhLnJlYXNvbik7cmV0dXJuIHQoKS5jYXRjaChyKX0pfTtmdW5jdGlvbiBKZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBLZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBQcygpe3JldHVybiBlPT5lfWZ1bmN0aW9uIEdnKGUpe31mdW5jdGlvbiBZZyhlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIFFnKGUpe31mdW5jdGlvbiBoaShlKXtjb25zdCB0PU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW28sc10pPT50LmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sc10pPT5zKX1mdW5jdGlvbiBtaShlLHQ9InwiKXtyZXR1cm4gZS5tYXAobj0+RmkobikpLmpvaW4odCl9ZnVuY3Rpb24gcHMoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKTp0fWNsYXNzIFhne2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX2dldHRlcjtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMuX3ZhbHVlPXQoKSx0aGlzLl9nZXR0ZXI9dm9pZCAwKSx0aGlzLl92YWx1ZX19ZnVuY3Rpb24gRm4oZSl7cmV0dXJuIG5ldyBYZyhlKX1mdW5jdGlvbiBEaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBsdChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxuPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsbil9ZnVuY3Rpb24geGQoZSx0KXtjb25zdCBuPWUvdCxvPU1hdGgucm91bmQobikscz00Kk51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKG4pLDEpO3JldHVybiBNYXRoLmFicyhuLW8pPHM/MDpuLW99Y29uc3QgeHU9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gSWQoZSx0LG4pe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2lmKG8hPT14dSlyZXR1cm4gbz09PXZvaWQgMCYmKG89eHUsbz1uKCkpLG99LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpzfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGViKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9ZnVuY3Rpb24gUnQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBFcyhlKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwic2hhcGUiKTtyZXR1cm4gdD8uZ2V0P3QuZ2V0LnJhdzp0Py52YWx1ZX1mdW5jdGlvbiBZZShlKXtyZXR1cm4gRXMoZS5fem9kLmRlZik/P2UuX3pvZC5kZWYuc2hhcGV9ZnVuY3Rpb24gQWQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2NvbnN0IG89bigpO3JldHVybiBSdCh0aGlzLHQsbyksb30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBDZChlLHQsbil7dCBpbiBlP1J0KGUsdCxuKTplW3RdPW59ZnVuY3Rpb24gd3QoZSx0LG4sbyl7Y29uc3Qgcz1ZZSh0KTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKTtpLmVudW1lcmFibGUmJihpLmdldD9BZChlLHIsKCk9Pntjb25zdCBhPXQuX3pvZC5kZWYuc2hhcGVbcl07cmV0dXJuIG8/byhhLHIpOmF9KTpDZChlLHIsbz9vKGkudmFsdWUscik6aS52YWx1ZSkpfX1mdW5jdGlvbiB0YihlLHQpe2Zvcihjb25zdCBuIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7by5lbnVtZXJhYmxlJiYoby5nZXQ/QWQoZSxuLCgpPT50W25dKTpDZChlLG4sby52YWx1ZSkpfX1mdW5jdGlvbiB5ZSguLi5lKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobik7T2JqZWN0LmFzc2lnbih0LG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSx0KX1mdW5jdGlvbiBuYihlKXtyZXR1cm4geWUoZS5fem9kLmRlZil9ZnVuY3Rpb24gb2IoZSx0KXtyZXR1cm4gdD90LnJlZHVjZSgobixvKT0+bj8uW29dLGUpOmV9ZnVuY3Rpb24gc2IoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQubWFwKG89PmVbb10pO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKG89Pntjb25zdCBzPXt9O2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXNbdFtyXV09b1tyXTtyZXR1cm4gc30pfWZ1bmN0aW9uIHJiKGU9MTApe2NvbnN0IHQ9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgbj0iIjtmb3IobGV0IG89MDtvPGU7bysrKW4rPXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKV07cmV0dXJuIG59ZnVuY3Rpb24gUGQoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIEVkKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgQmk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwmJiFBcnJheS5pc0FycmF5KGUpfWNvbnN0IFJkPUZuKCgpPT57aWYoU2Uuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCBlPUZ1bmN0aW9uO3JldHVybiBuZXcgZSgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gZHQoZSl7aWYoV3QoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMHx8dHlwZW9mIHQhPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKFd0KG4pPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gUnMoZSl7cmV0dXJuIGR0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplIGluc3RhbmNlb2YgTWFwP25ldyBNYXAoZSk6ZSBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KGUpOmV9ZnVuY3Rpb24gaWIoZSl7bGV0IHQ9MDtmb3IoY29uc3QgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0Kys7cmV0dXJuIHR9Y29uc3QgYWI9ZT0+e2NvbnN0IHQ9dHlwZW9mIGU7c3dpdGNoKHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmU9PT1udWxsPyJudWxsIjplLnRoZW4mJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiImJmUuY2F0Y2gmJnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmZSBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJmUgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKX19LGhzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksT2Q9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBhZShlLHQsbil7Y29uc3Qgbz1uZXcgZS5fem9kLmNvbnN0cih0Pz9lLl96b2QuZGVmKTtyZXR1cm4oIXR8fG4/LnBhcmVudCkmJihvLl96b2QucGFyZW50PWUpLG99ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWU7aWYoIXQpcmV0dXJue307aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+dH07aWYodD8ubWVzc2FnZSE9PXZvaWQgMCl7aWYodD8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTt0LmVycm9yPXQubWVzc2FnZX1yZXR1cm4gZGVsZXRlIHQubWVzc2FnZSx0eXBlb2YgdC5lcnJvcj09InN0cmluZyI/ey4uLnQsZXJyb3I6KCk9PnQuZXJyb3J9OnR9ZnVuY3Rpb24gY2IoZSl7bGV0IHQ7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KG4sbyxzKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldCh0LG8scyl9LHNldChuLG8scyxyKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LnNldCh0LG8scyxyKX0saGFzKG4sbyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5oYXModCxvKX0sZGVsZXRlUHJvcGVydHkobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbyl9LG93bktleXMobil7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5vd25LZXlzKHQpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pfSxkZWZpbmVQcm9wZXJ0eShuLG8scyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8scyl9fSl9ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIHR5cGVvZiBlPT0iYmlnaW50Ij9lLnRvU3RyaW5nKCkrIm4iOnR5cGVvZiBlPT0ic3RyaW5nIj9gIiR7ZX0iYDpgJHtlfWB9ZnVuY3Rpb24gTmQoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZpbHRlcih0PT5lW3RdLl96b2Qub3B0aW4hPT12b2lkIDAmJmVbdF0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBaZD17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0samQ9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIE1kKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9e307cmV0dXJuIHd0KHIsZSxPcyhlLHQpKSxhZShlLHllKG4se3NoYXBlOnIsY2hlY2tzOltdfSkpfWZ1bmN0aW9uIE9zKGUsdCl7Y29uc3Qgbj1ZZShlKSxvPVtdO2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixzKT8uZW51bWVyYWJsZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke1N0cmluZyhzKX0iYCk7dFtzXSYmby5wdXNoKHMpfXJldHVybiBvfWZ1bmN0aW9uIHFkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9bmV3IFNldChPcyhlLHQpKSxpPXt9O3JldHVybiB3dChpLGUsUmVmbGVjdC5vd25LZXlzKFllKGUpKS5maWx0ZXIoYT0+IXIuaGFzKGEpKSksYWUoZSx5ZShuLHtzaGFwZTppLGNoZWNrczpbXX0pKX1mdW5jdGlvbiBMZChlLHQpe2lmKCFkdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IG49ZS5fem9kLmRlZi5jaGVja3M7aWYobiYmbi5sZW5ndGg+MCl7Y29uc3Qgcz1ZZShlKTtmb3IoY29uc3QgciBvZiBSZWZsZWN0Lm93bktleXModCkpaWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1yZXR1cm4gYWUoZSx5ZShlLl96b2QuZGVmLHtzaGFwZTpEZChlLHQpfSkpfWZ1bmN0aW9uIERkKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gd3QobixlLFJlZmxlY3Qub3duS2V5cyhZZShlKSkpLHRiKG4sdCksbn1mdW5jdGlvbiBCZChlLHQpe2lmKCFkdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtyZXR1cm4gYWUoZSx5ZShlLl96b2QuZGVmLHtzaGFwZTpEZChlLHQpfSkpfWZ1bmN0aW9uIEZkKGUsdCl7aWYoIXQ/Ll96b2Q/LmRlZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gbWVyZ2U6IGV4cGVjdGVkIGFuIG9iamVjdCBzY2hlbWEuIFRvIG1lcmdlIGEgcGxhaW4gc2hhcGUsIHVzZSBgLmV4dGVuZCgpYC4iKTtpZihlLl96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCBuPXt9O3d0KG4sZSxSZWZsZWN0Lm93bktleXMoWWUoZSkpKSx3dChuLHQsUmVmbGVjdC5vd25LZXlzKFllKHQpKSk7Y29uc3Qgbz15ZShlLl96b2QuZGVmLHtzaGFwZTpuLGdldCBjYXRjaGFsbCgpe3JldHVybiB0Ll96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6dC5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIGFlKGUsbyl9ZnVuY3Rpb24gZmkoZSx0LG4sbz0icGFydGlhbCIpe2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoYC4ke299KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c2ApO2NvbnN0IGE9bj9uZXcgU2V0KE9zKHQsbikpOnZvaWQgMCx1PXt9O3JldHVybiB3dCh1LHQsUmVmbGVjdC5vd25LZXlzKFllKHQpKSxlJiYoKGQscCk9PmEmJiFhLmhhcyhwKT9kOm5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmR9KSkpLGFlKHQseWUodC5fem9kLmRlZix7c2hhcGU6dSxjaGVja3M6W119KSl9ZnVuY3Rpb24gVWQoZSx0LG4pe2NvbnN0IG89bj9uZXcgU2V0KE9zKHQsbikpOnZvaWQgMCxzPXt9O3JldHVybiB3dChzLHQsUmVmbGVjdC5vd25LZXlzKFllKHQpKSwocixpKT0+byYmIW8uaGFzKGkpP3I6bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6cn0pKSxhZSh0LHllKHQuX3pvZC5kZWYse3NoYXBlOnN9KSl9ZnVuY3Rpb24geGUoZSx0PTApe2lmKGUuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgbj10O248ZS5pc3N1ZXMubGVuZ3RoO24rKylpZihlLmlzc3Vlc1tuXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBIZChlLHQ9MCl7aWYoZS5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCBuPXQ7bjxlLmlzc3Vlcy5sZW5ndGg7bisrKWlmKGUuaXNzdWVzW25dPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFplKGUsdCl7cmV0dXJuIHQubWFwKG49Pnt2YXIgbztyZXR1cm4obz1uKS5wYXRoPz8oby5wYXRoPVtdKSxuLnBhdGgudW5zaGlmdChlKSxufSl9ZnVuY3Rpb24gTXQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9ZnVuY3Rpb24gZ2koZSx0LG4pe3ZhciBvO2ZvcihsZXQgcz10O3M8ZS5sZW5ndGg7cysrKShvPWVbc10pLnNjaGVtYT8/KG8uc2NoZW1hPW4pfWZ1bmN0aW9uIHFlKGUsdCxuKXt2YXIgbztjb25zdCBzPWUuaW5zdD8uX3pvZD8udHJhaXRzO3M/LmhhcygiJFpvZFR5cGUiKSYmKHMuaGFzKCIkWm9kQ2hlY2siKT8obz1lKS5zY2hlbWE/PyhvLnNjaGVtYT1lLmluc3QpOmUuc2NoZW1hPWUuaW5zdCk7Y29uc3Qgcj1lLnNjaGVtYSE9PWUuaW5zdD9lLnNjaGVtYT8uX3pvZC5kZWY/LmVycm9yOnZvaWQgMCxpPWUubWVzc2FnZT9lLm1lc3NhZ2U6TXQoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P010KHI/LihlKSk/P010KHQ/LmVycm9yPy4oZSkpPz9NdChuLmN1c3RvbUVycm9yPy4oZSkpPz9NdChuLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCIsYT17fTtmb3IoY29uc3QgdSBvZiBPYmplY3Qua2V5cyhlKSl1PT09Imluc3QifHx1PT09InNjaGVtYSJ8fHU9PT0iY29udGludWUifHx1PT09ImlucHV0Inx8dT09PSJfX3Byb3RvX18ifHwoYVt1XT1lW3VdKTtyZXR1cm4gYS5wYXRoPz8oYS5wYXRoPVtdKSxhLm1lc3NhZ2U9aSx0Py5yZXBvcnRJbnB1dCYmKGEuaW5wdXQ9ZS5pbnB1dCksYX1mdW5jdGlvbiBOcyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9Y29uc3QgbGI9L1tcdUQ4MDAtXHVEQkZGXS87ZnVuY3Rpb24gWnMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZighbGIudGVzdChlKSlyZXR1cm4gdDtsZXQgbj10O2ZvcihsZXQgbz0wO288dC0xO28rKykoZS5jaGFyQ29kZUF0KG8pJjY0NTEyKT09PTU1Mjk2JiYoZS5jaGFyQ29kZUF0KG8rMSkmNjQ1MTIpPT09NTYzMjAmJihuLS0sbysrKTtyZXR1cm4gbn1mdW5jdGlvbiBqcyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gV2QoZSl7Y29uc3QgdD10eXBlb2YgZTtzd2l0Y2godCl7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZihlPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iYXJyYXkiO2NvbnN0IG49ZTtpZihuJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YobikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gbiYmbi5jb25zdHJ1Y3RvcilyZXR1cm4gbi5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gdH1mdW5jdGlvbiBWdCguLi5lKXtjb25zdFt0LG4sb109ZTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3ttZXNzYWdlOnQsY29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6b306ey4uLnR9fWZ1bmN0aW9uIHViKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0LG5dKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludCh0LDEwKSkpLm1hcCh0PT50WzFdKX1mdW5jdGlvbiBWZChlKXtjb25zdCB0PWF0b2IoZSksbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXT10LmNoYXJDb2RlQXQobyk7cmV0dXJuIG59ZnVuY3Rpb24gSmQoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTtyZXR1cm4gYnRvYSh0KX1mdW5jdGlvbiBkYihlKXtjb25zdCB0PWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIiksbj0iPSIucmVwZWF0KCg0LXQubGVuZ3RoJTQpJTQpO3JldHVybiBWZCh0K24pfWZ1bmN0aW9uIHBiKGUpe3JldHVybiBKZChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gaGIoZSl7Y29uc3QgdD1lLnJlcGxhY2UoL14weC8sIiIpO2lmKHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKW5bby8yXT1OdW1iZXIucGFyc2VJbnQodC5zbGljZShvLG8rMiksMTYpO3JldHVybiBufWZ1bmN0aW9uIG1iKGUpe3JldHVybiBBcnJheS5mcm9tKGUpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIGZie2NvbnN0cnVjdG9yKC4uLnQpe319ZnVuY3Rpb24gS2QoZSx0KXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvLmdldD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHsuLi5vLGVudW1lcmFibGU6ITF9KTpnYihlLG4sby52YWx1ZSl9fWZ1bmN0aW9uIFhlKGUsdCxuLG89ITApe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTpvLHZhbHVlOm59KSxufWZ1bmN0aW9uIE1zKGUsdCxuKXtyZXR1cm4gWGUoZSx0LG4sITEpfWZ1bmN0aW9uIFVuKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBYZSh0aGlzLG4sbyh0aGlzKSl9LHNldChzKXtYZSh0aGlzLG4scyl9fSl9cmV0dXJuIHR9ZnVuY3Rpb24gZ2IoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcz09bnVsbD9uOlhlKHRoaXMsdCxuLmJpbmQodGhpcykpfSxzZXQobyl7WGUodGhpcyx0LG8pfX0pfWZ1bmN0aW9uIGJiKGUsdCl7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQgaW4gbj92b2lkIDA6bn1sZXQgc2ksb3Q9ITE7Y29uc3QgdmI9e2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtvdD0hMH19O2Z1bmN0aW9uIEYoZSx0LG4pe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKGUuX3pvZCk7aWYodCBpbiBvJiZzaSE9PWUuX3pvZCl7c2k9dm9pZCAwO3JldHVybn1zaT1lLl96b2QsT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQsdmIpO2NvbnN0IHM9b3Q7b3Q9ITE7dHJ5e2NvbnN0IHI9bih0aGlzKTtyZXR1cm4gb3Q/ZGVsZXRlIHRoaXNbdF06T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KSxvdD1vdHx8cyxyfWNhdGNoKHIpe3Rocm93IGRlbGV0ZSB0aGlzW3RdLG90PW90fHxzLHJ9fSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnN9KX19KX1mdW5jdGlvbiBHZChlLHQsbixvKXtjb25zdCBzPWJiKGUsdCk7cyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2NvbnN0IHI9e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlPW4odGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlfSxzZXQocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6byx2YWx1ZTpyfSl9fSl9Y29uc3QgWWQ9In5jb25zdGFudENhdGNoIjtmdW5jdGlvbiBVaShlKXtjb25zdCB0PSgpPT5lO3JldHVybiB0W1lkXT0hMCx0fWNvbnN0IEhpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpqZCxDT05TVEFOVF9DQVRDSDpZZCxDbGFzczpmYixOVU1CRVJfRk9STUFUX1JBTkdFUzpaZCxhYm9ydGVkOnhlLGFsbG93c0V2YWw6UmQsYXNzZXJ0OlFnLGFzc2VydEVxdWFsOkpnLGFzc2VydElzOkdnLGFzc2VydE5ldmVyOllnLGFzc2VydE5vdEVxdWFsOktnLGFzc2lnblByb3A6UnQsYXR0YWNoU2NoZW1hOmdpLGJhc2U2NFRvVWludDhBcnJheTpWZCxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6ZGIsY2FjaGVkOkZuLGNhcHR1cmVTdGFja1RyYWNlOkJpLGNsZWFuRW51bTp1YixjbGVhblJlZ2V4Omx0LGNsb25lOmFlLGNsb25lRGVmOm5iLGNvZGVQb2ludExlbmd0aDpacyxjb25zdGFudENhdGNoOlVpLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6Y2IsZGVmaW5lTGF6eTpJZCxkZWZpbmVMYXp5SW50ZXJuYWw6RixkZXJpdmVkOlVuLGVzYzpQZCxlc2NhcGVSZWdleDpRZSxleHBsaWNpdGx5QWJvcnRlZDpIZCxleHRlbmQ6TGQsZmluYWxpemVJc3N1ZTpxZSxmbG9hdFNhZmVSZW1haW5kZXI6eGQsZ2V0RWxlbWVudEF0UGF0aDpvYixnZXRFbnVtVmFsdWVzOmhpLGdldExlbmd0aGFibGVPcmlnaW46anMsZ2V0UGFyc2VkVHlwZTphYixnZXRTaXphYmxlT3JpZ2luOk5zLGhleFRvVWludDhBcnJheTpoYixoaWRlOk1zLGluc3RhbGxMYXp5UHJvcDpHZCxpc09iamVjdDpXdCxpc1BsYWluT2JqZWN0OmR0LGlzc3VlOlZ0LGpvaW5WYWx1ZXM6bWksanNvblN0cmluZ2lmeVJlcGxhY2VyOnBzLG1lbWJlcnM6S2QsbWVyZ2U6RmQsbWVyZ2VEZWZzOnllLG5vcm1hbGl6ZVBhcmFtczp3LG51bGxpc2g6RGksbnVtS2V5czppYixvYmplY3RDbG9uZTplYixvbWl0OnFkLG9wdGlvbmFsS2V5czpOZCxvd246WGUscGFyc2VkVHlwZTpXZCxwYXJ0aWFsOmZpLHBpY2s6TWQscHJlZml4SXNzdWVzOlplLHByaW1pdGl2ZVR5cGVzOk9kLHByb21pc2VBbGxPYmplY3Q6c2IscHJvcGVydHlLZXlUeXBlczpocyxyYW5kb21TdHJpbmc6cmIscmF3U2hhcGU6RXMscmVxdWlyZWQ6VWQsc2FmZUV4dGVuZDpCZCxzaGFsbG93Q2xvbmU6UnMsc2x1Z2lmeTpFZCxzdHJpbmdpZnlQcmltaXRpdmU6RmksdG9ab2Q6UHMsdWludDhBcnJheVRvQmFzZTY0OkpkLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpwYix1aW50OEFycmF5VG9IZXg6bWIsdW53cmFwTWVzc2FnZTpNdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgSXU7Y29uc3QgV2k9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pLHJpPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX07bGV0IEF1PSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvcjpudWxsO2Z1bmN0aW9uIHliKGUpe2NvbnN0IHQ9QXU7aWYodCl7Y29uc3Qgbj10LnN0YWNrVHJhY2VMaW1pdDtpZih0eXBlb2Ygbj09Im51bWJlciIpe3RyeXt0LnN0YWNrVHJhY2VMaW1pdD0wfWNhdGNoe3JldHVybiBBdT1udWxsLG5ldyBlfXRyeXtyZXR1cm4gbmV3IGV9ZmluYWxseXt0LnN0YWNrVHJhY2VMaW1pdD1ufX19cmV0dXJuIG5ldyBlfWZ1bmN0aW9uIG0oZSx0LG4sbyl7Y29uc3Qgcz17fTtmdW5jdGlvbiByKGYpe3RoaXMuZGVmPWYsdGhpcy5jb25zdHI9aCx0aGlzLnRyYWl0cz1uZXcgU2V0fXIucHJvdG90eXBlPXM7Y29uc3QgaT1uLGE9aSYmbmV3IFdlYWtTZXQ7ZnVuY3Rpb24gdShmLCQpe2lmKGYuX3pvZCl7aWYoZi5fem9kLnRyYWl0cy5oYXMoZSkpcmV0dXJufWVsc2V7cmkudmFsdWU9bmV3IHIoJCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJfem9kIixyaSl9ZmluYWxseXtyaS52YWx1ZT12b2lkIDB9fWlmKGYuX3pvZC50cmFpdHMuYWRkKGUpLHQoZiwkKSxhKXtjb25zdCB6PU9iamVjdC5nZXRQcm90b3R5cGVPZihmKSxBPWYuX3pvZC5jb25zdHIucHJvdG90eXBlO2xldCB4PXo7Zm9yKDt4JiZ4IT09QTspeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoeCk7Y29uc3QgVD14Pz96O2EuaGFzKFQpfHwoYS5hZGQoVCksS2QoVCxpKSl9Y29uc3Qgaz1oLnByb3RvdHlwZTtmb3IoY29uc3QgeiBpbiBrKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLHopJiYoeiBpbiBmfHwoZlt6XT1rW3pdLmJpbmQoZikpKX1jb25zdCBkPW8/LlBhcmVudD8/T2JqZWN0O2NsYXNzIHAgZXh0ZW5kcyBke31PYmplY3QuZGVmaW5lUHJvcGVydHkocCwibmFtZSIse3ZhbHVlOmV9KTtmdW5jdGlvbiBoKGYpe2NvbnN0ICQ9bz8uUGFyZW50P3liKHApOnRoaXM7dSgkLGYpO2NvbnN0IGs9JC5fem9kLmRlZmVycmVkO2lmKGspe2Zvcihjb25zdCBBIG9mIGspQSgpOyQuX3pvZC5kZWZlcnJlZD12b2lkIDB9Y29uc3Qgej1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZz8ucG9zdFByb2Nlc3NvcjtyZXR1cm4geiYmeigkKSwkfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiaW5pdCIse3ZhbHVlOnV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmY9Pm8/LlBhcmVudCYmZiBpbnN0YW5jZW9mIG8uUGFyZW50PyEwOmY/Ll96b2Q/LnRyYWl0cz8uaGFzKGUpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIm5hbWUiLHt2YWx1ZTplfSksaH1jb25zdCBWaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIHV0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIHFzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke3R9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fShJdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/PyhJdS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IFNlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIGhlKGUpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKFNlLGUpLFNlfWZ1bmN0aW9uICRiKCl7Y29uc3QgZT10aGlzLl96b2Q7cmV0dXJuIGUubWVzc2FnZT8/KGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmRlZixwcywyKSksZS5tZXNzYWdlfWZ1bmN0aW9uIGtiKGUpe3RoaXMuX3pvZC5tZXNzYWdlPWV9Y29uc3Qgd2I9e2dldDokYixzZXQ6a2IsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LGlpPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX0sQ3U9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSksUWQ9KGUsdCk9PntlLm5hbWU9IiRab2RFcnJvciIsaWkudmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaXNzdWVzIixpaSksaWkudmFsdWU9dm9pZCAwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtZXNzYWdlIix3Yik7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7Q3UuaGFzKG4pfHwoQ3UuYWRkKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89KCk9PnRoaXMubWVzc2FnZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KSl9LFhkPW0oIiRab2RFcnJvciIsUWQpLFJlPW0oIiRab2RFcnJvciIsUWQsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBfYihlLHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHwodD09PSJfX3Byb3RvX18iP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4oKSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbdF09bigpKSxlW3RdfWZ1bmN0aW9uIExzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30sbz1bXTtmb3IoY29uc3QgcyBvZiBlLmlzc3VlcylzLnBhdGgubGVuZ3RoPjA/X2IobixzLnBhdGhbMF0sKCk9PltdKS5wdXNoKHQocykpOm8ucHVzaCh0KHMpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOm59fWZ1bmN0aW9uIERzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e19lcnJvcnM6W119LG89KHMscj1bXSk9Pntmb3IoY29uc3QgaSBvZiBzLmlzc3VlcylpZihpLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmkuZXJyb3JzLmxlbmd0aClpLmVycm9ycy5tYXAoYT0+byh7aXNzdWVzOmF9LFsuLi5yLC4uLmkucGF0aF0pKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmkuaXNzdWVzfSxbLi4uciwuLi5pLnBhdGhdKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczppLmlzc3Vlc30sWy4uLnIsLi4uaS5wYXRoXSk7ZWxzZXtjb25zdCBhPVsuLi5yLC4uLmkucGF0aF07aWYoYS5sZW5ndGg9PT0wKW4uX2Vycm9ycy5wdXNoKHQoaSkpO2Vsc2V7bGV0IHU9bixkPTA7Zm9yKDtkPGEubGVuZ3RoOyl7Y29uc3QgcD1hW2RdLGg9ZD09PWEubGVuZ3RoLTE7aWYocD09PSJfZXJyb3JzIil7aCYmdS5fZXJyb3JzLnB1c2godChpKSksZCsrO2NvbnRpbnVlfU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LHApfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodSxwLHt2YWx1ZTp7X2Vycm9yczpbXX0sZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBmPXVbcF07aCYmZi5fZXJyb3JzLnB1c2godChpKSksdT1mLGQrK319fX07cmV0dXJuIG8oZSksbn1mdW5jdGlvbiBKaShlLHQ9bj0+bi5tZXNzYWdlKXtjb25zdCBuPXtlcnJvcnM6W119LG89KHMscj1bXSk9Pnt2YXIgaTtmb3IoY29uc3QgYSBvZiBzLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAodT0+byh7aXNzdWVzOnV9LFsuLi5yLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uciwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLnIsLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCB1PVsuLi5yLC4uLmEucGF0aF07aWYodS5sZW5ndGg9PT0wKXtuLmVycm9ycy5wdXNoKHQoYSkpO2NvbnRpbnVlfWxldCBkPW4scD0wO2Zvcig7cDx1Lmxlbmd0aDspe2NvbnN0IGg9dVtwXSxmPXA9PT11Lmxlbmd0aC0xO3R5cGVvZiBoPT0ic3RyaW5nIj8oZC5wcm9wZXJ0aWVzPz8oZC5wcm9wZXJ0aWVzPXt9KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZC5wcm9wZXJ0aWVzLGgpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm9wZXJ0aWVzLGgse3ZhbHVlOntlcnJvcnM6W119LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZD1kLnByb3BlcnRpZXNbaF0pOihkLml0ZW1zPz8oZC5pdGVtcz1bXSksKGk9ZC5pdGVtcylbaF0/PyhpW2hdPXtlcnJvcnM6W119KSxkPWQuaXRlbXNbaF0pLGYmJmQuZXJyb3JzLnB1c2godChhKSkscCsrfX19O3JldHVybiBvKGUpLG59ZnVuY3Rpb24gZXAoZSl7Y29uc3QgdD1bXSxuPWUubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiBuKXR5cGVvZiBvPT0ibnVtYmVyIj90LnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj90LnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/dC5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KHQubGVuZ3RoJiZ0LnB1c2goIi4iKSx0LnB1c2gobykpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIEtpKGUpe2NvbnN0IHQ9W10sbj1bLi4uZS5pc3N1ZXNdLnNvcnQoKG8scyk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKHMucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2Ygbil0LnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmdC5wdXNoKGAgIOKGkiBhdCAke2VwKG8ucGF0aCl9YCk7cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIEJzKGUsdCl7cmV0dXJue2NhbGxlZTp0Py5jYWxsZWU/P2UsRXJyOnQ/LkVycn19Y29uc3QgSG49ZT0+e2NvbnN0IHQ9KG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6byxpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB1dDtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHU9bmV3KHI/LkVycj8/ZSkoYS5pc3N1ZXMubWFwKGQ9PnFlKGQsaSxoZSgpKSkpO3Rocm93IEJpKHUscj8uY2FsbGVlPz90KSx1fXJldHVybiBhLnZhbHVlfTtyZXR1cm4gdH0sYmk9SG4oUmUpLFduPWU9Pntjb25zdCB0PWFzeW5jKG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOm8saXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCB1PW5ldyhyPy5FcnI/P2UpKGEuaXNzdWVzLm1hcChkPT5xZShkLGksaGUoKSkpKTt0aHJvdyBCaSh1LHI/LmNhbGxlZT8/dCksdX1yZXR1cm4gYS52YWx1ZX07cmV0dXJuIHR9LHZpPVduKFJlKSxWbj1lPT4odCxuLG8pPT57Y29uc3Qgcz1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO2lmKHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB1dDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoP25wKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sdHA9Vm4oUmUpO2Z1bmN0aW9uIG5wKGUsdCxuKXtsZXQgbztyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtyZXR1cm4gb3x8KG89bmV3IGUodC5tYXAocz0+cWUocyxuLGhlKCkpKSksdD12b2lkIDAsbj12b2lkIDApLG99LHNldCBlcnJvcihzKXtvPXMsdD12b2lkIDAsbj12b2lkIDB9fX1jb25zdCBKbj1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZSYmKHI9YXdhaXQgciksci5pc3N1ZXMubGVuZ3RoP25wKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sU2I9Sm4oUmUpLFRiPVN5bWJvbC5mb3IoInpvZC5jb21waWxlLmludmFsaWQiKSx6Yj1TeW1ib2wuZm9yKCJ6b2QuY29tcGlsZS5mYWxsYmFjayIpLEZzPSgoZSx0LG4pPT57Y29uc3Qgbz1lLl96b2QuYmFnLnZhbGlkYXRvcjtpZihvIT09dm9pZCAwKXtpZihvKHQpIT09VGIpcmV0dXJuITA7aWYoby5kZWZpbml0ZT09PSEwJiZuPT09dm9pZCAwKXJldHVybiExfXJldHVybiB4YihlLHQsbil9KTtmdW5jdGlvbiB4YihlLHQsbil7Y29uc3Qgbz1uP3suLi5uLGFzeW5jOiExLGFib3J0RWFybHk6ITB9Onthc3luYzohMSxhYm9ydEVhcmx5OiEwfSxzPWUuX3pvZC5iYWcuZmFsbGJhY2tSdW47bGV0IHI7aWYocz8ob1t6Yl09ITAscj1zKHt2YWx1ZTp0LGlzc3VlczpbXX0sbykpOnI9ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG8pLHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB1dDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoPT09MH1jb25zdCBVcz1hc3luYyhlLHQsbik9Pntjb25zdCBvPW4/ey4uLm4sYXN5bmM6ITAsYWJvcnRFYXJseTohMH06e2FzeW5jOiEwLGFib3J0RWFybHk6ITB9O2xldCBzPWUuX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD09PTB9LEdpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT57Y29uc3QgYT1yP3suLi5yLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB0KG8scyxhLEJzKG4saSkpfTtyZXR1cm4gbn0sSWI9R2koUmUpLFlpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT50KG8scyxyLEJzKG4saSkpO3JldHVybiBufSxBYj1ZaShSZSksUWk9ZT0+e2NvbnN0IHQ9V24oZSksbj1hc3luYyhvLHMscixpKT0+e2NvbnN0IGE9cj97Li4ucixkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gYXdhaXQgdChvLHMsYSxCcyhuLGkpKX07cmV0dXJuIG59LENiPVFpKFJlKSxYaT1lPT57Y29uc3QgdD1XbihlKSxuPWFzeW5jKG8scyxyLGkpPT5hd2FpdCB0KG8scyxyLEJzKG4saSkpO3JldHVybiBufSxQYj1YaShSZSksZWE9ZT0+KHQsbixvKT0+e2NvbnN0IHM9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gVm4oZSkodCxuLHMpfSxFYj1lYShSZSksdGE9ZT0+KHQsbixvKT0+Vm4oZSkodCxuLG8pLFJiPXRhKFJlKSxuYT1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIEpuKGUpKHQsbixzKX0sT2I9bmEoUmUpLG9hPWU9PmFzeW5jKHQsbixvKT0+Sm4oZSkodCxuLG8pLE5iPW9hKFJlKSxvcD0vXltjQ11bMC05YS16XXs2LH0kLyxzcD0vXlswLTlhLXpdKyQvLHJwPS9eWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQvLGlwPS9eWzAtOWEtdkEtVl17MjB9JC8sYXA9L15bQS1aYS16MC05XXsyN30kLyxjcD0vXlthLXpBLVowLTlfLV17MjF9JC87ZnVuY3Rpb24gbHAoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bYS16QS1aMC05Xy1deyR7ZX19JGApfWNvbnN0IHVwPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLFpiPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sZHA9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLEp0PWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxqYj1KdCg0KSxNYj1KdCg2KSxxYj1KdCg3KSxwcD0vXig/OltBLVphLXowLTlfJytcLV0rXC4pKltBLVphLXowLTlfJytcLV0qW0EtWmEtejAtOV8rLV1AKD86W0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxMYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxEYj0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxocD0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxCYj1ocCxGYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxVYj0iXig/PVtcXHNcXFNdKltcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxccHtSZWdpb25hbF9JbmRpY2F0b3J9XFx1MjBFM10pW1xccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9XFxwe0Vtb2ppX0NvbXBvbmVudH1dKyQiO2Z1bmN0aW9uIG1wKCl7cmV0dXJuIG5ldyBSZWdFeHAoVWIsInUiKX1jb25zdCBmcD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sZ3A9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxicD1lPT57Y29uc3QgdD1RZShlPz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke3R9KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke3R9KXs1fVswLTlhLWZdezJ9JGApfSx2cD0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8seXA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sSGI9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sV2I9L14oPzpbQS1aYS16MC05Xy1dezR9KSooPzpbQS1aYS16MC05Xy1dezIsM30pPyQvLCRwPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxrcD0vXig/PS57MSwyNTN9JCkoW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsNjN9JC8sc2E9L15odHRwcz8kLyx3cD0vXlwrWzEtOV1cZHs2LDE0fSQvLHJhPS9eXGQoPzpbIC1dP1xkKXsxMSwxOH0kLyxfcD0vXig/OkFFRHxBRk58QUxMfEFNRHxBT0F8QVJTfEFVRHxBV0d8QVpOfEJBTXxCQkR8QkRUfEJIRHxCSUZ8Qk1EfEJORHxCT0J8Qk9WfEJSTHxCU0R8QlROfEJXUHxCWU58QlpEfENBRHxDREZ8Q0hFfENIRnxDSFd8Q0xGfENMUHxDTll8Q09QfENPVXxDUkN8Q1VQfENWRXxDWkt8REpGfERLS3xET1B8RFpEfEVHUHxFUk58RVRCfEVVUnxGSkR8RktQfEdCUHxHRUx8R0hTfEdJUHxHTUR8R05GfEdUUXxHWUR8SEtEfEhOTHxIVEd8SFVGfElEUnxJTFN8SU5SfElRRHxJUlJ8SVNLfEpNRHxKT0R8SlBZfEtFU3xLR1N8S0hSfEtNRnxLUFd8S1JXfEtXRHxLWUR8S1pUfExBS3xMQlB8TEtSfExSRHxMU0x8TFlEfE1BRHxNREx8TUdBfE1LRHxNTUt8TU5UfE1PUHxNUlV8TVVSfE1WUnxNV0t8TVhOfE1YVnxNWVJ8TVpOfE5BRHxOR058TklPfE5PS3xOUFJ8TlpEfE9NUnxQQUJ8UEVOfFBHS3xQSFB8UEtSfFBMTnxQWUd8UUFSfFJPTnxSU0R8UlVCfFJXRnxTQVJ8U0JEfFNDUnxTREd8U0VLfFNHRHxTSFB8U0xFfFNPU3xTUkR8U1NQfFNUTnxTVkN8U1lQfFNaTHxUSEJ8VEpTfFRNVHxUTkR8VE9QfFRSWXxUVER8VFdEfFRaU3xVQUh8VUdYfFVTRHxVU058VVlJfFVZVXxVWVd8VVpTfFZFRHxWRVN8Vk5EfFZVVnxXU1R8WEFEfFhBRnxYQUd8WEFVfFhCQXxYQkJ8WEJDfFhCRHxYQ0R8WENHfFhEUnxYT0Z8WFBEfFhQRnxYUFR8WFNVfFhUU3xYVUF8WFhYfFlFUnxaQVJ8Wk1XfFpXRykkLyxpYT0vXltBLVpdezJ9KD8hMDB8MDF8OTkpXGR7Mn1bQS1aMC05XXsxMSwzMH0kLyxTcD0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSI7ZnVuY3Rpb24gVmIoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2V9JGApfWNvbnN0IFRwPVZiKFNwKTtmdW5jdGlvbiB5aShlKXtjb25zdCB0PSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgZS5wcmVjaXNpb249PSJudW1iZXIiP2UucHJlY2lzaW9uPT09LTE/YCR7dH1gOmUucHJlY2lzaW9uPT09MD9gJHt0fTpbMC01XVxcZGA6YCR7dH06WzAtNV1cXGRcXC5cXGR7JHtlLnByZWNpc2lvbn19YDplLnNlY29uZHM/YCR7dH06WzAtNV1cXGQoPzpcXC5cXGQrKT9gOmAke3R9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHpwKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHt5aShlKX0kYCl9ZnVuY3Rpb24geHAoZSl7Y29uc3QgdD1bIloiXTtlLm9mZnNldCYmdC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBuPWAke3lpKHtwcmVjaXNpb246ZS5wcmVjaXNpb24sc2Vjb25kczohMH0pfSg/OiR7dC5qb2luKCJ8Iil9KWAsbz1lLmxvY2FsP2Ake259fCR7eWkoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pfWA6bjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7U3B9VCg/OiR7b30pJGApfWNvbnN0IElwPS9eW1xzXFNdezAsfSQvLEFwPWU9Pntjb25zdCB0PWU/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dH0kYCl9LENwPS9eLT9cZCtuPyQvLFBwPS9eLT9cZCskLyxIcz0vXi0/XGQrKD86XC5cZCspPyQvLEVwPS9eKD86dHJ1ZXxmYWxzZSkkL2ksUnA9L15udWxsJC9pLE9wPS9edW5kZWZpbmVkJC9pLE5wPS9eW15BLVpdKiQvLFpwPS9eW15hLXpdKiQvLGpwPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gS24oZSx0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtlfX0ke3R9JGApfWZ1bmN0aW9uIEduKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske2V9fSRgKX1jb25zdCBKYj0vXlswLTlhLWZBLUZdezMyfSQvLEtiPUtuKDIyLCI9PSIpLEdiPUduKDIyKSxZYj0vXlswLTlhLWZBLUZdezQwfSQvLFFiPUtuKDI3LCI9IiksWGI9R24oMjcpLGV2PS9eWzAtOWEtZkEtRl17NjR9JC8sdHY9S24oNDMsIj0iKSxudj1Hbig0Myksb3Y9L15bMC05YS1mQS1GXXs5Nn0kLyxzdj1Lbig2NCwiIikscnY9R24oNjQpLGl2PS9eWzAtOWEtZkEtRl17MTI4fSQvLGF2PUtuKDg2LCI9PSIpLGN2PUduKDg2KSxXcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYW55U3RyaW5nOklwLGJhc2U2NDpIYixiYXNlNjR1cmw6V2IsYmlnaW50OkNwLGJvb2xlYW46RXAsYnJvd3NlckVtYWlsOkZiLGNpZHJ2NDp2cCxjaWRydjY6eXAsY3JlZGl0Q2FyZDpyYSxjdWlkOm9wLGN1aWQyOnNwLGN1cnJlbmN5Q29kZTpfcCxkYXRlOlRwLGRhdGV0aW1lOnhwLGRvbWFpbjprcCxkdXJhdGlvbjp1cCxlMTY0OndwLGVtYWlsOnBwLGVtb2ppOm1wLGV4dGVuZGVkRHVyYXRpb246WmIsZ3VpZDpkcCxoZXg6anAsaG9zdG5hbWU6JHAsaHRtbDVFbWFpbDpMYixodHRwUHJvdG9jb2w6c2EsaWJhbjppYSxpZG5FbWFpbDpCYixpbnRlZ2VyOlBwLGlwdjQ6ZnAsaXB2NjpncCxrc3VpZDphcCxsb3dlcmNhc2U6TnAsbWFjOmJwLG1kNV9iYXNlNjQ6S2IsbWQ1X2Jhc2U2NHVybDpHYixtZDVfaGV4OkpiLG5hbm9pZDpjcCxuYW5vaWRPZkxlbmd0aDpscCxudWxsOlJwLG51bWJlcjpIcyxyZmM1MzIyRW1haWw6RGIsc2hhMV9iYXNlNjQ6UWIsc2hhMV9iYXNlNjR1cmw6WGIsc2hhMV9oZXg6WWIsc2hhMjU2X2Jhc2U2NDp0dixzaGEyNTZfYmFzZTY0dXJsOm52LHNoYTI1Nl9oZXg6ZXYsc2hhMzg0X2Jhc2U2NDpzdixzaGEzODRfYmFzZTY0dXJsOnJ2LHNoYTM4NF9oZXg6b3Ysc2hhNTEyX2Jhc2U2NDphdixzaGE1MTJfYmFzZTY0dXJsOmN2LHNoYTUxMl9oZXg6aXYsc3RyaW5nOkFwLHRpbWU6enAsdWxpZDpycCx1bmRlZmluZWQ6T3AsdW5pY29kZUVtYWlsOmhwLHVwcGVyY2FzZTpacCx1dWlkOkp0LHV1aWQ0OmpiLHV1aWQ2Ok1iLHV1aWQ3OnFiLHhpZDppcH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxpZT1tKCIkWm9kQ2hlY2siLChlLHQpPT57dmFyIG47ZS5fem9kPz8oZS5fem9kPXt9KSxlLl96b2QuZGVmPXQsKG49ZS5fem9kKS5vbmF0dGFjaD8/KG4ub25hdHRhY2g9W10pfSksYWE9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hRGkodCkmJnQuc2l6ZSE9PXZvaWQgMH0sY2E9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hRGkodCkmJnQubGVuZ3RoIT09dm9pZCAwfSxtcz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxsYT1tKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsdCk9PntpZS5pbml0KGUsdCk7Y29uc3Qgbj1tc1t0eXBlb2YgdC52YWx1ZV07ZS5fem9kLmNoZWNrPW89PnsodC5pbmNsdXNpdmU/by52YWx1ZTw9dC52YWx1ZTpvLnZhbHVlPHQudmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46bXNbdHlwZW9mIG8udmFsdWVdPz9uLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksdWE9bSgiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49bXNbdHlwZW9mIHQudmFsdWVdO2UuX3pvZC5jaGVjaz1vPT57KHQuaW5jbHVzaXZlP28udmFsdWU+PXQudmFsdWU6by52YWx1ZT50LnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOm1zW3R5cGVvZiBvLnZhbHVlXT8/bixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTXA9bSgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKGUsdCk9PntpZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntpZih0eXBlb2Ygbi52YWx1ZSE9dHlwZW9mIHQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSE9PUJpZ0ludCgwKSYmbi52YWx1ZSV0LnZhbHVlPT09QmlnSW50KDApOnhkKG4udmFsdWUsdC52YWx1ZSk9PT0wKXx8bi5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBuLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjp0LnZhbHVlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSkscXA9bSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSx0KT0+e2llLmluaXQoZSx0KSx0LmZvcm1hdD10LmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IG49dC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPW4/ImludCI6Im51bWJlciIsW3Mscl09WmRbdC5mb3JtYXRdO2UuX3pvZC5jaGVjaz1pPT57Y29uc3QgYT1pLnZhbHVlO2lmKG4pe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDp0LmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmEsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihhKSl7YT4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohdC5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufX1hPHMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxhPnImJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19iaWciLG1heGltdW06cixpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTHA9bSgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwoZSx0KT0+e2llLmluaXQoZSx0KTtjb25zdFtuLG9dPWpkW3QuZm9ybWF0XTtlLl96b2QuY2hlY2s9cz0+e2NvbnN0IHI9cy52YWx1ZTtyPG4mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxyPm8mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRHA9bSgiJFpvZENoZWNrTWF4U2l6ZSIsKGUsdCk9Pnt2YXIgbjtpZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1hYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWU7cy5zaXplPD10Lm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpOcyhzKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxCcD1tKCIkWm9kQ2hlY2tNaW5TaXplIiwoZSx0KT0+e3ZhciBuO2llLmluaXQoZSx0KSwobj1lLl96b2QuZGVmKS53aGVuPz8obi53aGVuPWFhKSxlLl96b2QuY2hlY2s9bz0+e2NvbnN0IHM9by52YWx1ZTtzLnNpemU+PXQubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOk5zKHMpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OnMsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRnA9bSgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKGUsdCk9Pnt2YXIgbjtpZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1hYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWUscj1zLnNpemU7aWYocj09PXQuc2l6ZSlyZXR1cm47Y29uc3QgaT1yPnQuc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46TnMocyksLi4uaT97Y29kZToidG9vX2JpZyIsbWF4aW11bTp0LnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dC5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxVcD1tKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLChlLHQpPT57dmFyIG47aWUuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49Y2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj50Lm1heGltdW0/WnMocyk6cik8PXQubWF4aW11bSlyZXR1cm47Y29uc3QgYT1qcyhzKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxIcD1tKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLChlLHQpPT57dmFyIG47aWUuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49Y2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj49dC5taW5pbXVtJiZyPHQubWluaW11bSoyP1pzKHMpOnIpPj10Lm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9anMocyk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxXcD1tKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLHQpPT57dmFyIG47aWUuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49Y2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGgsaT10eXBlb2Ygcz09InN0cmluZyImJnI+PXQubGVuZ3RoJiZyPD10Lmxlbmd0aCoyP1pzKHMpOnI7aWYoaT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBhPWpzKHMpLHU9aT50Lmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi51P3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxZbj1tKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLHQpPT57dmFyIG4sbztpZS5pbml0KGUsdCksdC5wYXR0ZXJuPyhuPWUuX3pvZCkuY2hlY2s/PyhuLmNoZWNrPXM9Pnt0LnBhdHRlcm4ubGFzdEluZGV4PTAsIXQucGF0dGVybi50ZXN0KHMudmFsdWUpJiZzLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDp0LmZvcm1hdCxpbnB1dDpzLnZhbHVlLC4uLnQucGF0dGVybj97cGF0dGVybjp0LnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9KToobz1lLl96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksVnA9bSgiJFpvZENoZWNrUmVnZXgiLChlLHQpPT57WW4uaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57dC5wYXR0ZXJuLmxhc3RJbmRleD0wLCF0LnBhdHRlcm4udGVzdChuLnZhbHVlKSYmbi5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpuLnZhbHVlLHBhdHRlcm46dC5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksSnA9bSgiJFpvZENoZWNrTG93ZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1OcCksWW4uaW5pdChlLHQpfSksS3A9bSgiJFpvZENoZWNrVXBwZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1acCksWW4uaW5pdChlLHQpfSksR3A9bSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49UWUodC5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiB0LnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHt0LnBvc2l0aW9ufSx9JHtufWA6bik7dC5wYXR0ZXJuPW8sZS5fem9kLmNoZWNrPXM9PntzLnZhbHVlLmluY2x1ZGVzKHQuaW5jbHVkZXMsdC5wb3NpdGlvbil8fHMuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6dC5pbmNsdWRlcyxpbnB1dDpzLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLFlwPW0oIiRab2RDaGVja1N0YXJ0c1dpdGgiLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49bmV3IFJlZ0V4cChgXiR7UWUodC5wcmVmaXgpfS4qYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW4pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKHQucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6dC5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxRcD1tKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsdCk9PntpZS5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgUmVnRXhwKGAuKiR7UWUodC5zdWZmaXgpfSRgKTt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49biksZS5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKHQuc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnQuc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gZnMoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSl9Y29uc3QgWHA9bSgiJFpvZENoZWNrUHJvcGVydHkiLChlLHQpPT57aWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz10LnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZVt0LnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKHM9PmZzKHMsbix0LnByb3BlcnR5KSk7ZnMobyxuLHQucHJvcGVydHkpfX0pLGVoPW0oIiRab2RDaGVja1Byb3BlcnRpZXMiLChlLHQpPT57aWUuaW5pdChlLHQpLE1zKGUsU3ltYm9sLml0ZXJhdG9yLGZ1bmN0aW9uKigpe3lpZWxkIGV9KTtsZXQgbjtlLl96b2QuY2hlY2s9bz0+e2lmKG8udmFsdWU9PW51bGwpe28uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6by52YWx1ZSxpbnN0OmV9KTtyZXR1cm59bj8/KG49UmVmbGVjdC5vd25LZXlzKHQuc2hhcGUpLm1hcChpPT5baSx0LnNoYXBlW2ldXSkpO2NvbnN0IHM9by52YWx1ZTtsZXQgcjtmb3IoY29uc3RbaSxhXW9mIG4pe2NvbnN0IHU9YS5fem9kLnJ1bih7dmFsdWU6c1tpXSxpc3N1ZXM6W119LHt9KTt1IGluc3RhbmNlb2YgUHJvbWlzZT8ocj8/KHI9W10pLHIucHVzaCh1LnRoZW4oZD0+ZnMoZCxvLGkpKSkpOmZzKHUsbyxpKX1pZihyKXJldHVybiBQcm9taXNlLmFsbChyKS50aGVuKCgpPT57fSl9fSksdGg9bSgiJFpvZENoZWNrTWltZVR5cGUiLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49bmV3IFNldCh0Lm1pbWUpO2UuX3pvZC5jaGVjaz1vPT57bi5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksbmg9bSgiJFpvZENoZWNrT3ZlcndyaXRlIiwoZSx0KT0+e2llLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e24udmFsdWU9dC50eChuLnZhbHVlKX19KTtjbGFzcyBvaHtjb25zdHJ1Y3Rvcih0PVtdLG49e30pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMuYXJncz10LHRoaXMuY2xvc2VkPW59aW5kZW50ZWQodCl7dGhpcy5pbmRlbnQrPTE7dHJ5e3QodGhpcyl9ZmluYWxseXt0aGlzLmluZGVudC09MX19d3JpdGUodCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3QodGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLHQodGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz10LnNwbGl0KGAKYCkuZmlsdGVyKGk9PmkpLHM9TWF0aC5taW4oLi4uby5tYXAoaT0+aS5sZW5ndGgtaS50cmltU3RhcnQoKS5sZW5ndGgpKSxyPW8ubWFwKGk9Pmkuc2xpY2UocykpLm1hcChpPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2kpO2Zvcihjb25zdCBpIG9mIHIpdGhpcy5jb250ZW50LnB1c2goaSl9Y29tcGlsZSgpe2NvbnN0IHQ9RnVuY3Rpb24sbj10aGlzPy5jb250ZW50Pz9bIiJdO3JldHVybiBuZXcgdCguLi5PYmplY3Qua2V5cyh0aGlzLmNsb3NlZCksYHJldHVybiBmdW5jdGlvbiAoJHt0aGlzLmFyZ3Muam9pbigiLCAiKX0pIHsKJHtuLmpvaW4oYApgKX0KfTtgKSguLi5PYmplY3QudmFsdWVzKHRoaXMuY2xvc2VkKSl9fWNvbnN0IHNoPXttYWpvcjo0LG1pbm9yOjYscGF0Y2g6NX0sTT1tKCIkWm9kVHlwZSIsKGUsdCk9Pnt2YXIgbjtlPz8oZT17fSksZS5fem9kLmRlZj10LGUuX3pvZC5iYWc9ZS5fem9kLmJhZ3x8e30sZS5fem9kLnZlcnNpb249c2g7Y29uc3Qgbz1lLl96b2QuZGVmLmNoZWNrcyxzPWUuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKT9bZSwuLi5vPz9bXV06bz8ubGVuZ3RoP1suLi5vXTpbXTtmb3IoY29uc3QgciBvZiBzKWZvcihjb25zdCBpIG9mIHIuX3pvZC5vbmF0dGFjaClpKGUpO2lmKHMubGVuZ3RoPT09MCkobj1lLl96b2QpLmRlZmVycmVkPz8obi5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57ZS5fem9kLnJ1bj1lLl96b2QucGFyc2V9KTtlbHNle2NvbnN0IHI9KGEsdSxkKT0+e2lmKGEubWVtbylyZXR1cm4gYTtsZXQgcD14ZShhKSxoO2Zvcihjb25zdCBmIG9mIHUpe2lmKGYuX3pvZC5kZWYud2hlbil7aWYoSGQoYSl8fCFmLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZihwKWNvbnRpbnVlO2NvbnN0ICQ9YS5pc3N1ZXMubGVuZ3RoLGs9Zi5fem9kLmNoZWNrKGEpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlJiZkPy5hc3luYz09PSExKXRocm93IG5ldyB1dDtpZihofHxrIGluc3RhbmNlb2YgUHJvbWlzZSloPShoPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgayxhLmlzc3Vlcy5sZW5ndGghPT0kJiYoZ2koYS5pc3N1ZXMsJCxlKSxwfHwocD14ZShhLCQpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PSQpY29udGludWU7Z2koYS5pc3N1ZXMsJCxlKSxwfHwocD14ZShhLCQpKX19cmV0dXJuIGg/aC50aGVuKCgpPT5hKTphfSxpPShhLHUsZCk9PntpZih4ZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgcD1yKHUscyxkKTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoZC5hc3luYz09PSExKXRocm93IG5ldyB1dDtyZXR1cm4gcC50aGVuKGg9PmUuX3pvZC5wYXJzZShoLGQpKX1yZXR1cm4gZS5fem9kLnBhcnNlKHAsZCl9O2UuX3pvZC5ydW49KGEsdSk9PntpZih1LnNraXBDaGVja3MpcmV0dXJuIGUuX3pvZC5wYXJzZShhLHUpO2lmKHUuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgcD1lLl96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4udSxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHAgaW5zdGFuY2VvZiBQcm9taXNlP3AudGhlbihoPT5pKGgsYSx1KSk6aShwLGEsdSl9Y29uc3QgZD1lLl96b2QucGFyc2UoYSx1KTtpZihkIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYodS5hc3luYz09PSExKXRocm93IG5ldyB1dDtyZXR1cm4gZC50aGVuKHA9PnIocCxzLHUpKX1yZXR1cm4gcihkLHMsdSl9fX0se2dldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIE1zKHRoaXMsIn5zdGFuZGFyZCIsZGEodGhpcykpfSxzZXQifnN0YW5kYXJkIihlKXtYZSh0aGlzLCJ+c3RhbmRhcmQiLGUpfX0pLHJoPShlLHQpPT5lLmlzc3Vlcy5sZW5ndGg/e2lzc3VlczplLmlzc3Vlcy5tYXAobj0+cWUobix0LGhlKCkpKX06e3ZhbHVlOmUudmFsdWV9O2FzeW5jIGZ1bmN0aW9uIGx2KGUsdCl7Y29uc3Qgbj17YXN5bmM6ITB9O3JldHVybiByaChhd2FpdCBlLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbiksbil9ZnVuY3Rpb24gZGEoZSl7cmV0dXJue3ZhbGlkYXRlOnQ9Pntjb25zdCBuPXthc3luYzohMX07dHJ5e2NvbnN0IG89ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG4pO2lmKCEobyBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiByaChvLG4pfWNhdGNoe31yZXR1cm4gbHYoZSx0KX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX19Y29uc3QgUW49bSgiJFpvZFN0cmluZyIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj10LnBhdHRlcm4/P0lwLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPVN0cmluZyhuLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiBuLnZhbHVlPT0ic3RyaW5nInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG59fSksdGU9bSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsdCk9PntZbi5pbml0KGUsdCksUW4uaW5pdChlLHQpfSksaWg9bSgiJFpvZEdVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWRwKSx0ZS5pbml0KGUsdCl9KSxhaD1tKCIkWm9kVVVJRCIsKGUsdCk9PntpZih0LnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bdC52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3QudmVyc2lvbn0iYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUp0KG8pKX1lbHNlIHQucGF0dGVybj8/KHQucGF0dGVybj1KdCgpKTt0ZS5pbml0KGUsdCl9KSxjaD1tKCIkWm9kRW1haWwiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXBwKSx0ZS5pbml0KGUsdCl9KSxwYT0xLFpuPTI7ZnVuY3Rpb24gaGEoZSl7dHJ5e3JldHVybiB0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIFVSTC5jYW5QYXJzZT09ImZ1bmN0aW9uIj9VUkwuY2FuUGFyc2UoZSk6KG5ldyBVUkwoZSksITApfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBsaChlLHQpe3JldHVybiEoIm5vcm1hbGl6ZSJpbiB0KSYmISgiaG9zdG5hbWUiaW4gdCkmJiEoInByb3RvY29sImluIHQpP2hhKGUpfHxabjp1aChlLHQpfWZ1bmN0aW9uIHVoKGUsdCl7aWYoIXQubm9ybWFsaXplJiZ0LnByb3RvY29sPy5zb3VyY2U9PT1zYS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChlKSlyZXR1cm4gcGE7dHJ5e2lmKHR5cGVvZiBVUkw8InUiKXtjb25zdCBuPVVSTDtpZih0eXBlb2Ygbi5wYXJzZT09ImZ1bmN0aW9uIilyZXR1cm4gbi5wYXJzZShlKT8/Wm59cmV0dXJuIG5ldyBVUkwoZSl9Y2F0Y2h7cmV0dXJuIFpufX1jb25zdCB1dj0vW1x0XG5ccl0vZztmdW5jdGlvbiAkaShlKXtyZXR1cm4gZS5yZXBsYWNlKHV2LCIiKX1mdW5jdGlvbiBkaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLmhvc3RuYW1lKX1mdW5jdGlvbiBwaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKX1jb25zdCBoaD1tKCIkWm9kVVJMIiwoZSx0KT0+e3RlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3RyeXtjb25zdCBvPW4udmFsdWUudHJpbSgpLHM9bGgobyx0KTtpZihzPT09cGEpe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pO3JldHVybn1pZihzPT09Wm4pe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KTtyZXR1cm59aWYocz09PSEwKXtuLnZhbHVlPSRpKG8pO3JldHVybn10Lmhvc3RuYW1lJiYhZGgocyx0Lmhvc3RuYW1lKSYmbi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOnQuaG9zdG5hbWUuc291cmNlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSksdC5wcm90b2NvbCYmIXBoKHMsdC5wcm90b2NvbCkmJm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjp0LnByb3RvY29sLnNvdXJjZSxpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pLG4udmFsdWU9dC5ub3JtYWxpemU/cy5ocmVmOiRpKG8pO3JldHVybn1jYXRjaHtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fX0pLG1oPW0oIiRab2RFbW9qaSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49bXAoKSksdGUuaW5pdChlLHQpfSksZmg9bSgiJFpvZE5hbm9JRCIsKGUsdCk9PntpZih0Lmxlbmd0aCE9PXZvaWQgMCYmKCFOdW1iZXIuaXNJbnRlZ2VyKHQubGVuZ3RoKXx8dC5sZW5ndGg8MSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5hbm9pZCBsZW5ndGg6ICR7dC5sZW5ndGh9YCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXQubGVuZ3RoPT09dm9pZCAwP2NwOmxwKHQubGVuZ3RoKSksdGUuaW5pdChlLHQpfSksZ2g9bSgiJFpvZENVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW9wKSx0ZS5pbml0KGUsdCl9KSxiaD1tKCIkWm9kQ1VJRDIiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXNwKSx0ZS5pbml0KGUsdCl9KSx2aD1tKCIkWm9kVUxJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49cnApLHRlLmluaXQoZSx0KX0pLHloPW0oIiRab2RYSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWlwKSx0ZS5pbml0KGUsdCl9KSwkaD1tKCIkWm9kS1NVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWFwKSx0ZS5pbml0KGUsdCl9KSxraD1tKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXhwKHQpKSx0ZS5pbml0KGUsdCl9KSx3aD1tKCIkWm9kSVNPRGF0ZSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49VHApLHRlLmluaXQoZSx0KX0pLF9oPW0oIiRab2RJU09UaW1lIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj16cCh0KSksdGUuaW5pdChlLHQpfSksU2g9bSgiJFpvZElTT0R1cmF0aW9uIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj11cCksdGUuaW5pdChlLHQpfSksVGg9bSgiJFpvZElQdjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWZwKSx0ZS5pbml0KGUsdCl9KSxkdj0vXlswLTlhLWZBLUY6Ll0rJC87ZnVuY3Rpb24gbWEoZSl7cmV0dXJuIGR2LnRlc3QoZSk/aGEoYGh0dHA6Ly9bJHtlfV1gKTohMX1jb25zdCB6aD1tKCIkWm9kSVB2NiIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49Z3ApLHRlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e21hKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLHhoPW0oIiRab2RNQUMiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWJwKHQuZGVsaW1pdGVyKSksdGUuaW5pdChlLHQpfSksSWg9bSgiJFpvZENJRFJ2NCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49dnApLHRlLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEFoKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLyIpO2lmKHQubGVuZ3RoIT09MilyZXR1cm4hMTtjb25zdFtuLG9dPXQ7aWYoIW8pcmV0dXJuITE7Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuYCR7c31gIT09b3x8czwwfHxzPjEyOD8hMTptYShuKX1jb25zdCBDaD1tKCIkWm9kQ0lEUnY2IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj15cCksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57QWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KTtmdW5jdGlvbiBmYShlKXtpZihlPT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KGUpfHxlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IFBoPS9eWzAtOWEtekEtWisvXSo9ezAsMn0kLyxFaD1tKCIkWm9kQmFzZTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1QaCksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57ZmEobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxnYT0vXltBLVphLXowLTlfLV0qJC87ZnVuY3Rpb24gUmgoZSl7aWYoIWdhLnRlc3QoZSkpcmV0dXJuITE7Y29uc3QgdD1lLnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLG49dC5wYWRFbmQoTWF0aC5jZWlsKHQubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gZmEobil9Y29uc3QgT2g9bSgiJFpvZEJhc2U2NFVSTCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49Z2EpLHRlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e1JoKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTmg9bSgiJFpvZEUxNjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXdwKSx0ZS5pbml0KGUsdCl9KSxwdj0vWy0gXS9nO2Z1bmN0aW9uIGh2KGUpe2xldCB0PWUubGVuZ3RoLG49MSxvPTA7Zm9yKDt0Oyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoLS10KS00ODtuXj0xLG8rPW4/WzAsMiw0LDYsOCwxLDMsNSw3LDldW3NdOnN9cmV0dXJuIG8lMTA9PT0wfWZ1bmN0aW9uIFpoKGUpe3JldHVybiByYS50ZXN0KGUpP2h2KGUucmVwbGFjZShwdiwiIikpOiExfWNvbnN0IGpoPW0oIiRab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1yYSksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Wmgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNyZWRpdF9jYXJkIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pO2Z1bmN0aW9uIG12KGUpe2xldCB0PTA7Y29uc3Qgbj1lLmxlbmd0aDtmb3IobGV0IG89NDtvPG47bysrKXtjb25zdCBzPWUuY2hhckNvZGVBdChvKTt0PShzPj02NT90KjEwMCsocy01NSk6dCoxMCsocy00OCkpJTk3fWZvcihsZXQgbz0wO288NDtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO3Q9KHM+PTY1P3QqMTAwKyhzLTU1KTp0KjEwKyhzLTQ4KSklOTd9cmV0dXJuIHQ9PT0xfWZ1bmN0aW9uIE1oKGUpe3JldHVybiBpYS50ZXN0KGUpP212KGUpOiExfWNvbnN0IHFoPW0oIiRab2RJQkFOIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1pYSksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57TWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImliYW4iLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gTGgoZSx0PW51bGwpe3RyeXtjb25zdCBuPWUuc3BsaXQoIi4iKTtpZihuLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109bjtpZighbylyZXR1cm4hMTtjb25zdCBzPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIHMmJnM/LnR5cCE9PSJKV1QifHwhcy5hbGd8fHQmJighKCJhbGciaW4gcyl8fHMuYWxnIT09dCkpfWNhdGNoe3JldHVybiExfX1jb25zdCBEaD1tKCIkWm9kSldUIiwoZSx0KT0+e3RlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e0xoKG4udmFsdWUsdC5hbGcpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksQmg9bSgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9Pnt0ZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt0LmZuKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnQuZm9ybWF0LGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksYmE9bSgiJFpvZE51bWJlciIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1IcyxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT1OdW1iZXIobi52YWx1ZSl9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtpZih0eXBlb2Ygcz09Im51bWJlciImJiFOdW1iZXIuaXNOYU4ocykmJk51bWJlci5pc0Zpbml0ZShzKSlyZXR1cm4gbjtjb25zdCByPXR5cGVvZiBzPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4ocyk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKHMpP3ZvaWQgMDpTdHJpbmcocyk6dm9pZCAwO3JldHVybiBuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplLC4uLnI/e3JlY2VpdmVkOnJ9Ont9fSksbn19KSxGaD1tKCIkWm9kTnVtYmVyRm9ybWF0IiwoZSx0KT0+e3FwLmluaXQoZSx0KSxiYS5pbml0KGUsdCl9KSx2YT1tKCIkWm9kQm9vbGVhbiIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1FcCxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT0hIW4udmFsdWV9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJib29sZWFuInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLHlhPW0oIiRab2RCaWdJbnQiLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49Q3AsZS5fem9kLnBhcnNlPShuLG8pPT57aWYodC5jb2VyY2UpdHJ5e24udmFsdWU9QmlnSW50KG4udmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIG4udmFsdWU9PSJiaWdpbnQifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbn19KSxVaD1tKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSx0KT0+e0xwLmluaXQoZSx0KSx5YS5pbml0KGUsdCl9KSxIaD1tKCIkWm9kU3ltYm9sIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJzeW1ib2wifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxXaD1tKCIkWm9kVW5kZWZpbmVkIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPU9wLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz4idSJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFZoPW0oIiRab2ROdWxsIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPVJwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gcz09PW51bGx8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxKaD1tKCIkWm9kQW55IiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT1uPT5ufSksS2g9bSgiJFpvZFVua25vd24iLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPW49Pm59KSxHaD1tKCIkWm9kTmV2ZXIiLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT4obi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbil9KSxZaD1tKCIkWm9kVm9pZCIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBzPiJ1Inx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFFoPW0oIiRab2REYXRlIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPW5ldyBEYXRlKG4udmFsdWUpfWNhdGNoe31jb25zdCBzPW4udmFsdWUscj1zIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gciYmIU51bWJlci5pc05hTihzLmdldFRpbWUoKSl8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsLi4ucj97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6ZX0pLG59fSk7ZnVuY3Rpb24gUHUoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSksdC52YWx1ZVtuXT1lLnZhbHVlfWNvbnN0IFhoPW0oIiRab2RBcnJheSIsKGUsdCk9PntNLmluaXQoZSx0KTtjb25zdCBuPVNlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLGluc3Q6ZX0pLG87by52YWx1ZT1uP24uYWxsb2MoZSxvLEFycmF5KHIubGVuZ3RoKSxzKTpBcnJheShyLmxlbmd0aCk7Y29uc3QgaT1bXSxhPXM/LmFib3J0RWFybHk7Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2NvbnN0IGQ9clt1XSxwPXQuZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKWkucHVzaChwLnRoZW4oaD0+UHUoaCxvLHUpKSk7ZWxzZSBpZihQdShwLG8sdSksYSYmcC5pc3N1ZXMubGVuZ3RoIT09MCYmeGUocCkpYnJlYWt9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gZ3MoZSx0LG4sbyxzLHIpe2NvbnN0IGk9biBpbiBvLGE9cj09PSJvcHRpb25hbCI7aWYoISghaSYmYSYmcz09PSJvcHRpb25hbCIpKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKHMhPT12b2lkIDAmJmEmJiFpKXJldHVybjt0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKX1pZighaSYmcz09PXZvaWQgMCl7ZS5pc3N1ZXMubGVuZ3RofHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W25dfSk7cmV0dXJufWUudmFsdWU9PT12b2lkIDA/KGl8fHM9PT0iZGVmYXVsdGVkIiYmIWEpJiYodC52YWx1ZVtuXT12b2lkIDApOnQudmFsdWVbbl09ZS52YWx1ZX19Y29uc3QgZnY9W107ZnVuY3Rpb24gZW0oZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlLnNoYXBlKSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZS5zaGFwZSksbz1uLmxlbmd0aD9uOmZ2LHM9by5sZW5ndGg/Wy4uLnQsLi4ub106dDtmb3IoY29uc3QgaSBvZiBzKWlmKCFlLnNoYXBlPy5baV0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtTdHJpbmcoaSl9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1OZChlLnNoYXBlKTtyZXR1cm57Li4uZSxhbGxLZXlzOnMsc3ltYm9sS2V5czpvLGtleVNldDpuZXcgU2V0KHQpLG51bUtleXM6dC5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIHRtKGUsdCxuLG8scyxyLGkpe2NvbnN0IGE9W10sdT1zLmtleVNldCxkPXMuY2F0Y2hhbGwuX3pvZCxwPWQuZGVmLnR5cGUsaD1kLm9wdGluLGY9ZC5vcHRvdXQ7bGV0ICQ9MDtmb3IoY29uc3QgayBpbiB0KXtpZihpJiZuLmlzc3Vlcy5sZW5ndGghPT0kKXtpZih4ZShuLCQpKWJyZWFrOyQ9bi5pc3N1ZXMubGVuZ3RofWlmKHUuaGFzKGspKWNvbnRpbnVlO2lmKGs9PT0iX19wcm90b19fIil7cD09PSJuZXZlciImJmEucHVzaChrKTtjb250aW51ZX1pZihwPT09Im5ldmVyIil7YS5wdXNoKGspO2NvbnRpbnVlfWNvbnN0IHo9ZC5ydW4oe3ZhbHVlOnRba10saXNzdWVzOltdfSxvKTt6IGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goei50aGVuKEE9PmdzKEEsbixrLHQsaCxmKSkpOmdzKHosbixrLHQsaCxmKX1yZXR1cm4gYS5sZW5ndGgmJm4uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6dCxpbnN0OnIsY29udGludWU6ITB9KSxlLmxlbmd0aD9Qcm9taXNlLmFsbChlKS50aGVuKCgpPT5uKTpufWNvbnN0IG5tPW0oIiRab2RPYmplY3QiLChlLHQpPT57TS5pbml0KGUsdCk7Y29uc3Qgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsInNoYXBlIiksbz1uPy5nZXQ/bi5nZXQucmF3OnQuc2hhcGU/P3t9O2lmKG8pe2NvbnN0IGQ9KCk9Pntjb25zdCBwPXsuLi5vfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNoYXBlIix7dmFsdWU6cH0pLGQucmF3PXAscH07ZC5yYXc9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2hhcGUiLHtnZXQ6ZH0pfWNvbnN0IHM9Rm4oKCk9PmVtKHQpKTtGKGUsInByb3BWYWx1ZXMiLGQ9Pntjb25zdCBwPWQuZGVmLnNoYXBlLGg9e307Zm9yKGNvbnN0IGYgaW4gcCl7Y29uc3QgJD1wW2ZdLl96b2Q7aWYoJC52YWx1ZXMpe09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLGYpfHxSdChoLGYsbmV3IFNldCk7Zm9yKGNvbnN0IGsgb2YgJC52YWx1ZXMpaFtmXS5hZGQoayk7JC5vcHRpbiE9PXZvaWQgMCYmaFtmXS5hZGQodm9pZCAwKX19cmV0dXJuIGh9KTtjb25zdCByPVd0LGk9dC5jYXRjaGFsbDtsZXQgYTtjb25zdCB1PVNlLm1lbW9pemVyO3U/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KGQscCk9PnthPz8oYT1zLnZhbHVlKTtjb25zdCBoPWQudmFsdWU7aWYoIXIoaCkpcmV0dXJuIGQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCxpbnN0OmV9KSxkO2QudmFsdWU9dT91LmFsbG9jKGUsZCx7fSxwKTp7fTtjb25zdCBmPVtdLCQ9YS5zaGFwZSxrPXA/LmFib3J0RWFybHk7bGV0IHo9ZC5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCBBIG9mIGEuYWxsS2V5cyl7aWYoayYmZC5pc3N1ZXMubGVuZ3RoIT09eil7aWYoeGUoZCx6KSlicmVhazt6PWQuaXNzdWVzLmxlbmd0aH1pZihBPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgeD0kW0FdLFQ9eC5fem9kLm9wdGluLFo9eC5fem9kLm9wdG91dCxzZT14Ll96b2QucnVuKHt2YWx1ZTpoW0FdLGlzc3VlczpbXX0scCk7c2UgaW5zdGFuY2VvZiBQcm9taXNlP2YucHVzaChzZS50aGVuKEo9PmdzKEosZCxBLGgsVCxaKSkpOmdzKHNlLGQsQSxoLFQsWil9cmV0dXJuIGk/dG0oZixoLGQscCxzLnZhbHVlLGUsaz09PSEwKTpmLmxlbmd0aD9Qcm9taXNlLmFsbChmKS50aGVuKCgpPT5kKTpkfX0pLG9tPW0oIiRab2RPYmplY3RKSVQiLChlLHQpPT57bm0uaW5pdChlLHQpO2NvbnN0IG49ZS5fem9kLnBhcnNlLG89Rm4oKCk9PmVtKHQpKSxzPVNlLm1lbW9pemVyLHI9JD0+e2NvbnN0IGs9by52YWx1ZSx6PWsuc3ltYm9sS2V5cyxBPW5ldyBvaChbInBheWxvYWQiLCJjdHgiXSx7c2hhcGU6JCxpbnN0OmUsbWVtbzpzLHN5bXM6en0pLHg9Sj0+YHNoYXBlWyR7Sn1dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Sn1dLCBpc3N1ZXM6IFtdIH0sIGN0eClgLFQ9KEosVik9PmAKICAgICAgICAgIGxldCAke0p9X2FiID0gZmFsc2U7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICR7Sn0uaXNzdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IGlzcyA9ICR7Sn0uaXNzdWVzW2ldOwogICAgICAgICAgICBpc3MucGF0aCA9IGlzcy5wYXRoID8gWyR7Vn0sIC4uLmlzcy5wYXRoXSA6IFske1Z9XTsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaChpc3MpOwogICAgICAgICAgICBpZiAoaXNzLmNvbnRpbnVlICE9PSB0cnVlKSAke0p9X2FiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgke0p9X2FiICYmIGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH1gO0Eud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBaPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHNlPTA7Zm9yKGNvbnN0IEogb2Ygay5hbGxLZXlzKVpbSl09YGtleV8ke3NlKyt9YDtBLndyaXRlKHM/ImNvbnN0IG5ld1Jlc3VsdCA9IG1lbW8uYWxsb2MoaW5zdCwgcGF5bG9hZCwge30sIGN0eCk7IjoiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEogb2Ygay5hbGxLZXlzKXtpZihKPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgVj1aW0pdLEM9dHlwZW9mIEo9PSJzeW1ib2wiP2BzeW1zWyR7ei5pbmRleE9mKEopfV1gOlBkKEopLEdlPWAke0N9IGluIGlucHV0YCx2dD0kW0pdLGp0PXZ0Py5fem9kPy5vcHRpbixTbj1qdCE9PXZvaWQgMCxXPXZ0Py5fem9kPy5vcHRvdXQ9PT0ib3B0aW9uYWwiO2lmKEEud3JpdGUoYGNvbnN0ICR7Vn0gPSAke3goQyl9O2ApLFNuJiZXKXtjb25zdCBHbz1qdD09PSJvcHRpb25hbCI/YCR7Vn1fcHJlc2VudGA6YCR7Vn0udmFsdWUgIT09IHVuZGVmaW5lZCB8fCAke1Z9X3ByZXNlbnRgO0Eud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Vn1fcHJlc2VudCA9ICR7R2V9OwogICAgICAgIGlmICghJHtWfS5pc3N1ZXMubGVuZ3RoIHx8ICR7Vn1fcHJlc2VudCkgewogICAgICAgICAgaWYgKCR7Vn0uaXNzdWVzLmxlbmd0aCkgeyR7VChWLEMpfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICgke0dvfSkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtDfV0gPSAke1Z9LnZhbHVlOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgIGApfWVsc2UgU24/KEEud3JpdGUoYAogICAgICAgIGlmICgke1Z9Lmlzc3Vlcy5sZW5ndGgpIHske1QoVixDKX0KICAgICAgICB9CiAgICAgIGApLGp0PT09ImRlZmF1bHRlZCI/QS53cml0ZShgbmV3UmVzdWx0WyR7Q31dID0gJHtWfS52YWx1ZTtgKTpBLndyaXRlKGAKICAgICAgICBpZiAoJHtWfS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICR7R2V9KSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtDfV0gPSAke1Z9LnZhbHVlOwogICAgICAgIH0KICAgICAgYCkpOkEud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Vn1fcHJlc2VudCA9ICR7R2V9OwogICAgICAgIGlmICgke1Z9Lmlzc3Vlcy5sZW5ndGgpIHske1QoVixDKX0KICAgICAgICB9CiAgICAgICAgaWYgKCEke1Z9X3ByZXNlbnQgJiYgISR7Vn0uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7CiAgICAgICAgICAgIGNvZGU6ICJpbnZhbGlkX3R5cGUiLAogICAgICAgICAgICBleHBlY3RlZDogIm5vbm9wdGlvbmFsIiwKICAgICAgICAgICAgaW5wdXQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgcGF0aDogWyR7Q31dCiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChjdHggJiYgY3R4LmFib3J0RWFybHkpIHsKICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsKICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHtWfV9wcmVzZW50KSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtDfV0gPSAke1Z9LnZhbHVlOwogICAgICAgIH0KCiAgICAgIGApfXJldHVybiBBLndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLEEud3JpdGUoInJldHVybiBwYXlsb2FkOyIpLEEuY29tcGlsZSgpfTtsZXQgaTtjb25zdCBhPVd0LHU9IVNlLmppdGxlc3MscD11JiZSZC52YWx1ZSxoPXQuY2F0Y2hhbGw7bGV0IGY7ZS5fem9kLnBhcnNlPSgkLGspPT57Zj8/KGY9by52YWx1ZSk7Y29uc3Qgej0kLnZhbHVlO3JldHVybiBhKHopP3UmJnAmJms/LmFzeW5jPT09ITEmJmsuaml0bGVzcyE9PSEwPyhpfHwoaT1yKHQuc2hhcGUpKSwkPWkoJCxrKSxoP3RtKFtdLHosJCxrLGYsZSxrPy5hYm9ydEVhcmx5PT09ITApOiQpOm4oJCxrKTooJC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp6LGluc3Q6ZX0pLCQpfX0pO2Z1bmN0aW9uIEV1KGUsdCxuLG8pe2Zvcihjb25zdCByIG9mIGUpaWYoci5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gdC52YWx1ZT1yLnZhbHVlLHQ7Y29uc3Qgcz1lLmZpbHRlcihyPT4heGUocikpO3JldHVybiBzLmxlbmd0aD09PTE/KHQudmFsdWU9c1swXS52YWx1ZSxzWzBdKToodC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOmUubWFwKHI9PnIuaXNzdWVzLm1hcChpPT5xZShpLG8saGUoKSkpKX0pLHQpfWNvbnN0IFZzPW0oIiRab2RVbmlvbiIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsIm9wdGluIixvPT5vLmRlZi5vcHRpb25zLnNvbWUocz0+cy5fem9kLm9wdGluPT09ImRlZmF1bHRlZCIpPyJkZWZhdWx0ZWQiOm8uZGVmLm9wdGlvbnMuc29tZShzPT5zLl96b2Qub3B0aW4hPT12b2lkIDApPyJvcHRpb25hbCI6dm9pZCAwKSxGKGUsIm9wdG91dCIsbz0+by5kZWYub3B0aW9ucy5zb21lKHM9PnMuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksRihlLCJ2YWx1ZXMiLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG8uZGVmLm9wdGlvbnMuZmxhdE1hcChzPT5BcnJheS5mcm9tKHMuX3pvZC52YWx1ZXMpKSl9KSxGKGUsInBhdHRlcm4iLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgcz1vLmRlZi5vcHRpb25zLm1hcChyPT5yLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtzLm1hcChyPT5sdChyLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IG49dC5vcHRpb25zLmxlbmd0aD09PTE/dC5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7ZS5fem9kLnBhcnNlPShvLHMpPT57aWYobilyZXR1cm4gbihvLHMpO2xldCByPSExO2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgdC5vcHRpb25zKXtjb25zdCB1PWEuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxzKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSlpLnB1c2godSkscj0hMDtlbHNle2lmKHUuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIHU7aS5wdXNoKHUpfX1yZXR1cm4gcj9Qcm9taXNlLmFsbChpKS50aGVuKGE9PkV1KGEsbyxlLHMpKTpFdShpLG8sZSxzKX19KTtmdW5jdGlvbiBSdShlLHQsbixvKXtjb25zdCBzPVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uaXNzdWVzLmxlbmd0aD09PTAmJnMucHVzaChyKTtyZXR1cm4gcy5sZW5ndGg9PT0xPyh0LnZhbHVlPWVbc1swXV0udmFsdWUsdCk6KHMubGVuZ3RoPT09MD90Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDp0LnZhbHVlLGluc3Q6bixlcnJvcnM6ZS5tYXAocj0+ci5pc3N1ZXMubWFwKGk9PnFlKGksbyxoZSgpKSkpfSk6dC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOltdLGluY2x1c2l2ZTohMSxtYXRjaGVzOnN9KSx0KX1jb25zdCBzbT1tKCIkWm9kWG9yIiwoZSx0KT0+e1ZzLmluaXQoZSx0KSx0LmluY2x1c2l2ZT0hMTtjb25zdCBuPXQub3B0aW9ucy5sZW5ndGg9PT0xP3Qub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO2UuX3pvZC5wYXJzZT0obyxzKT0+e2lmKG4pcmV0dXJuIG4obyxzKTtsZXQgcj0hMTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIHQub3B0aW9ucyl7Y29uc3QgdT1hLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0scyk7dSBpbnN0YW5jZW9mIFByb21pc2U/KGkucHVzaCh1KSxyPSEwKTppLnB1c2godSl9cmV0dXJuIHI/UHJvbWlzZS5hbGwoaSkudGhlbihhPT5SdShhLG8sZSxzKSk6UnUoaSxvLGUscyl9fSk7ZnVuY3Rpb24gJGEoZSx0KXtjb25zdCBuPWUuX3pvZDtsZXQgbz1uLmJhZy5vcHRpb25zTWFwO298fChvPXJtKG4uZGVmKSxuLmJhZy5vcHRpb25zTWFwPW8pO2NvbnN0IHM9by5nZXQodCk7aWYocz09PW51bGwpdGhyb3cgbmV3IEVycm9yKGBBbWJpZ3VvdXMgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcodCl9ImApO3JldHVybiBzfWZ1bmN0aW9uIHJtKGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3QgbiBvZiBlLm9wdGlvbnMpe2NvbnN0IG89bi5fem9kLnByb3BWYWx1ZXM/LltlLmRpc2NyaW1pbmF0b3JdO2lmKCFvfHxvLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtlLm9wdGlvbnMuaW5kZXhPZihuKX0iYCk7Zm9yKGNvbnN0IHMgb2YgbylpZih0LmhhcyhzKSl7aWYocyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7dC5zZXQocyxudWxsKX1lbHNlIHQuc2V0KHMsbil9cmV0dXJuIHR9Y29uc3QgaW09bSgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKGUsdCk9Pnt0LmluY2x1c2l2ZT0hMSxWcy5pbml0KGUsdCk7Y29uc3Qgbj1lLl96b2QucGFyc2U7RihlLCJwcm9wVmFsdWVzIixzPT57Y29uc3Qgcj17fTtsZXQgaT0wO2Zvcihjb25zdCBhIG9mIHMuZGVmLm9wdGlvbnMpe2NvbnN0IHU9YS5fem9kLnByb3BWYWx1ZXM7aWYoIXV8fE9iamVjdC5rZXlzKHUpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3MuZGVmLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7dVtzLmRlZi5kaXNjcmltaW5hdG9yXT8uaGFzKHZvaWQgMCkmJmkrKztmb3IoY29uc3RbZCxwXW9mIE9iamVjdC5lbnRyaWVzKHUpKXtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixkKXx8UnQocixkLG5ldyBTZXQpO2Zvcihjb25zdCBoIG9mIHApcltkXS5hZGQoaCl9fXJldHVybiFzLmRlZi51bmlvbkZhbGxiYWNrJiZpPjEmJnJbcy5kZWYuZGlzY3JpbWluYXRvcl0/LmRlbGV0ZSh2b2lkIDApLHJ9KSx0Lm9wdGlvbnMuZm9yRWFjaCgocyxyKT0+e2NvbnN0IGk9RXMocy5fem9kLmRlZik7aWYoaSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHQuZGlzY3JpbWluYXRvcikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3J9ImApfSk7Y29uc3Qgbz1GbigoKT0+cm0odCkpO2UuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtpZighV3QoaSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6aSxpbnN0OmV9KSxzO2NvbnN0IGE9aT8uW3QuZGlzY3JpbWluYXRvcl0sdT1vLnZhbHVlLmdldChhKTtyZXR1cm4gdSYmKGEhPT12b2lkIDB8fHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIik/dS5fem9kLnJ1bihzLHIpOnQudW5pb25GYWxsYmFja3x8ci5kaXJlY3Rpb249PT0iYmFja3dhcmQiP24ocyxyKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6dC5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSkuZmlsdGVyKGQ9Pm8udmFsdWUuZ2V0KGQpIT09bnVsbCksaW5wdXQ6aSxwYXRoOlt0LmRpc2NyaW1pbmF0b3JdLGluc3Q6ZX0pLHMpfX0pLGFtPW0oIiRab2RJbnRlcnNlY3Rpb24iLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlLHI9dC5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyksaT10LnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlfHxpIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcixpXSkudGhlbigoW3UsZF0pPT5PdShuLHUsZCkpOk91KG4scixpKX19KTtmdW5jdGlvbiBicyhlLHQpe2lmKGU9PT10KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSYmK2U9PSt0KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGR0KGUpJiZkdCh0KSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPU9iamVjdC5rZXlzKGUpLmZpbHRlcihyPT5uLmluZGV4T2YocikhPT0tMSkscz17Li4uZSwuLi50fTtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywiX19wcm90b19fIikmJmRlbGV0ZSBzLl9fcHJvdG9fXztmb3IoY29uc3QgciBvZiBvKXtpZihyPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgaT1icyhlW3JdLHRbcl0pO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5pLm1lcmdlRXJyb3JQYXRoXX07c1tyXT1pLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6c319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IG49W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9ZVtvXSxyPXRbb10saT1icyhzLHIpO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5pLm1lcmdlRXJyb3JQYXRoXX07bi5wdXNoKGkuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6bn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBPdShlLHQsbil7Y29uc3Qgbz1uZXcgTWFwO2xldCBzO2NvbnN0IHI9bmV3IE1hcCxpPShkLHApPT57bGV0IGg7aWYoZC5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIiYmIWQucGF0aD8ubGVuZ3RoKXM/PyhzPWQpLGg9ZC5rZXlzO2Vsc2UgaWYoZC5jb2RlPT09ImludmFsaWRfa2V5IiYmZC5vcmlnaW49PT0icmVjb3JkIiYmZC5wYXRoPy5sZW5ndGg9PT0xKXtjb25zdCBmPVN0cmluZyhkLnBhdGhbMF0pO3IuaGFzKGYpfHxyLnNldChmLGQpLGg9W2ZdfWVsc2UgcmV0dXJuITE7Zm9yKGNvbnN0IGYgb2YgaClvLmhhcyhmKXx8by5zZXQoZix7fSksby5nZXQoZilbcF09ITA7cmV0dXJuITB9O2Zvcihjb25zdCBkIG9mIHQuaXNzdWVzKWkoZCwibCIpfHxlLmlzc3Vlcy5wdXNoKGQpO2Zvcihjb25zdCBkIG9mIG4uaXNzdWVzKWkoZCwiciIpfHxlLmlzc3Vlcy5wdXNoKGQpO2NvbnN0IGE9Wy4uLm9dLmZpbHRlcigoWyxkXSk9PmQubCYmZC5yKS5tYXAoKFtkXSk9PmQpO2lmKGEubGVuZ3RoKXtjb25zdCBkPXM/YS5maWx0ZXIocD0+cy5rZXlzLmluY2x1ZGVzKHApKTpbXTtkLmxlbmd0aCYmZS5pc3N1ZXMucHVzaCh7Li4ucyxrZXlzOmR9KTtmb3IoY29uc3QgcCBvZiBhKSFkLmluY2x1ZGVzKHApJiZyLmhhcyhwKSYmZS5pc3N1ZXMucHVzaChyLmdldChwKSl9Y29uc3QgdT1icyh0LnZhbHVlLG4udmFsdWUpO2lmKCF1LnZhbGlkKXtpZih4ZShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KHUubWVyZ2VFcnJvclBhdGgpfWApfXJldHVybiBlLnZhbHVlPXUuZGF0YSxlfWNvbnN0IGthPW0oIiRab2RUdXBsZSIsKGUsdCk9PntNLmluaXQoZSx0KTtjb25zdCBuPXQuaXRlbXMsbz1TZS5tZW1vaXplcjtvPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShzLHIpPT57Y29uc3QgaT1zLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtpbnB1dDppLGluc3Q6ZSxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzO3MudmFsdWU9bz9vLmFsbG9jKGUscyxbXSxyKTpbXTtjb25zdCBhPVtdLHU9TnUobiwib3B0aW4iKSxkPU51KG4sIm9wdG91dCIpO2lmKCF0LnJlc3Qpe2lmKGkubGVuZ3RoPHUpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTp1LGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6ZSxvcmlnaW46ImFycmF5In0pLHM7aS5sZW5ndGg+bi5sZW5ndGgmJnMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDplLG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgcD1uZXcgQXJyYXkobi5sZW5ndGgpLGg9dC5yZXN0P3I/LmFib3J0RWFybHk6dm9pZCAwO2xldCBmPSExO2ZvcihsZXQgJD0wOyQ8bi5sZW5ndGg7JCsrKXtjb25zdCBrPW5bJF0uX3pvZC5ydW4oe3ZhbHVlOmlbJF0saXNzdWVzOltdfSxyKTtrIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goay50aGVuKHo9PntwWyRdPXp9KSk6KHBbJF09ayxoJiYhZiYmay5pc3N1ZXMubGVuZ3RoJiYoZj14ZShrKSkpfWlmKHQucmVzdCYmIWYpe2xldCAkPW4ubGVuZ3RoLTE7Y29uc3Qgaz1pLnNsaWNlKG4ubGVuZ3RoKTtsZXQgej1zLmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0IEEgb2Ygayl7aWYoaCYmcy5pc3N1ZXMubGVuZ3RoIT09eil7aWYoeGUocyx6KSlicmVhazt6PXMuaXNzdWVzLmxlbmd0aH0kKys7Y29uc3QgeD10LnJlc3QuX3pvZC5ydW4oe3ZhbHVlOkEsaXNzdWVzOltdfSxyKTt4IGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goeC50aGVuKFQ9Plp1KFQscywkKSkpOlp1KHgscywkKX19cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pmp1KHAscyxuLGksZCkpOmp1KHAscyxuLGksZCl9fSk7ZnVuY3Rpb24gTnUoZSx0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZighKHQ9PT0ib3B0aW4iP2Vbbl0uX3pvZC5vcHRpbiE9PXZvaWQgMDplW25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIikpcmV0dXJuIG4rMTtyZXR1cm4gMH1mdW5jdGlvbiBadShlLHQsbil7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKSx0LnZhbHVlW25dPWUudmFsdWV9ZnVuY3Rpb24ganUoZSx0LG4sbyxzKXtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgaT1lW3JdLGE9cjxvLmxlbmd0aDtpZighYSYmcj49cyYmbltyXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7dC52YWx1ZS5sZW5ndGg9cjticmVha31pZihpLmlzc3Vlcy5sZW5ndGgpe2lmKCFhJiZyPj1zKXt0LnZhbHVlLmxlbmd0aD1yO2JyZWFrfXQuaXNzdWVzLnB1c2goLi4uWmUocixpLmlzc3VlcykpfXQudmFsdWVbcl09aS52YWx1ZX1mb3IobGV0IHI9dC52YWx1ZS5sZW5ndGgtMTtyPj1vLmxlbmd0aCYmKG5bcl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZ0LnZhbHVlW3JdPT09dm9pZCAwKTtyLS0pdC52YWx1ZS5sZW5ndGg9cjtyZXR1cm4gdH1jb25zdCBjbT1tKCIkWm9kUmVjb3JkIiwoZSx0KT0+e00uaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighZHQocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cixpbnN0OmV9KSxvO2NvbnN0IGk9W10sYT10LmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSYmIXQucGFydGlhbCl7by52YWx1ZT1uP24uYWxsb2MoZSxvLHt9LHMpOnt9O2NvbnN0IHU9bmV3IFNldDtmb3IoY29uc3QgcCBvZiBhKWlmKHR5cGVvZiBwPT0ic3RyaW5nInx8dHlwZW9mIHA9PSJudW1iZXIifHx0eXBlb2YgcD09InN5bWJvbCIpe2lmKHUuYWRkKHR5cGVvZiBwPT0ibnVtYmVyIj9wLnRvU3RyaW5nKCk6cCkscD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0IGg9dC5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYoaC5pc3N1ZXMubGVuZ3RoKXtvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpoLmlzc3Vlcy5tYXAoaz0+cWUoayxzLGhlKCkpKSxpbnB1dDpwLHBhdGg6W3BdLGluc3Q6ZX0pO2NvbnRpbnVlfWNvbnN0IGY9aC52YWx1ZTtpZihmPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgJD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cltwXSxpc3N1ZXM6W119LHMpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaCgkLnRoZW4oaz0+e2suaXNzdWVzLmxlbmd0aCYmby5pc3N1ZXMucHVzaCguLi5aZShwLGsuaXNzdWVzKSksby52YWx1ZVtmXT1rLnZhbHVlfSkpOigkLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUocCwkLmlzc3VlcykpLG8udmFsdWVbZl09JC52YWx1ZSl9bGV0IGQ7Zm9yKGNvbnN0IHAgaW4gcilpZighdS5oYXMocCkpaWYodC5tb2RlPT09Imxvb3NlIil7aWYocD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO28udmFsdWVbcF09cltwXX1lbHNlIGQ9ZD8/W10sZC5wdXNoKHApO2QmJmQubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOmQsY29udGludWU6ITB9KX1lbHNle28udmFsdWU9bj9uLmFsbG9jKGUsbyx7fSxzKTp7fTtsZXQgdTtmb3IoY29uc3QgZCBvZiBSZWZsZWN0Lm93bktleXMocikpe2lmKGQ9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChyLGQpKWNvbnRpbnVlO2xldCBwPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIiYmSHMudGVzdChkKSYmcC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBrPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKGQpLGlzc3VlczpbXX0scyk7aWYoayBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7ay5pc3N1ZXMubGVuZ3RoPT09MCYmKHA9ayl9aWYocC5pc3N1ZXMubGVuZ3RoKXt0Lm1vZGU9PT0ibG9vc2UiP28udmFsdWVbZF09cltkXTphPyh1PXU/P1tdLHUucHVzaChkKSk6by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6cC5pc3N1ZXMubWFwKGs9PnFlKGsscyxoZSgpKSksaW5wdXQ6ZCxwYXRoOltkXSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBmPXAudmFsdWU7aWYoZj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0ICQ9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnJbZF0saXNzdWVzOltdfSxzKTskIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goJC50aGVuKGs9PntrLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUoZCxrLmlzc3VlcykpLG8udmFsdWVbZl09ay52YWx1ZX0pKTooJC5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlplKGQsJC5pc3N1ZXMpKSxvLnZhbHVlW2ZdPSQudmFsdWUpfXUmJnUubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOnUsY29udGludWU6ITB9KX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+byk6b319KSxsbT1tKCIkWm9kTWFwIiwoZSx0KT0+e00uaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighKHIgaW5zdGFuY2VvZiBNYXApKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztjb25zdCBpPVtdO28udmFsdWU9bj9uLmFsbG9jKGUsbyxuZXcgTWFwLHMpOm5ldyBNYXA7Y29uc3QgYT1zPy5hYm9ydEVhcmx5O2xldCB1PW8uaXNzdWVzLmxlbmd0aDtmb3IoY29uc3RbZCxwXW9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PXUpe2lmKHhlKG8sdSkpYnJlYWs7dT1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgaD10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmQsaXNzdWVzOltdfSxzKSxmPXQudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aCBpbnN0YW5jZW9mIFByb21pc2V8fGYgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbaCxmXSkudGhlbigoWyQsa10pPT57TXUoJCxrLG8sZCxyLGUscyl9KSk6TXUoaCxmLG8sZCxyLGUscyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gTXUoZSx0LG4sbyxzLHIsaSl7ZS5pc3N1ZXMubGVuZ3RoJiYoaHMuaGFzKHR5cGVvZiBvKT9uLmlzc3Vlcy5wdXNoKC4uLlplKG8sZS5pc3N1ZXMpKTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OnMsaW5zdDpyLGlzc3VlczplLmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGhlKCkpKX0pKSx0Lmlzc3Vlcy5sZW5ndGgmJihocy5oYXModHlwZW9mIG8pP24uaXNzdWVzLnB1c2goLi4uWmUobyx0Lmlzc3VlcykpOm4uaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OnMsaW5zdDpyLGtleTpvLGlzc3Vlczp0Lmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGhlKCkpKX0pKSxuLnZhbHVlLnNldChlLnZhbHVlLHQudmFsdWUpfWNvbnN0IHVtPW0oIiRab2RTZXQiLChlLHQpPT57TS5pbml0KGUsdCk7Y29uc3Qgbj1TZS5tZW1vaXplcjtuPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO2lmKCEociBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OnIsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO2NvbnN0IGk9W107by52YWx1ZT1uP24uYWxsb2MoZSxvLG5ldyBTZXQscyk6bmV3IFNldDtjb25zdCBhPXM/LmFib3J0RWFybHk7bGV0IHU9by5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCBkIG9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PXUpe2lmKHhlKG8sdSkpYnJlYWs7dT1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgcD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LHMpO3AgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChwLnRoZW4oaD0+cXUoaCxvKSkpOnF1KHAsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gcXUoZSx0KXtlLmlzc3Vlcy5sZW5ndGgmJnQuaXNzdWVzLnB1c2goLi4uZS5pc3N1ZXMpLHQudmFsdWUuYWRkKGUudmFsdWUpfWNvbnN0IGRtPW0oIiRab2RFbnVtIiwoZSx0KT0+e00uaW5pdChlLHQpO2NvbnN0IG49aGkodC5lbnRyaWVzKSxvPW5ldyBTZXQobik7ZS5fem9kLnZhbHVlcz1vLEYoZSwicGF0dGVybiIscz0+e2NvbnN0IHI9aGkocy5kZWYuZW50cmllcykuZmlsdGVyKGk9PmhzLmhhcyh0eXBlb2YgaSkpO3JldHVybiBuZXcgUmVnRXhwKHIubGVuZ3RoP2BeKCR7ci5tYXAoaT0+UWUoaS50b1N0cmluZygpKSkuam9pbigifCIpfSkkYDoiXlteXFxzXFxTXSQiKX0pLGUuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtyZXR1cm4gby5oYXMoaSl8fHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLGlucHV0OmksaW5zdDplfSksc319KSxwbT1tKCIkWm9kTGl0ZXJhbCIsKGUsdCk9PntNLmluaXQoZSx0KTtjb25zdCBuPW5ldyBTZXQodC52YWx1ZXMpO2UuX3pvZC52YWx1ZXM9bixGKGUsInBhdHRlcm4iLG89Pntjb25zdCBzPW8uZGVmLnZhbHVlcztyZXR1cm4gbmV3IFJlZ0V4cChzLmxlbmd0aD9gXigke3MubWFwKHI9PnR5cGVvZiByPT0ic3RyaW5nIj9RZShyKTpyP1FlKHIudG9TdHJpbmcoKSk6U3RyaW5nKHIpKS5qb2luKCJ8Iil9KSRgOiJeW15cXHNcXFNdJCIpfSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO3JldHVybiBuLmhhcyhyKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQudmFsdWVzLGlucHV0OnIsaW5zdDplfSksb319KSxobT1tKCIkWm9kRmlsZSIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHMgaW5zdGFuY2VvZiBGaWxlfHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksbW09bSgiJFpvZFRyYW5zZm9ybSIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixTZS5tZW1vaXplcj8uZ3VhcmQoZSksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBxcyhlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IHM9dC50cmFuc2Zvcm0obi52YWx1ZSxuKTtpZihvLmFzeW5jKXJldHVybihzIGluc3RhbmNlb2YgUHJvbWlzZT9zOlByb21pc2UucmVzb2x2ZShzKSkudGhlbihpPT4obi52YWx1ZT1pLG4pKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgdXQ7cmV0dXJuIG4udmFsdWU9cyxufX0pO2Z1bmN0aW9uIEx1KGUsdCl7cmV0dXJuIGUudmFsdWU9dC5pc3N1ZXMubGVuZ3RoP3ZvaWQgMDp0LnZhbHVlLGV9Y29uc3Qgd2E9bSgiJFpvZE9wdGlvbmFsIiwoZSx0KT0+e00uaW5pdChlLHQpLEYoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLm9wdGluPT09ImRlZmF1bHRlZCI/ImRlZmF1bHRlZCI6Im9wdGlvbmFsIiksZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLEYoZSwidmFsdWVzIixuPT57Y29uc3Qgbz1uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIG8/bmV3IFNldChbLi4ubyx2b2lkIDBdKTp2b2lkIDB9KSxGKGUsInBhdHRlcm4iLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIG8/bmV3IFJlZ0V4cChgXigke2x0KG8uc291cmNlKX0pPyRgKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihuLnZhbHVlPT09dm9pZCAwKXtpZih0LmlubmVyVHlwZS5fem9kLm9wdGluIT09ImRlZmF1bHRlZCIpcmV0dXJuIG47Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZSxpc3N1ZXM6W119LG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+THUobixyKSk6THUobixzKX1yZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX19KSxmbT1tKCIkWm9kRXhhY3RPcHRpb25hbCIsKGUsdCk9Pnt3YS5pbml0KGUsdCksRihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksRihlLCJwYXR0ZXJuIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KG4sbyk9PnQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9KSxnbT1tKCIkWm9kTnVsbGFibGUiLChlLHQpPT57TS5pbml0KGUsdCksRihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pLEYoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEYoZSwicGF0dGVybiIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gbz9uZXcgUmVnRXhwKGBeKCR7bHQoby5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSxlLl96b2QucGFyc2U9KG4sbyk9Pm4udmFsdWU9PT1udWxsP246dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX0pLGJtPW0oIiRab2REZWZhdWx0IiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7aWYobi52YWx1ZT09PXZvaWQgMClyZXR1cm4gbi52YWx1ZT10LmRlZmF1bHRWYWx1ZSxuO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PkR1KHIsdCkpOkR1KHMsdCl9fSk7ZnVuY3Rpb24gRHUoZSx0KXtyZXR1cm4gZS52YWx1ZT09PXZvaWQgMCYmKGUudmFsdWU9dC5kZWZhdWx0VmFsdWUpLGV9Y29uc3Qgdm09bSgiJFpvZFByZWZhdWx0IiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fG4udmFsdWU9PT12b2lkIDAmJihuLnZhbHVlPXQuZGVmYXVsdFZhbHVlKSx0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pKX0pLHltPW0oIiRab2ROb25PcHRpb25hbCIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsInZhbHVlcyIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBvP25ldyBTZXQoWy4uLm9dLmZpbHRlcihzPT5zIT09dm9pZCAwKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+QnUocixlKSk6QnUocyxlKX19KTtmdW5jdGlvbiBCdShlLHQpe3JldHVybiFlLmlzc3Vlcy5sZW5ndGgmJmUudmFsdWU9PT12b2lkIDAmJmUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6dH0pLGV9Y29uc3QgJG09bSgiJFpvZFN1Y2Nlc3MiLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBxcygiWm9kU3VjY2VzcyIpO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PihuLnZhbHVlPXIuaXNzdWVzLmxlbmd0aD09PTAsbikpOihuLnZhbHVlPXMuaXNzdWVzLmxlbmd0aD09PTAsbil9fSk7ZnVuY3Rpb24gRnUoZSx0LG4sbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8oZS52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnQsdmFsdWU6ZS52YWx1ZSxlcnJvcjp7aXNzdWVzOnQuaXNzdWVzLm1hcChzPT5xZShzLG8saGUoKSkpfSxpbnB1dDplLnZhbHVlfSksZSk6KGUudmFsdWU9dC52YWx1ZSx0Lm1lbW8mJihlLm1lbW89ITApLGUpfWNvbnN0IGttPW0oIiRab2RDYXRjaCIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsIm9wdGluIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiPyJkZWZhdWx0ZWQiOiJvcHRpb25hbCIpLEYoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEYoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpuLnZhbHVlLGlzc3VlczpbXX0sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5GdShuLHIsdCxvKSk6RnUobixzLHQsbyl9fSksd209bSgiJFpvZE5hTiIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PigodHlwZW9mIG4udmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKG4udmFsdWUpKSYmbi5pc3N1ZXMucHVzaCh7aW5wdXQ6bi52YWx1ZSxpbnN0OmUsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLG4pfSksX2E9bSgiJFpvZFBpcGUiLChlLHQpPT57TS5pbml0KGUsdCksRihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmluLl96b2QudmFsdWVzKSxGKGUsIm9wdGluIixuPT5uLmRlZi5pbi5fem9kLm9wdGluKSxGKGUsIm9wdG91dCIsbj0+bi5kZWYub3V0Ll96b2Qub3B0b3V0KSxGKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5ZbyhpLHQuaW4sbykpOllvKHIsdC5pbixvKX1jb25zdCBzPXQuaW4uX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PllvKHIsdC5vdXQsbykpOllvKHMsdC5vdXQsbyl9fSk7ZnVuY3Rpb24gWW8oZSx0LG4pe3JldHVybiBlLmlzc3Vlcy5zb21lKG89Pm8uY29kZSE9PSJ1bnJlY29nbml6ZWRfa2V5cyIpPyhlLmFib3J0ZWQ9ITAsZSk6dC5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LG4pfWNvbnN0IFNhPW0oIiRab2RDb2RlYyIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC52YWx1ZXMpLEYoZSwib3B0aW4iLG49Pm4uZGVmLmluLl96b2Qub3B0aW4pLEYoZSwib3B0b3V0IixuPT5uLmRlZi5vdXQuX3pvZC5vcHRvdXQpLEYoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC5wcm9wVmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IHI9dC5pbi5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oaT0+UW8oaSx0LG8pKTpRbyhyLHQsbyl9ZWxzZXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5RbyhpLHQsbykpOlFvKHIsdCxvKX19fSk7ZnVuY3Rpb24gUW8oZSx0LG4pe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoKG4uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBzPXQudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5vdXQsbikpOlhvKGUscyx0Lm91dCxuKX1lbHNle2NvbnN0IHM9dC5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5pbixuKSk6WG8oZSxzLHQuaW4sbil9fWZ1bmN0aW9uIFhvKGUsdCxuLG8pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpuLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczplLmlzc3Vlc30sbyl9Y29uc3QgX209bSgiJFpvZFByZXByb2Nlc3MiLChlLHQpPT57X2EuaW5pdChlLHQpfSksU209bSgiJFpvZFJlYWRvbmx5IiwoZSx0KT0+e00uaW5pdChlLHQpLEYoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksRihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksRihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksRihlLCJvcHRvdXQiLG49Pm4uZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4oVXUpOlV1KHMpfX0pO2Z1bmN0aW9uIFV1KGUpe3JldHVybiBlLm1lbW98fChlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSkpLGV9ZnVuY3Rpb24gZ3YoZSl7Y29uc3QgdD1lLl96b2QuZGVmO2xldCBuPXQucGF0dGVybixvPSEhdC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxzLHI7Zm9yKGNvbnN0IGEgb2YgdC5jaGVja3M/P1tdKXtjb25zdCB1PWEuX3pvZC5kZWY7dS5wYXR0ZXJuJiYobj11LnBhdHRlcm4pLG98fChvPSEhdS5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSk7Y29uc3QgZD11Lm1pbmltdW0/P3UubGVuZ3RoLHA9dS5tYXhpbXVtPz91Lmxlbmd0aDtkIT09dm9pZCAwJiYocz09PXZvaWQgMHx8ZD5zKSYmKHM9ZCkscCE9PXZvaWQgMCYmKHI9PT12b2lkIDB8fHA8cikmJihyPXApfWlmKG4pcmV0dXJuIG4uc291cmNlO2lmKHMhPT12b2lkIDAmJnIhPT12b2lkIDAmJnM+cilyZXR1cm4iKD8hKSI7aWYocyE9PXZvaWQgMHx8ciE9PXZvaWQgMClyZXR1cm4gQXAoe21pbmltdW06cyxtYXhpbXVtOnJ9KS5zb3VyY2U7Y29uc3QgaT1lLl96b2QucGF0dGVybjtyZXR1cm4obyYmaT09PUhzP1BwOmkpPy5zb3VyY2V9ZnVuY3Rpb24ga2koZSl7Y29uc3QgdD1lLl96b2QuZGVmLG49ZS5fem9kLnBhdHRlcm4/LnNvdXJjZSxvPXQuaW5uZXJUeXBlPz9lLl96b2QuaW5uZXJUeXBlO2lmKG8pe2NvbnN0IHM9by5fem9kLnBhdHRlcm4/LnNvdXJjZSxyPWtpKG8pO3JldHVybiBuJiZzJiZyJiZyIT09cz9uLnJlcGxhY2UobHQocyksKCk9Pmx0KHIpKTpufWlmKHQub3B0aW9ucyl7Y29uc3Qgcz10Lm9wdGlvbnMubWFwKGtpKTtpZihzLmV2ZXJ5KEJvb2xlYW4pKXJldHVybmBeKCR7cy5tYXAocj0+bHQocikpLmpvaW4oInwiKX0pJGB9cmV0dXJuIGd2KGUpfWNvbnN0IFRtPW0oIiRab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHQpPT57TS5pbml0KGUsdCk7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiB0LnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2NvbnN0IHM9a2kobyk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtuLnB1c2gobHQocykpfWVsc2UgaWYobz09PW51bGx8fE9kLmhhcyh0eXBlb2Ygbykpbi5wdXNoKFFlKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO2UuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke24uam9pbigiIil9JGApLGUuX3pvZC5wYXJzZT0obyxzKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6ZSxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KGUuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLGUuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDplLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6dC5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOmUuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSksem09bSgiJFpvZEZ1bmN0aW9uIiwoZSx0KT0+KE0uaW5pdChlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfZGVmIix7dmFsdWU6dH0pLGUuX3pvZC5kZWY9dCxlLmltcGxlbWVudD1uPT57aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2JpKGUuX2RlZi5pbnB1dCxvKTpvLHI9UmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YmkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuaW1wbGVtZW50QXN5bmM9bj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2F3YWl0IHZpKGUuX2RlZi5pbnB1dCxvKTpvLHI9YXdhaXQgUmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YXdhaXQgdmkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuX3pvZC5wYXJzZT0obixvKT0+dHlwZW9mIG4udmFsdWUhPSJmdW5jdGlvbiI/KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG4pOihlLl9kZWYub3V0cHV0JiZlLl9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/bi52YWx1ZT1lLmltcGxlbWVudEFzeW5jKG4udmFsdWUpOm4udmFsdWU9ZS5pbXBsZW1lbnQobi52YWx1ZSksbiksZS5pbnB1dD0oLi4ubik9Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoblswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcga2Eoe3R5cGU6InR1cGxlIixpdGVtczpuWzBdLHJlc3Q6blsxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PW49Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpufSl9LGUpKSx4bT1tKCIkWm9kUHJvbWlzZSIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PlByb21pc2UucmVzb2x2ZShuLnZhbHVlKS50aGVuKHM9PnQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbykpfSksVGE9bSgiJFpvZExhenkiLChlLHQpPT57TS5pbml0KGUsdCksSWQoZS5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgbj10O3JldHVybiBuLl9jYWNoZWRJbm5lcnx8KG4uX2NhY2hlZElubmVyPXQuZ2V0dGVyKCkpLG4uX2NhY2hlZElubmVyfSksRihlLCJwYXR0ZXJuIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksRihlLCJwcm9wVmFsdWVzIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksRihlLCJvcHRpbiIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLEYoZSwib3B0b3V0IixuPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLGUuX3pvZC5wYXJzZT0obixvKT0+ZS5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihuLG8pfSksSW09bSgiJFpvZEN1c3RvbSIsKGUsdCk9PntpZS5pbml0KGUsdCksTS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT5uLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz1uLnZhbHVlLHM9dC5mbihvKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gcy50aGVuKHI9Pkh1KHIsbixvLGUpKTtIdShzLG4sbyxlKX19KTtmdW5jdGlvbiBIdShlLHQsbixvKXtpZighZSl7Y29uc3Qgcz17Y29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihzLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksdC5pc3N1ZXMucHVzaChWdChzKSl9fWNsYXNzIEFtIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2Fubm90IHBhcnNlIGEgcmVmZXJlbmNlIGN5Y2xlIHRoYXQgY2xvc2VzIHRocm91Z2ggYSB0cmFuc2Zvcm0iKSx0aGlzLm5hbWU9IlpvZEN5Y2xpY0Vycm9yIn19Y29uc3Qgd2k9In5tZW1vIixXdT1bXTtmdW5jdGlvbiBDbShlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0In1mdW5jdGlvbiBhaShlKXtyZXR1cm4gZS5tYXAodD0+dC5wYXRoP3suLi50LHBhdGg6dC5wYXRoLnNsaWNlKCl9OnsuLi50fSl9Y29uc3QgUG09bmV3IFdlYWtNYXAscXQ9MCxhcz0xLEFuPTI7ZnVuY3Rpb24gQ24oZSx0LG4pe2NvbnN0IG89UG0uZ2V0KGUpO2lmKG8hPT12b2lkIDApcmV0dXJuIG8/QW46cXQ7aWYodC5oYXMoZSkpcmV0dXJuIEFuO3QuYWRkKGUpO2xldCBzPXF0O2NvbnN0IHI9cD0+e2lmKHMhPT1BbiYmcD8uX3pvZCl7Y29uc3QgaD1DbihwLHQsbik7aD5zJiYocz1oKX19LGk9KHAsaCk9PntsZXQgZj1xdDtmb3IoY29uc3QgJCBvZiBSZWZsZWN0Lm93bktleXMocCkpe2NvbnN0IGs9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLCQpO2lmKCFrLmVudW1lcmFibGUpY29udGludWU7Y29uc3Qgej1rLmdldD9hczprLnZhbHVlPy5fem9kP0NuKGsudmFsdWUsdCxuKTpxdDt6PmYmJihmPXopfXJldHVybiBmfSxhPXA9PntwPnMmJihzPXApfSx1PWUuX3pvZC5kZWY7c3dpdGNoKHUudHlwZSl7Y2FzZSJvYmplY3QiOntjb25zdCBwPUVzKHUpO2EocD9pKHApOmFzKSxyKHUuY2F0Y2hhbGwpO2JyZWFrfWNhc2UiYXJyYXkiOnIodS5lbGVtZW50KTticmVhaztjYXNlInR1cGxlIjpmb3IoY29uc3QgcCBvZiB1Lml0ZW1zKXIocCk7cih1LnJlc3QpO2JyZWFrO2Nhc2UicmVjb3JkIjpjYXNlIm1hcCI6cih1LmtleVR5cGUpLHIodS52YWx1ZVR5cGUpO2JyZWFrO2Nhc2Uic2V0IjpyKHUudmFsdWVUeXBlKTticmVhaztjYXNlInVuaW9uIjpmb3IoY29uc3QgcCBvZiB1Lm9wdGlvbnMpcihwKTticmVhaztjYXNlImludGVyc2VjdGlvbiI6cih1LmxlZnQpLHIodS5yaWdodCk7YnJlYWs7Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6cih1LmlubmVyVHlwZSk7YnJlYWs7Y2FzZSJwaXBlIjpyKHUuaW4pLHIodS5vdXQpO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnIodS5pbnB1dCkscih1Lm91dHB1dCk7YnJlYWs7Y2FzZSJsYXp5Ijp7Y29uc3QgcD11Ll9jYWNoZWRJbm5lcj8/KG4/ZS5fem9kLmlubmVyVHlwZTp2b2lkIDApO2EocD9DbihwLHQsITEpOmFzKTticmVha31jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6YnJlYWs7ZGVmYXVsdDpmb3IoY29uc3QgcCBpbiB1KXtjb25zdCBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodSxwKTtpZighaHx8aC5nZXQpY29udGludWU7Y29uc3QgZj1oLnZhbHVlO2lmKCEoIWZ8fHR5cGVvZiBmIT0ib2JqZWN0Iikpe2lmKGYuX3pvZClyKGYpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShmKSlmb3IoY29uc3QgJCBvZiBmKXIoJCl9fX1yZXR1cm4gdC5kZWxldGUoZSksYnYoZSxzKX1mdW5jdGlvbiBidihlLHQpe3JldHVybiB0IT09YXMmJlBtLnNldChlLHQ9PT1BbiksdH1mdW5jdGlvbiB2dihlKXtyZXR1cm4gQ24oZSxuZXcgU2V0LCEwKSE9PXF0fWZ1bmN0aW9uIHl2KGUsdCl7bGV0IG49ZS5idWNrZXRzLmdldCh0KTtyZXR1cm4gbnx8KG49bmV3IFdlYWtNYXAsZS5idWNrZXRzLnNldCh0LG4pKSxufWxldCBlcztjb25zdCB0cz1bXSwkdj17YWxsb2MoZSx0LG4pe2NvbnN0IG89ZXM7aWYoIW8pcmV0dXJuIG47ZXM9dm9pZCAwO2NvbnN0IHM9e3ZhbHVlOm4saXNzdWVzOm51bGx9O3JldHVybiBvLnNldCh0LnZhbHVlLHMpLHRzLnB1c2gocyksbn0sZ3VhcmQoZSl7dmFyIHQ7KHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZC5wdXNoKCgpPT57Y29uc3Qgbj1lLl96b2QucGFyc2Usbz0ocyxyKT0+e2lmKHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIiYmRW0ocixzLnZhbHVlKSl0aHJvdyBuZXcgQW07cmV0dXJuIG4ocyxyKX07ZS5fem9kLnBhcnNlPW8sZS5fem9kLnJ1bj09PW4mJihlLl96b2QucnVuPW8pfSl9LGF0dGFjaChlKXt2YXIgdDtsZXQgbixvPSExLHMscjsodD1lLl96b2QpLmRlZmVycmVkPz8odC5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkLnB1c2goKCk9Pntjb25zdCBpPWUuX3pvZC5wYXJzZSxhPSh1LGQpPT57aWYobj09PXZvaWQgMCl7Y29uc3QgeD1DbihlLG5ldyBTZXQsITEpO2lmKHg9PT1xdClyZXR1cm4gZS5fem9kLnBhcnNlPWksZS5fem9kLnJ1bj09PWEmJihlLl96b2QucnVuPWkpLGkodSxkKTt4PT09QW58fG8/bj0hMDpvPSEwfWNvbnN0IHA9dS52YWx1ZTtpZighQ20ocCkpcmV0dXJuIGkodSxkKTtsZXQgaD1kW3dpXTtofHwoaD17YnVja2V0czpuZXcgV2Vha01hcCxiYWNrRWRnZXM6dm9pZCAwfSxkW3dpXT1oKTtsZXQgZjtzPT09ZD9mPXI6KGY9eXYoaCxlKSxzPWQscj1mKTtjb25zdCAkPWYuZ2V0KHApO2lmKCQpcmV0dXJuIHUudmFsdWU9JC52YWx1ZSwkLmlzc3Vlcz8kLmlzc3Vlcy5sZW5ndGgmJnUuaXNzdWVzLnB1c2goLi4uYWkoJC5pc3N1ZXMpKToodS5tZW1vPSEwLGguYmFja0VkZ2VzPz8oaC5iYWNrRWRnZXM9bmV3IFdlYWtTZXQpLGguYmFja0VkZ2VzLmFkZCgkLnZhbHVlKSksdTtlcz1mO2NvbnN0IGs9dHMubGVuZ3RoLHo9aSh1LGQpO2VzPXZvaWQgMDtjb25zdCBBPXRzLmxlbmd0aD5rP3RzLnBvcCgpOnZvaWQgMDtyZXR1cm4geiBpbnN0YW5jZW9mIFByb21pc2U/ei50aGVuKHg9PihBJiYoQS5pc3N1ZXM9eC5pc3N1ZXMubGVuZ3RoP2FpKHguaXNzdWVzKTpXdSkseCkpOihBJiYoQS5pc3N1ZXM9ei5pc3N1ZXMubGVuZ3RoP2FpKHouaXNzdWVzKTpXdSkseil9O2UuX3pvZC5wYXJzZT1hLGUuX3pvZC5ydW49PT1pJiYoZS5fem9kLnJ1bj1hKX0pfX07ZnVuY3Rpb24gSnMoKXtyZXR1cm4gJHZ9ZnVuY3Rpb24gRW0oZSx0KXtjb25zdCBuPWVbd2ldPy5iYWNrRWRnZXM7cmV0dXJuIG4hPT12b2lkIDAmJkNtKHQpJiZuLmhhcyh0KX1jb25zdCBrdj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiB0KHIpe3JldHVybiBlW3JdPz9udWxsfWNvbnN0IG49e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGN1cnJlbmN5X2NvZGU6ImN1cnJlbmN5IGNvZGUiLGNyZWRpdF9jYXJkOiJjcmVkaXQgY2FyZCBudW1iZXIiLGliYW46IklCQU4iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07ZnVuY3Rpb24gcyhyLGkpe3JldHVybiByPT09Im51bWJlciImJnR5cGVvZiBpPT0ibnVtYmVyIiYmIU51bWJlci5pc0Zpbml0ZShpKT9TdHJpbmcoaSk6b1tyXT8/cn1yZXR1cm4gcj0+e3N3aXRjaChyLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1zKHIuZXhwZWN0ZWQpLGE9V2Qoci5pbnB1dCksdT1zKGEsci5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aX0sIHJlY2VpdmVkICR7dX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIHIudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7Rmkoci52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHttaShyLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1yLmV4YWN0PyJleGFjdGx5ICI6ci5pbmNsdXNpdmU/Ijw9IjoiPCIsYT10KHIub3JpZ2luKTtyZXR1cm4gYT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2l9JHtyLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHtpfSR7ci5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ci5leGFjdD8iZXhhY3RseSAiOnIuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9dChyLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtyLm9yaWdpbn0gdG8gaGF2ZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke3Iub3JpZ2lufSB0byBiZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPXI7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke25baS5mb3JtYXRdPz9yLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke3IuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtyLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHttaShyLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtyLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIHIub3B0aW9ucyYmQXJyYXkuaXNBcnJheShyLm9wdGlvbnMpJiZyLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtyLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOnIuaW5jbHVzaXZlPT09ITE/IkludmFsaWQgaW5wdXQ6IG1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNoZWQiOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtyLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIFJtKCl7cmV0dXJue2xvY2FsZUVycm9yOmt2KCl9fWNvbnN0IHphPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbjpSbX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgVnU7Y29uc3QgeGE9U3ltYm9sKCJab2RPdXRwdXQiKSxJYT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgT217Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQodCwuLi5uKXtjb25zdCBvPW5bMF07cmV0dXJuIHRoaXMuX21hcC5zZXQodCxvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCx0KSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gbiYmdHlwZW9mIG49PSJvYmplY3QiJiYiaWQiaW4gbiYmdGhpcy5faWRtYXAuZGVsZXRlKG4uaWQpLHRoaXMuX21hcC5kZWxldGUodCksdGhpc31nZXQodCl7Y29uc3Qgbj10Ll96b2QucGFyZW50O2lmKG4pe2NvbnN0IG89ey4uLnRoaXMuZ2V0KG4pPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3Qgcz17Li4ubywuLi50aGlzLl9tYXAuZ2V0KHQpfTtyZXR1cm4gT2JqZWN0LmtleXMocykubGVuZ3RoP3M6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KHQpfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX19ZnVuY3Rpb24gS3MoKXtyZXR1cm4gbmV3IE9tfShWdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KFZ1Ll9fem9kX2dsb2JhbFJlZ2lzdHJ5PUtzKCkpO2NvbnN0IGplPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnksQWE9KCk9Pnt0aHJvdyBuZXcgRXJyb3IoInpvZCBjb21waWxlKCkgaXMgbm90IGJ1bmRsZWQgaW50byBjYXJkcyAtIHNlZSBwYWNrYWdlcy9pbnRlcm5hbC9jYXJkLWtpdC92aXRlLXNsaW0ubWpzIil9O2NsYXNzIENhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIFBhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIEVhIGV4dGVuZHMgRXJyb3J7fWNvbnN0IFJhPUFhLE9hPUFhLHd2PUFhO2Z1bmN0aW9uIEdzKGUpe3JldHVybiBlLmNoZWNrcyYmKGUuY2hlY2tzPVsuLi5lLmNoZWNrc10pLGV9ZnVuY3Rpb24gTm0oZSx0KXtyZXR1cm4gbmV3IGUoR3Moe3R5cGU6InN0cmluZyIsLi4udyh0KX0pKX1mdW5jdGlvbiBabShlLHQpe3JldHVybiBuZXcgZShHcyh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4udyh0KX0pKX1mdW5jdGlvbiBOYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBqYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gTWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLncodCl9KX1mdW5jdGlvbiBxYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4udyh0KX0pfWZ1bmN0aW9uIExhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi53KHQpfSl9ZnVuY3Rpb24gWXMoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gRGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBCYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBGYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gVWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBIYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gV2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gVmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBKYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gS2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIGptKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEdhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFlhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFFhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFhhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIGVjKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBNbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNyZWRpdF9jYXJkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIHFtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaWJhbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiB0YyhlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1jb25zdCBuYz17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gb2MoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi53KHQpfSl9ZnVuY3Rpb24gc2MoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIHJjKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLncodCl9KX1mdW5jdGlvbiBpYyhlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIExtKGUsdCl7cmV0dXJuIG5ldyBlKEdzKHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi53KHQpfSkpfWZ1bmN0aW9uIERtKGUsdCl7cmV0dXJuIG5ldyBlKEdzKHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4udyh0KX0pKX1mdW5jdGlvbiBCbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi53KHQpfSl9ZnVuY3Rpb24gRm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIFVtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLncodCl9KX1mdW5jdGlvbiBIbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIFdtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIFZtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gSm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gS20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsLi4udyh0KX0pfWZ1bmN0aW9uIEdtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gWW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBRbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBYbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3ltYm9sIiwuLi53KHQpfSl9ZnVuY3Rpb24gZWYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuZGVmaW5lZCIsLi4udyh0KX0pfWZ1bmN0aW9uIHRmKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi53KHQpfSl9ZnVuY3Rpb24gbmYoZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gb2YoZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIHNmKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJuZXZlciIsLi4udyh0KX0pfWZ1bmN0aW9uIHJmKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi53KHQpfSl9ZnVuY3Rpb24gYWYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImRhdGUiLC4uLncodCl9KX1mdW5jdGlvbiBjZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLncodCl9KX1mdW5jdGlvbiBsZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gZXQoZSx0KXtyZXR1cm4gbmV3IGxhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gQ2UoZSx0KXtyZXR1cm4gbmV3IGxhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gdHQoZSx0KXtyZXR1cm4gbmV3IHVhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gUGUoZSx0KXtyZXR1cm4gbmV3IHVhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gUXMoZSl7cmV0dXJuIHR0KDAsZSl9ZnVuY3Rpb24gWHMoZSl7cmV0dXJuIGV0KDAsZSl9ZnVuY3Rpb24gZXIoZSl7cmV0dXJuIENlKDAsZSl9ZnVuY3Rpb24gdHIoZSl7cmV0dXJuIFBlKDAsZSl9ZnVuY3Rpb24gX3QoZSx0KXtyZXR1cm4gbmV3IE1wKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLncodCksdmFsdWU6ZX0pfWZ1bmN0aW9uIE90KGUsdCl7cmV0dXJuIG5ldyBEcCh7Y2hlY2s6Im1heF9zaXplIiwuLi53KHQpLG1heGltdW06ZX0pfWZ1bmN0aW9uIG50KGUsdCl7cmV0dXJuIG5ldyBCcCh7Y2hlY2s6Im1pbl9zaXplIiwuLi53KHQpLG1pbmltdW06ZX0pfWZ1bmN0aW9uIHRuKGUsdCl7cmV0dXJuIG5ldyBGcCh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi53KHQpLHNpemU6ZX0pfWZ1bmN0aW9uIG5uKGUsdCl7cmV0dXJuIG5ldyBVcCh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLncodCksbWF4aW11bTplfSl9ZnVuY3Rpb24gcHQoZSx0KXtyZXR1cm4gbmV3IEhwKHtjaGVjazoibWluX2xlbmd0aCIsLi4udyh0KSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBvbihlLHQpe3JldHVybiBuZXcgV3Aoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi53KHQpLGxlbmd0aDplfSl9ZnVuY3Rpb24gWG4oZSx0KXtyZXR1cm4gbmV3IFZwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4udyh0KSxwYXR0ZXJuOmV9KX1mdW5jdGlvbiBlbyhlKXtyZXR1cm4gbmV3IEpwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiB0byhlKXtyZXR1cm4gbmV3IEtwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiBubyhlLHQpe3JldHVybiBuZXcgR3Aoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi53KHQpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiBvbyhlLHQpe3JldHVybiBuZXcgWXAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi53KHQpLHByZWZpeDplfSl9ZnVuY3Rpb24gc28oZSx0KXtyZXR1cm4gbmV3IFFwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLncodCksc3VmZml4OmV9KX1mdW5jdGlvbiBucihlLHQsbil7cmV0dXJuIG5ldyBYcCh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTp0LC4uLncobil9KX1mdW5jdGlvbiBybyhlLHQpe3JldHVybiBuZXcgZWgoe2NoZWNrOiJwcm9wZXJ0aWVzIixzaGFwZTplLC4uLncodCl9KX1mdW5jdGlvbiBpbyhlLHQpe3JldHVybiBuZXcgdGgoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6ZSwuLi53KHQpfSl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIG5ldyBuaCh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIGFvKGUpe3JldHVybiBLZSh0PT50Lm5vcm1hbGl6ZShlKSl9ZnVuY3Rpb24gY28oKXtyZXR1cm4gS2UoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIGxvKCl7cmV0dXJuIEtlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gdW8oKXtyZXR1cm4gS2UoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBwbygpe3JldHVybiBLZShlPT5FZChlKSl9ZnVuY3Rpb24gdWYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6dCwuLi53KG4pfSl9ZnVuY3Rpb24gX3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi53KG4pfSl9ZnVuY3Rpb24gU3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4udyhuKX0pfWZ1bmN0aW9uIFR2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6bixkaXNjcmltaW5hdG9yOnQsLi4udyhvKX0pfWZ1bmN0aW9uIHp2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1mdW5jdGlvbiB4dihlLHQsbixvKXtjb25zdCBzPW4gaW5zdGFuY2VvZiBNLHI9cz9vOm4saT1zP246bnVsbDtyZXR1cm4gbmV3IGUoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi53KHIpfSl9ZnVuY3Rpb24gSXYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24gQXYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24gQ3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi53KG4pfSl9ZnVuY3Rpb24gUHYoZSx0LG4pe2NvbnN0IG89QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAocz0+W3Msc10pKTp0O3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLncobil9KX1mdW5jdGlvbiBFdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIFJ2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLncobil9KX1mdW5jdGlvbiBkZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZmlsZSIsLi4udyh0KX0pfWZ1bmN0aW9uIE92KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9ZnVuY3Rpb24gTnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIFp2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBqdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpScyhuKX19KX1mdW5jdGlvbiBNdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4udyhuKX0pfWZ1bmN0aW9uIHF2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIEx2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6dCxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246VWkobil9KX1mdW5jdGlvbiBEdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9ZnVuY3Rpb24gQnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIEZ2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIFV2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWZ1bmN0aW9uIEh2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHBmKGUsdCxuKXtjb25zdCBvPXcobik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjp0LC4uLm99KX1mdW5jdGlvbiBoZihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnQsLi4udyhuKX0pfWZ1bmN0aW9uIG1mKGUsdCl7Y29uc3Qgbj1mZihvPT4oby5hZGRJc3N1ZT1zPT57aWYodHlwZW9mIHM9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goVnQocyxvLnZhbHVlLG4uX3pvZC5kZWYpKTtlbHNle2NvbnN0IHI9cztyLmZhdGFsJiYoci5jb250aW51ZT0hMSksci5jb2RlPz8oci5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gcnx8KHIuaW5wdXQ9by52YWx1ZSksci5pbnN0Pz8oci5pbnN0PW4pLHIuY29udGludWU/PyhyLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKFZ0KHIpKX19LGUoby52YWx1ZSxvKSksdCk7cmV0dXJuIG59ZnVuY3Rpb24gZmYoZSx0KXtjb25zdCBuPW5ldyBpZSh7Y2hlY2s6ImN1c3RvbSIsLi4udyh0KX0pO3JldHVybiBuLl96b2QuY2hlY2s9ZSxufWZ1bmN0aW9uIGdmKGUpe2NvbnN0IHQ9bmV3IGllKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIHQuX3pvZC5vbmF0dGFjaD1bbj0+e2NvbnN0IG89amUuZ2V0KG4pPz97fTtqZS5hZGQobix7Li4ubyxkZXNjcmlwdGlvbjplfSl9XSx0Ll96b2QuY2hlY2s9KCk9Pnt9LHR9ZnVuY3Rpb24gYmYoZSl7Y29uc3QgdD1uZXcgaWUoe2NoZWNrOiJtZXRhIn0pO3JldHVybiB0Ll96b2Qub25hdHRhY2g9W249Pntjb25zdCBvPWplLmdldChuKT8/e307amUuYWRkKG4sey4uLm8sLi4uZX0pfV0sdC5fem9kLmNoZWNrPSgpPT57fSx0fWZ1bmN0aW9uIHZmKGUsdCl7Y29uc3Qgbj13KHQpO2xldCBvPW4udHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLHM9bi5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO24uY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpLHM9cy5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSk7Y29uc3Qgcj1uZXcgU2V0KG8pLGk9bmV3IFNldChzKSxhPWUuQ29kZWM/P1NhLHU9ZS5Cb29sZWFuPz92YSxkPWUuU3RyaW5nPz9RbixwPW5ldyBkKHt0eXBlOiJzdHJpbmciLGVycm9yOm4uZXJyb3J9KSxoPW5ldyB1KHt0eXBlOiJib29sZWFuIixlcnJvcjpuLmVycm9yfSksZj1uZXcgYSh7dHlwZToicGlwZSIsaW46cCxvdXQ6aCx0cmFuc2Zvcm06KCgkLGspPT57bGV0IHo9JDtyZXR1cm4gbi5jYXNlIT09InNlbnNpdGl2ZSImJih6PXoudG9Mb3dlckNhc2UoKSksci5oYXMoeik/ITA6aS5oYXMoeik/ITE6KGsuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLnIsLi4uaV0saW5wdXQ6ay52YWx1ZSxpbnN0OmYsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoJCxrKT0+JD09PSEwP29bMF18fCJ0cnVlIjpzWzBdfHwiZmFsc2UiKSxlcnJvcjpuLmVycm9yfSk7cmV0dXJuIGYuX3pvZC5iYWcudHJ1dGh5PW8sZi5fem9kLmJhZy5mYWxzeT1zLGYuX3pvZC5iYWcuY2FzZT1uLmNhc2U/PyJpbnNlbnNpdGl2ZSIsZn1mdW5jdGlvbiBzbihlLHQsbixvPXt9KXtjb25zdCBzPXcobykscj17Y2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnQsZm46dHlwZW9mIG49PSJmdW5jdGlvbiI/bjphPT5uLnRlc3QoYSksLi4uc307cmV0dXJuIG4gaW5zdGFuY2VvZiBSZWdFeHAmJihyLnBhdHRlcm49biksbmV3IGUocil9Y29uc3QgV3Y9KCk9Pih7fSksVnY9KCk9Pih7fSksSnY9KCk9Pih7fSksS3Y9KCk9Pih7fSksR3Y9KCk9Pih7fSkseWY9KCk9PigpPT4oe30pLF9pPSgpPT4oKT0+KHt9KSxZdj0oKT0+KHt9KSxNZT0oKT0+KHt9KSxRdj0oKT0+KHt9KSxYdj0oKT0+KHt9KSxleT0oKT0+KHt9KSx0eT0oKT0+KHt9KSxueT0oKT0+KHt9KSxveT0oKT0+KHt9KSxzeT0oKT0+KHt9KSxyeT0oKT0+KHt9KSxpeT0oKT0+KHt9KSxheT0oKT0+KHt9KSxjeT0oKT0+KHt9KSxseT0oKT0+KHt9KSx1eT0oKT0+KHt9KSxkeT0oKT0+KHt9KSxweT0oKT0+KHt9KSxoeT0oKT0+KHt9KSxteT0oKT0+KHt9KSxmeT0oKT0+KHt9KSxneT0oKT0+KHt9KSxieT0oKT0+KHt9KSx2eT0oKT0+KHt9KSx5eT0oKT0+KHt9KSwkeT0oKT0+KHt9KSxreT0oKT0+KHt9KSx3eT0oKT0+KHt9KSwkZj0oKT0+KHt9KSxfeT0oKT0+KHt9KSxTeT0oKT0+KHt9KSxUeT0oKT0+KHt9KSx6eT0oKT0+KHt9KSx4eT0oKT0+KHt9KSxJeT0oKT0+KHt9KSxBeT0oKT0+KHt9KSxDeT0oKT0+KHt9KSxQeT0oKT0+KHt9KSxFeT0oKT0+KHt9KSxSeT0oKT0+KHt9KSxrZj0oKT0+KHt9KSxPeT0oKT0+KHt9KSxhYz0oKT0+KHt9KTtjbGFzcyBOeXt9Y29uc3QgWnk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHdmPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OkpoLCRab2RBcnJheTpYaCwkWm9kQXN5bmNFcnJvcjp1dCwkWm9kQmFzZTY0OkVoLCRab2RCYXNlNjRVUkw6T2gsJFpvZEJpZ0ludDp5YSwkWm9kQmlnSW50Rm9ybWF0OlVoLCRab2RCb29sZWFuOnZhLCRab2RDSURSdjQ6SWgsJFpvZENJRFJ2NjpDaCwkWm9kQ1VJRDpnaCwkWm9kQ1VJRDI6YmgsJFpvZENhdGNoOmttLCRab2RDaGVjazppZSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6THAsJFpvZENoZWNrRW5kc1dpdGg6UXAsJFpvZENoZWNrR3JlYXRlclRoYW46dWEsJFpvZENoZWNrSW5jbHVkZXM6R3AsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOldwLCRab2RDaGVja0xlc3NUaGFuOmxhLCRab2RDaGVja0xvd2VyQ2FzZTpKcCwkWm9kQ2hlY2tNYXhMZW5ndGg6VXAsJFpvZENoZWNrTWF4U2l6ZTpEcCwkWm9kQ2hlY2tNaW1lVHlwZTp0aCwkWm9kQ2hlY2tNaW5MZW5ndGg6SHAsJFpvZENoZWNrTWluU2l6ZTpCcCwkWm9kQ2hlY2tNdWx0aXBsZU9mOk1wLCRab2RDaGVja051bWJlckZvcm1hdDpxcCwkWm9kQ2hlY2tPdmVyd3JpdGU6bmgsJFpvZENoZWNrUHJvcGVydGllczplaCwkWm9kQ2hlY2tQcm9wZXJ0eTpYcCwkWm9kQ2hlY2tSZWdleDpWcCwkWm9kQ2hlY2tTaXplRXF1YWxzOkZwLCRab2RDaGVja1N0YXJ0c1dpdGg6WXAsJFpvZENoZWNrU3RyaW5nRm9ybWF0OlluLCRab2RDaGVja1VwcGVyQ2FzZTpLcCwkWm9kQ29kZWM6U2EsJFpvZENyZWRpdENhcmQ6amgsJFpvZEN1c3RvbTpJbSwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OkJoLCRab2RDeWNsaWNFcnJvcjpBbSwkWm9kRGF0ZTpRaCwkWm9kRGVmYXVsdDpibSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOmltLCRab2RFMTY0Ok5oLCRab2RFbWFpbDpjaCwkWm9kRW1vamk6bWgsJFpvZEVuY29kZUVycm9yOnFzLCRab2RFbnVtOmRtLCRab2RFcnJvcjpYZCwkWm9kRXhhY3RPcHRpb25hbDpmbSwkWm9kRmlsZTpobSwkWm9kRnVuY3Rpb246em0sJFpvZEdVSUQ6aWgsJFpvZElCQU46cWgsJFpvZElQdjQ6VGgsJFpvZElQdjY6emgsJFpvZElTT0RhdGU6d2gsJFpvZElTT0RhdGVUaW1lOmtoLCRab2RJU09EdXJhdGlvbjpTaCwkWm9kSVNPVGltZTpfaCwkWm9kSW50ZXJzZWN0aW9uOmFtLCRab2RKV1Q6RGgsJFpvZEtTVUlEOiRoLCRab2RMYXp5OlRhLCRab2RMaXRlcmFsOnBtLCRab2RNQUM6eGgsJFpvZE1hcDpsbSwkWm9kTmFOOndtLCRab2ROYW5vSUQ6ZmgsJFpvZE5ldmVyOkdoLCRab2ROb25PcHRpb25hbDp5bSwkWm9kTnVsbDpWaCwkWm9kTnVsbGFibGU6Z20sJFpvZE51bWJlcjpiYSwkWm9kTnVtYmVyRm9ybWF0OkZoLCRab2RPYmplY3Q6bm0sJFpvZE9iamVjdEpJVDpvbSwkWm9kT3B0aW9uYWw6d2EsJFpvZFBpcGU6X2EsJFpvZFByZWZhdWx0OnZtLCRab2RQcmVwcm9jZXNzOl9tLCRab2RQcm9taXNlOnhtLCRab2RSZWFkb25seTpTbSwkWm9kUmVhbEVycm9yOlJlLCRab2RSZWNvcmQ6Y20sJFpvZFJlZ2lzdHJ5Ok9tLCRab2RTZXQ6dW0sJFpvZFN0cmluZzpRbiwkWm9kU3RyaW5nRm9ybWF0OnRlLCRab2RTdWNjZXNzOiRtLCRab2RTeW1ib2w6SGgsJFpvZFRlbXBsYXRlTGl0ZXJhbDpUbSwkWm9kVHJhbnNmb3JtOm1tLCRab2RUdXBsZTprYSwkWm9kVHlwZTpNLCRab2RVTElEOnZoLCRab2RVUkw6aGgsJFpvZFVVSUQ6YWgsJFpvZFVuZGVmaW5lZDpXaCwkWm9kVW5pb246VnMsJFpvZFVua25vd246S2gsJFpvZFZvaWQ6WWgsJFpvZFhJRDp5aCwkWm9kWG9yOnNtLCRicmFuZDpWaSwkY29uc3RydWN0b3I6bSwkaW5wdXQ6SWEsJG91dHB1dDp4YSxEb2M6b2gsSU5WQUxJRDpDYSxKU09OU2NoZW1hOlp5LEpTT05TY2hlbWFHZW5lcmF0b3I6TnksTkVWRVI6V2ksVGltZVByZWNpc2lvbjpuYyxVUkxfQkFEX0ZPUk1BVDpwYSxVUkxfVU5QQVJTRUFCTEU6Wm4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6UGEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6RWEsX2FueTpuZixfYXJyYXk6dWYsX2Jhc2U2NDpRYSxfYmFzZTY0dXJsOlhhLF9iaWdpbnQ6S20sX2Jvb2xlYW46Vm0sX2NhdGNoOkx2LF9jaGVjazpmZixfY2lkcnY0OkdhLF9jaWRydjY6WWEsX2NvZXJjZWRCaWdpbnQ6R20sX2NvZXJjZWRCb29sZWFuOkptLF9jb2VyY2VkRGF0ZTpjZixfY29lcmNlZE51bWJlcjpEbSxfY29lcmNlZFN0cmluZzpabSxfY3JlZGl0Q2FyZDpNbSxfY3VpZDpGYSxfY3VpZDI6VWEsX2N1c3RvbTpwZixfZGF0ZTphZixfZGVjb2RlOllpLF9kZWNvZGVBc3luYzpYaSxfZGVmYXVsdDpqdixfZGlzY3JpbWluYXRlZFVuaW9uOlR2LF9lMTY0OmVjLF9lbWFpbDpOYSxfZW1vamk6RGEsX2VuY29kZTpHaSxfZW5jb2RlQXN5bmM6UWksX2VuZHNXaXRoOnNvLF9lbnVtOlB2LF9maWxlOmRmLF9mbG9hdDMyOkZtLF9mbG9hdDY0OlVtLF9ndDp0dCxfZ3RlOlBlLF9ndWlkOlphLF9pYmFuOnFtLF9pbmNsdWRlczpubyxfaW50OkJtLF9pbnQzMjpIbSxfaW50NjQ6WW0sX2ludGVyc2VjdGlvbjp6dixfaXB2NDpKYSxfaXB2NjpLYSxfaXNvRGF0ZTpzYyxfaXNvRGF0ZVRpbWU6b2MsX2lzb0R1cmF0aW9uOmljLF9pc29UaW1lOnJjLF9qd3Q6dGMsX2tzdWlkOlZhLF9sYXp5OlV2LF9sZW5ndGg6b24sX2xpdGVyYWw6UnYsX2xvd2VyY2FzZTplbyxfbHQ6ZXQsX2x0ZTpDZSxfbWFjOmptLF9tYXA6QXYsX21heDpDZSxfbWF4TGVuZ3RoOm5uLF9tYXhTaXplOk90LF9taW1lOmlvLF9taW46UGUsX21pbkxlbmd0aDpwdCxfbWluU2l6ZTpudCxfbXVsdGlwbGVPZjpfdCxfbmFuOmxmLF9uYW5vaWQ6QmEsX25hdGl2ZUVudW06RXYsX25lZ2F0aXZlOlhzLF9uZXZlcjpzZixfbm9ubmVnYXRpdmU6dHIsX25vbm9wdGlvbmFsOk12LF9ub25wb3NpdGl2ZTplcixfbm9ybWFsaXplOmFvLF9udWxsOnRmLF9udWxsYWJsZTpadixfbnVtYmVyOkxtLF9vcHRpb25hbDpOdixfb3ZlcndyaXRlOktlLF9wYXJzZTpIbixfcGFyc2VBc3luYzpXbixfcGlwZTpEdixfcG9zaXRpdmU6UXMsX3Byb21pc2U6SHYsX3Byb3BlcnRpZXM6cm8sX3Byb3BlcnR5Om5yLF9yZWFkb25seTpCdixfcmVjb3JkOkl2LF9yZWZpbmU6aGYsX3JlZ2V4OlhuLF9zYWZlRGVjb2RlOnRhLF9zYWZlRGVjb2RlQXN5bmM6b2EsX3NhZmVFbmNvZGU6ZWEsX3NhZmVFbmNvZGVBc3luYzpuYSxfc2FmZVBhcnNlOlZuLF9zYWZlUGFyc2VBc3luYzpKbixfc2V0OkN2LF9zaXplOnRuLF9zbHVnaWZ5OnBvLF9zdGFydHNXaXRoOm9vLF9zdHJpbmc6Tm0sX3N0cmluZ0Zvcm1hdDpzbixfc3RyaW5nYm9vbDp2Zixfc3VjY2Vzczpxdixfc3VwZXJSZWZpbmU6bWYsX3N5bWJvbDpYbSxfdGVtcGxhdGVMaXRlcmFsOkZ2LF90b0xvd2VyQ2FzZTpsbyxfdG9VcHBlckNhc2U6dW8sX3RyYW5zZm9ybTpPdixfdHJpbTpjbyxfdHVwbGU6eHYsX3VpbnQzMjpXbSxfdWludDY0OlFtLF91bGlkOkhhLF91bmRlZmluZWQ6ZWYsX3VuaW9uOl92LF91bmtub3duOm9mLF91cHBlcmNhc2U6dG8sX3VybDpZcyxfdXVpZDpqYSxfdXVpZHY0Ok1hLF91dWlkdjY6cWEsX3V1aWR2NzpMYSxfdm9pZDpyZixfeGlkOldhLF94b3I6U3YsYmFzZTY0Q2hhcnNldDpQaCxiYXNlNjR1cmxDaGFyc2V0OmdhLGNhblBhcnNlVVJMOmhhLGNsb25lOmFlLGNvbXBpbGU6UmEsY29tcGlsZUZuOnd2LGNvbmZpZzpoZSxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6X2ksY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOnlmLGRlY29kZTpBYixkZWNvZGVBc3luYzpQYixkZXNjcmliZTpnZixlbmNvZGU6SWIsZW5jb2RlQXN5bmM6Q2IsZXh0cmFjdERlZnM6S3YsZmluYWxpemU6R3YsZmxhdHRlbkVycm9yOkxzLGZvcm1hdEVycm9yOkRzLGdldERpc2NyaW1pbmF0ZWRPcHRpb246JGEsZ2xvYmFsQ29uZmlnOlNlLGdsb2JhbFJlZ2lzdHJ5OmplLGhhbmRsZVVucmVwcmVzZW50YWJsZTpWdixpbml0aWFsaXplQ29udGV4dDpXdixpc0JhY2tFZGdlOkVtLGlzUmVjdXJzaXZlU2NoZW1hOnZ2LGlzVmFsaWRCYXNlNjQ6ZmEsaXNWYWxpZEJhc2U2NFVSTDpSaCxpc1ZhbGlkQ0lEUnY2OkFoLGlzVmFsaWRDcmVkaXRDYXJkOlpoLGlzVmFsaWRJQkFOOk1oLGlzVmFsaWRJUHY2Om1hLGlzVmFsaWRKV1Q6TGgsbG9jYWxlczp6YSxtZW1vaXplcjpKcyxtZXJnZVZhbHVlczpicyxtZXRhOmJmLHBhcnNlOmJpLHBhcnNlQXN5bmM6dmkscGFyc2VVUkxPYmplY3Q6dWgscHJldHRpZnlFcnJvcjpLaSxwcm9jZXNzOll2LHByb2Nlc3NTY2hlbWE6SnYscmVnZXhlczpXcyxyZWdpc3RyeTpLcyxzYWZlRGVjb2RlOlJiLHNhZmVEZWNvZGVBc3luYzpOYixzYWZlRW5jb2RlOkViLHNhZmVFbmNvZGVBc3luYzpPYixzYWZlUGFyc2U6dHAsc2FmZVBhcnNlQXN5bmM6U2Isc3RhbmRhcmRQcm9wczpkYSxzdHJpcFRhYkFuZE5ld2xpbmU6JGksdG9Eb3RQYXRoOmVwLHRvSlNPTlNjaGVtYTphYyx0b1pvZDpQcyx0cmVlaWZ5RXJyb3I6SmksdXJsSG9zdG5hbWVPazpkaCx1cmxQcm90b2NvbE9rOnBoLHV0aWw6SGksdmFsaWRhdGU6RnMsdmFsaWRhdGVBc3luYzpVcyx2YWxpZGF0ZVVSTDpsaCx2ZXJzaW9uOnNoLHdpdGhQYXJzZXI6T2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSnU9U3ltYm9sKCJ6LnZpc2l0L3Jlc29sdmluZyIpO2Z1bmN0aW9uIGNjKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OihpLGEpPT57Y29uc3QgdT10W2kuX3pvZC5kZWYudHlwZV07cmV0dXJuIHU/dShpLGEpOml9LG89bmV3IE1hcDtmdW5jdGlvbiBzKGkpe2NvbnN0IGE9by5nZXQoaSk7aWYoYT09PUp1KXJldHVybiBuZXcgVGEoe3R5cGU6ImxhenkiLGdldHRlcjooKT0+by5nZXQoaSl9KTtpZihhIT09dm9pZCAwKXJldHVybiBhO28uc2V0KGksSnUpO2NvbnN0IHU9cihpKSxkPW4odSx1IT09aSk7cmV0dXJuIG8uc2V0KGksZCksZH1mdW5jdGlvbiByKGkpe2NvbnN0IGE9aS5fem9kLmRlZjtzd2l0Y2goYS50eXBlKXtjYXNlIm9iamVjdCI6e2NvbnN0IGQ9YS5zaGFwZSxwPU9iamVjdC5rZXlzKGQpO2xldCBoPSExO2NvbnN0IGY9e307Zm9yKGNvbnN0IGsgb2YgcCl7Y29uc3Qgej1zKGRba10pO3ohPT1kW2tdJiYoaD0hMCksZltrXT16fWxldCAkPWEuY2F0Y2hhbGw7cmV0dXJuIGEuY2F0Y2hhbGwmJigkPXMoYS5jYXRjaGFsbCksJCE9PWEuY2F0Y2hhbGwmJihoPSEwKSksaD9hZShpLHsuLi5hLHNoYXBlOmYsY2F0Y2hhbGw6JH0pOml9Y2FzZSJhcnJheSI6e2NvbnN0IGQ9cyhhLmVsZW1lbnQpO3JldHVybiBkPT09YS5lbGVtZW50P2k6YWUoaSx7Li4uYSxlbGVtZW50OmR9KX1jYXNlInR1cGxlIjp7Y29uc3QgZD1hLml0ZW1zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0ICQgb2YgZCl7Y29uc3Qgaz1zKCQpO2shPT0kJiYocD0hMCksaC5wdXNoKGspfWxldCBmPWEucmVzdDtyZXR1cm4gYS5yZXN0JiYoZj1zKGEucmVzdCksZiE9PWEucmVzdCYmKHA9ITApKSxwP2FlKGksey4uLmEsaXRlbXM6aCxyZXN0OmZ9KTppfWNhc2UicmVjb3JkIjpjYXNlIm1hcCI6e2NvbnN0IGQ9cyhhLmtleVR5cGUpLHA9cyhhLnZhbHVlVHlwZSk7cmV0dXJuIGQ9PT1hLmtleVR5cGUmJnA9PT1hLnZhbHVlVHlwZT9pOmFlKGksey4uLmEsa2V5VHlwZTpkLHZhbHVlVHlwZTpwfSl9Y2FzZSJzZXQiOntjb25zdCBkPXMoYS52YWx1ZVR5cGUpO3JldHVybiBkPT09YS52YWx1ZVR5cGU/aTphZShpLHsuLi5hLHZhbHVlVHlwZTpkfSl9Y2FzZSJ1bmlvbiI6e2NvbnN0IGQ9YS5vcHRpb25zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0IGYgb2YgZCl7Y29uc3QgJD1zKGYpOyQhPT1mJiYocD0hMCksaC5wdXNoKCQpfXJldHVybiBwP2FlKGksey4uLmEsb3B0aW9uczpofSk6aX1jYXNlImludGVyc2VjdGlvbiI6e2NvbnN0IGQ9cyhhLmxlZnQpLHA9cyhhLnJpZ2h0KTtyZXR1cm4gZD09PWEubGVmdCYmcD09PWEucmlnaHQ/aTphZShpLHsuLi5hLGxlZnQ6ZCxyaWdodDpwfSl9Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6e2NvbnN0IGQ9cyhhLmlubmVyVHlwZSk7cmV0dXJuIGQ9PT1hLmlubmVyVHlwZT9pOmFlKGksey4uLmEsaW5uZXJUeXBlOmR9KX1jYXNlInBpcGUiOntjb25zdCBkPXMoYS5pbikscD1zKGEub3V0KTtyZXR1cm4gZD09PWEuaW4mJnA9PT1hLm91dD9pOmFlKGksey4uLmEsaW46ZCxvdXQ6cH0pfWNhc2UiZnVuY3Rpb24iOntjb25zdCBkPXMoYS5pbnB1dCkscD1zKGEub3V0cHV0KTtyZXR1cm4gZD09PWEuaW5wdXQmJnA9PT1hLm91dHB1dD9pOmFlKGksey4uLmEsaW5wdXQ6ZCxvdXRwdXQ6cH0pfWNhc2UibGF6eSI6e2NvbnN0IGQ9YS5nZXR0ZXIse19jYWNoZWRJbm5lcjpwLC4uLmh9PWE7cmV0dXJuIGFlKGksey4uLmgsZ2V0dGVyOigpPT5zKGQoKSl9KX1jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gaX19cmV0dXJuIHMoZSl9ZnVuY3Rpb24gbGMoZSl7cmV0dXJuISFlLl96b2R9ZnVuY3Rpb24gX2YoZSx0KXtyZXR1cm4gbGMoZSk/dHAoZSx0KTplLnNhZmVQYXJzZSh0KX1mdW5jdGlvbiBqeShlKXtpZighZSlyZXR1cm47bGV0IHQ7aWYobGMoZSk/dD1lLl96b2Q/LmRlZj8uc2hhcGU6dD1lLnNoYXBlLCEhdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiB0KCl9Y2F0Y2h7cmV0dXJufXJldHVybiB0fX1mdW5jdGlvbiBNeShlKXtpZihsYyhlKSl7Y29uc3Qgcj1lLl96b2Q/LmRlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19fWNvbnN0IG49ZS5fZGVmO2lmKG4pe2lmKG4udmFsdWUhPT12b2lkIDApcmV0dXJuIG4udmFsdWU7aWYoQXJyYXkuaXNBcnJheShuLnZhbHVlcykmJm4udmFsdWVzLmxlbmd0aD4wKXJldHVybiBuLnZhbHVlc1swXX1jb25zdCBvPWUudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBxeT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6c28sZ3Q6dHQsZ3RlOlBlLGluY2x1ZGVzOm5vLGxlbmd0aDpvbixsb3dlcmNhc2U6ZW8sbHQ6ZXQsbHRlOkNlLG1heExlbmd0aDpubixtYXhTaXplOk90LG1pbWU6aW8sbWluTGVuZ3RoOnB0LG1pblNpemU6bnQsbXVsdGlwbGVPZjpfdCxuZWdhdGl2ZTpYcyxub25uZWdhdGl2ZTp0cixub25wb3NpdGl2ZTplcixub3JtYWxpemU6YW8sb3ZlcndyaXRlOktlLHBvc2l0aXZlOlFzLHByb3BlcnRpZXM6cm8scHJvcGVydHk6bnIscmVnZXg6WG4sc2l6ZTp0bixzbHVnaWZ5OnBvLHN0YXJ0c1dpdGg6b28sdG9Mb3dlckNhc2U6bG8sdG9VcHBlckNhc2U6dW8sdHJpbTpjbyx1cHBlcmNhc2U6dG99LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksS3U9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSk7ZnVuY3Rpb24gbnMoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89bih0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KX1jb25zdCBTZj0oZSx0KT0+e1hkLmluaXQoZSx0KSxlLm5hbWU9IlpvZEVycm9yIjtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtLdS5oYXMobil8fChLdS5hZGQobiksbnMobiwiZm9ybWF0IixvPT5zPT5EcyhvLHMpKSxucyhuLCJmbGF0dGVuIixvPT5zPT5McyhvLHMpKSxucyhuLCJhZGRJc3N1ZSIsbz0+cz0+e28uaXNzdWVzLnB1c2gocyksby5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG8uaXNzdWVzLHBzLDIpfSksbnMobiwiYWRkSXNzdWVzIixvPT5zPT57by5pc3N1ZXMucHVzaCguLi5zKSxvLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoby5pc3N1ZXMscHMsMil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiaXNFbXB0eSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfX0pKX0sVGY9bSgiWm9kRXJyb3IiLFNmKSxJZT1tKCJab2RFcnJvciIsU2Ysdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KSx1Yz1IbihJZSksZGM9V24oSWUpLHBjPVZuKEllKSxoYz1KbihJZSksbWM9R2koSWUpLGZjPVlpKEllKSxnYz1RaShJZSksYmM9WGkoSWUpLHZjPWVhKEllKSx5Yz10YShJZSksJGM9bmEoSWUpLGtjPW9hKEllKTtmdW5jdGlvbiBMeSgpe1NlLmxvY2FsZUVycm9yfHxoZShSbSgpKX1mdW5jdGlvbiBOdCgpe1NlLm1lbW9pemVyfHxoZSh7bWVtb2l6ZXI6SnMoKX0pfWNvbnN0IEw9bSgiWm9kVHlwZSIsKGUsdCk9PihMeSgpLE0uaW5pdChlLHQpLGUuZGVmPXQsZS50eXBlPXQudHlwZSxlKSx7Y2hlY2soLi4uZSl7Y29uc3QgdD10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZSh5ZSh0LHtjaGVja3M6Wy4uLnQuY2hlY2tzPz9bXSwuLi5lLm1hcChuPT50eXBlb2Ygbj09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6bixkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19Om4pXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayguLi5lKX0sY2xvbmUoZSx0KXtyZXR1cm4gYWUodGhpcyxlLHQpfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihlLHQpe3JldHVybiBlLmFkZCh0aGlzLHQpLHRoaXN9LHJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKFVyKGUsdCkpfSxzdXBlclJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEhyKGUsdCkpfSxvdmVyd3JpdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soS2UoZSkpfSxvcHRpb25hbCgpe3JldHVybiBuZSh0aGlzKX0sZXhhY3RPcHRpb25hbCgpe3JldHVybiBTcih0aGlzKX0sbnVsbGFibGUoKXtyZXR1cm4gR3QodGhpcyl9LG51bGxpc2goKXtyZXR1cm4gbmUoR3QodGhpcykpfSxub25vcHRpb25hbChlKXtyZXR1cm4gQ3IodGhpcyxlKX0sYXJyYXkoKXtyZXR1cm4gUih0aGlzKX0sb3IoZSl7cmV0dXJuIEIoW3RoaXMsZV0pfSxhbmQoZSl7cmV0dXJuIGJuKHRoaXMsZSl9LHRyYW5zZm9ybShlKXtyZXR1cm4gTW4odGhpcyxabyhlKSl9LGRlZmF1bHQoZSl7cmV0dXJuIHhyKHRoaXMsZSl9LHByZWZhdWx0KGUpe3JldHVybiBBcih0aGlzLGUpfSxjYXRjaChlKXtyZXR1cm4gUnIodGhpcyxlKX0scGlwZShlKXtyZXR1cm4gTW4odGhpcyxlKX0scmVhZG9ubHkoKXtyZXR1cm4ganIodGhpcyl9LGRlc2NyaWJlKGUpe2NvbnN0IHQ9dGhpcy5jbG9uZSgpO3JldHVybiBqZS5hZGQodCx7ZGVzY3JpcHRpb246ZX0pLHR9LG1ldGEoLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBqZS5nZXQodGhpcyk7Y29uc3QgdD10aGlzLmNsb25lKCk7cmV0dXJuIGplLmFkZCh0LGVbMF0pLHR9LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KGUsLi4udCl7cmV0dXJuIHQubGVuZ3RoPT09MD9lKHRoaXMpOmUodGhpcywuLi50KX0sZ2V0In5zdGFuZGFyZCIoKXtyZXR1cm4gTXModGhpcywifnN0YW5kYXJkIix7Li4uZGEodGhpcyksanNvblNjaGVtYTp7aW5wdXQ6X2koKSxvdXRwdXQ6X2koKX19KX0sc2V0In5zdGFuZGFyZCIoZSl7WGUodGhpcywifnN0YW5kYXJkIixlKX0scGFyc2U6ZnVuY3Rpb24gZSh0LG4pe3JldHVybiB1Yyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0scGFyc2VBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGRjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlUGFyc2UoZSx0KXtyZXR1cm4gcGModGhpcyxlLHQpfSxhc3luYyBzYWZlUGFyc2VBc3luYyhlLHQpe3JldHVybiBoYyh0aGlzLGUsdCl9LGdldCBzcGEoKXtyZXR1cm4gdGhpcz8uc2FmZVBhcnNlQXN5bmN9LHNldCBzcGEoZSl7WGUodGhpcywic3BhIixlKX0sdmFsaWRhdGUoZSx0KXtyZXR1cm4gRnModGhpcyxlLHQpfSx2YWxpZGF0ZUFzeW5jKGUsdCl7cmV0dXJuIFVzKHRoaXMsZSx0KX0sZW5jb2RlOmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gbWModGhpcyx0LG4se2NhbGxlZTplfSl9LGRlY29kZTpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGZjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxlbmNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGdjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxkZWNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGJjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlRW5jb2RlKGUsdCl7cmV0dXJuIHZjKHRoaXMsZSx0KX0sc2FmZURlY29kZShlLHQpe3JldHVybiB5Yyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVFbmNvZGVBc3luYyhlLHQpe3JldHVybiAkYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVEZWNvZGVBc3luYyhlLHQpe3JldHVybiBrYyh0aGlzLGUsdCl9LHRvSlNPTlNjaGVtYShlKXtyZXR1cm4geWYoKShlKX0sZ2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIGplLmdldCh0aGlzKT8uZGVzY3JpcHRpb259LGdldCBfZGVmKCl7cmV0dXJuIHRoaXMuX3pvZC5kZWZ9fSksaG89bSgiX1pvZFN0cmluZyIsKGUsdCk9PntRbi5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlF2KCl9LFVuKHtmb3JtYXQ6ZT0+TWUoKS5mb3JtYXQ/P251bGwsbWluTGVuZ3RoOmU9Pk1lKCkubWluaW11bT8/bnVsbCxtYXhMZW5ndGg6ZT0+TWUoKS5tYXhpbXVtPz9udWxsfSx7cmVnZXgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWG4oLi4uZSkpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubyguLi5lKSl9LHN0YXJ0c1dpdGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2sob28oLi4uZSkpfSxlbmRzV2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhzbyguLi5lKSl9LG1pbiguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhwdCguLi5lKSl9LG1heCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubiguLi5lKSl9LGxlbmd0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhvbiguLi5lKSl9LG5vbmVtcHR5KC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKHB0KDEsLi4uZSkpfSxsb3dlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2soZW8oZSkpfSx1cHBlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2sodG8oZSkpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soY28oKSl9LG5vcm1hbGl6ZSguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhhbyguLi5lKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sobG8oKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sodW8oKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhwbygpKX19KSkscm49bSgiWm9kU3RyaW5nIiwoZSx0KT0+e1FuLmluaXQoZSx0KSxoby5pbml0KGUsdCl9LHtlbWFpbChlKXtyZXR1cm4gdGhpcy5jaGVjayhOYShtbyxlKSl9LHVybChlKXtyZXR1cm4gdGhpcy5jaGVjayhZcyhkbixlKSl9LGp3dChlKXtyZXR1cm4gdGhpcy5jaGVjayh0YyhDbyxlKSl9LGVtb2ppKGUpe3JldHVybiB0aGlzLmNoZWNrKERhKGdvLGUpKX0sZ3VpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhaYShmbyxlKSl9LHV1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soamEoSGUsZSkpfSx1dWlkdjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soTWEoSGUsZSkpfSx1dWlkdjYoZSl7cmV0dXJuIHRoaXMuY2hlY2socWEoSGUsZSkpfSx1dWlkdjcoZSl7cmV0dXJuIHRoaXMuY2hlY2soTGEoSGUsZSkpfSxuYW5vaWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soQmEoYm8sZSkpfSxjdWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKEZhKHZvLGUpKX0sY3VpZDIoZSl7cmV0dXJuIHRoaXMuY2hlY2soVWEoeW8sZSkpfSx1bGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKEhhKCRvLGUpKX0sYmFzZTY0KGUpe3JldHVybiB0aGlzLmNoZWNrKFFhKHhvLGUpKX0sYmFzZTY0dXJsKGUpe3JldHVybiB0aGlzLmNoZWNrKFhhKElvLGUpKX0seGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKFdhKGtvLGUpKX0sa3N1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soVmEod28sZSkpfSxpcHY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEphKF9vLGUpKX0saXB2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhLYShTbyxlKSl9LGNpZHJ2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhHYShUbyxlKSl9LGNpZHJ2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhZYSh6byxlKSl9LGUxNjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soZWMoQW8sZSkpfSxkYXRldGltZShlKXtyZXR1cm4gdGhpcy5jaGVjayhvYyhhbixlKSl9LGRhdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soc2MoY24sZSkpfSx0aW1lKGUpe3JldHVybiB0aGlzLmNoZWNrKHJjKGxuLGUpKX0sZHVyYXRpb24oZSl7cmV0dXJuIHRoaXMuY2hlY2soaWModW4sZSkpfX0pO2Z1bmN0aW9uIGcoZSl7cmV0dXJuIE5tKHJuLGUpfWNvbnN0IFg9bSgiWm9kU3RyaW5nRm9ybWF0IiwoZSx0KT0+e3RlLmluaXQoZSx0KSxoby5pbml0KGUsdCl9KSxhbj1tKCJab2RJU09EYXRlVGltZSIsKGUsdCk9PntraC5pbml0KGUsdCksWC5pbml0KGUsdCl9KSxjbj1tKCJab2RJU09EYXRlIiwoZSx0KT0+e3doLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pLGxuPW0oIlpvZElTT1RpbWUiLChlLHQpPT57X2guaW5pdChlLHQpLFguaW5pdChlLHQpfSksdW49bSgiWm9kSVNPRHVyYXRpb24iLChlLHQpPT57U2guaW5pdChlLHQpLFguaW5pdChlLHQpfSksbW89bSgiWm9kRW1haWwiLChlLHQpPT57Y2guaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gd2MoZSl7cmV0dXJuIE5hKG1vLGUpfWNvbnN0IGZvPW0oIlpvZEdVSUQiLChlLHQpPT57aWguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gX2MoZSl7cmV0dXJuIFphKGZvLGUpfWNvbnN0IEhlPW0oIlpvZFVVSUQiLChlLHQpPT57YWguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIGphKEhlLGUpfWZ1bmN0aW9uIFRjKGUpe3JldHVybiBNYShIZSxlKX1mdW5jdGlvbiB6YyhlKXtyZXR1cm4gcWEoSGUsZSl9ZnVuY3Rpb24geGMoZSl7cmV0dXJuIExhKEhlLGUpfWNvbnN0IGRuPW0oIlpvZFVSTCIsKGUsdCk9PntoaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBJYyhlKXtyZXR1cm4gWXMoZG4sZSl9ZnVuY3Rpb24gQWMoZSl7cmV0dXJuIFlzKGRuLHtwcm90b2NvbDpzYSxob3N0bmFtZTprcCwuLi53KGUpfSl9Y29uc3QgZ289bSgiWm9kRW1vamkiLChlLHQpPT57bWguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gQ2MoZSl7cmV0dXJuIERhKGdvLGUpfWNvbnN0IGJvPW0oIlpvZE5hbm9JRCIsKGUsdCk9PntmaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBQYyhlKXtyZXR1cm4gQmEoYm8sZSl9Y29uc3Qgdm89bSgiWm9kQ1VJRCIsKGUsdCk9PntnaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBFYyhlKXtyZXR1cm4gRmEodm8sZSl9Y29uc3QgeW89bSgiWm9kQ1VJRDIiLChlLHQpPT57YmguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gUmMoZSl7cmV0dXJuIFVhKHlvLGUpfWNvbnN0ICRvPW0oIlpvZFVMSUQiLChlLHQpPT57dmguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gT2MoZSl7cmV0dXJuIEhhKCRvLGUpfWNvbnN0IGtvPW0oIlpvZFhJRCIsKGUsdCk9Pnt5aC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBOYyhlKXtyZXR1cm4gV2Eoa28sZSl9Y29uc3Qgd289bSgiWm9kS1NVSUQiLChlLHQpPT57JGguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gWmMoZSl7cmV0dXJuIFZhKHdvLGUpfWNvbnN0IF9vPW0oIlpvZElQdjQiLChlLHQpPT57VGguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gamMoZSl7cmV0dXJuIEphKF9vLGUpfWNvbnN0IG9yPW0oIlpvZE1BQyIsKGUsdCk9Pnt4aC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBNYyhlKXtyZXR1cm4gam0ob3IsZSl9Y29uc3QgU289bSgiWm9kSVB2NiIsKGUsdCk9Pnt6aC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBxYyhlKXtyZXR1cm4gS2EoU28sZSl9Y29uc3QgVG89bSgiWm9kQ0lEUnY0IiwoZSx0KT0+e0loLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIExjKGUpe3JldHVybiBHYShUbyxlKX1jb25zdCB6bz1tKCJab2RDSURSdjYiLChlLHQpPT57Q2guaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gRGMoZSl7cmV0dXJuIFlhKHpvLGUpfWNvbnN0IHhvPW0oIlpvZEJhc2U2NCIsKGUsdCk9PntFaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBCYyhlKXtyZXR1cm4gUWEoeG8sZSl9Y29uc3QgSW89bSgiWm9kQmFzZTY0VVJMIiwoZSx0KT0+e09oLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEZjKGUpe3JldHVybiBYYShJbyxlKX1jb25zdCBBbz1tKCJab2RFMTY0IiwoZSx0KT0+e05oLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFVjKGUpe3JldHVybiBlYyhBbyxlKX1jb25zdCBzcj1tKCJab2RDcmVkaXRDYXJkIiwoZSx0KT0+e2poLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEhjKGUpe3JldHVybiBNbShzcixlKX1jb25zdCBycj1tKCJab2RJQkFOIiwoZSx0KT0+e3FoLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFdjKGUpe3JldHVybiBxbShycixlKX1jb25zdCBDbz1tKCJab2RKV1QiLChlLHQpPT57RGguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gVmMoZSl7cmV0dXJuIHRjKENvLGUpfWNvbnN0IG10PW0oIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntCaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBKYyhlLHQsbj17fSl7cmV0dXJuIHNuKG10LGUsdCxuKX1mdW5jdGlvbiBLYyhlKXtyZXR1cm4gc24obXQsImhvc3RuYW1lIiwkcCxlKX1mdW5jdGlvbiBHYyhlKXtyZXR1cm4gc24obXQsImhleCIsanAsZSl9ZnVuY3Rpb24gWWMoZSl7cmV0dXJuIHNuKG10LCJjdXJyZW5jeV9jb2RlIixfcCxlKX1mdW5jdGlvbiBRYyhlLHQpe2NvbnN0IG49dD8uZW5jPz8iaGV4IixvPWAke2V9XyR7bn1gLHM9V3Nbb107aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gc24obXQsbyxzLHQpfWNvbnN0IHBuPW0oIlpvZE51bWJlciIsKGUsdCk9PntiYS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Plh2KCksZS5pc0Zpbml0ZT0hMH0sVW4oe21pblZhbHVlOmU9Pntjb25zdHttaW5pbXVtOnQsZXhjbHVzaXZlTWluaW11bTpufT1NZSgpO3JldHVybiBNYXRoLm1heCh0Pz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbj8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sbWF4VmFsdWU6ZT0+e2NvbnN0e21heGltdW06dCxleGNsdXNpdmVNYXhpbXVtOm59PU1lKCk7cmV0dXJuIE1hdGgubWluKHQ/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxpc0ludDplPT57Y29uc3R7aXNJbnQ6dCxtdWx0aXBsZU9mOm59PU1lKCk7cmV0dXJuISF0fHwhIW4/LnNvbWUoTnVtYmVyLmlzU2FmZUludGVnZXIpfSxmb3JtYXQ6ZT0+TWUoKS5mb3JtYXQ/P251bGx9LHtndChlLHQpe3JldHVybiB0aGlzLmNoZWNrKHR0KGUsdCkpfSxndGUoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhQZShlLHQpKX0sbWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soUGUoZSx0KSl9LGx0KGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soZXQoZSx0KSl9LGx0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKENlKGUsdCkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhDZShlLHQpKX0saW50KGUpe3JldHVybiB0aGlzLmNoZWNrKGpuKGUpKX0sc2FmZShlKXtyZXR1cm4gdGhpcy5jaGVjayhqbihlKSl9LHBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKHR0KDAsZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhQZSgwLGUpKX0sbmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuY2hlY2soZXQoMCxlKSl9LG5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKENlKDAsZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soX3QoZSx0KSl9LHN0ZXAoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhfdChlLHQpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSkpO2Z1bmN0aW9uIHEoZSl7cmV0dXJuIExtKHBuLGUpfWNvbnN0IGZ0PW0oIlpvZE51bWJlckZvcm1hdCIsKGUsdCk9PntGaC5pbml0KGUsdCkscG4uaW5pdChlLHQpfSk7ZnVuY3Rpb24gam4oZSl7cmV0dXJuIEJtKGZ0LGUpfWZ1bmN0aW9uIFhjKGUpe3JldHVybiBGbShmdCxlKX1mdW5jdGlvbiBlbChlKXtyZXR1cm4gVW0oZnQsZSl9ZnVuY3Rpb24gdGwoZSl7cmV0dXJuIEhtKGZ0LGUpfWZ1bmN0aW9uIG5sKGUpe3JldHVybiBXbShmdCxlKX1jb25zdCBobj1tKCJab2RCb29sZWFuIiwoZSx0KT0+e3ZhLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZXkoKX0pO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIFZtKGhuLGUpfWNvbnN0IG1uPW0oIlpvZEJpZ0ludCIsKGUsdCk9Pnt5YS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnR5KCl9LFVuKHttaW5WYWx1ZTplPT5NZSgpLm1pbmltdW0/P251bGwsbWF4VmFsdWU6ZT0+TWUoKS5tYXhpbXVtPz9udWxsLGZvcm1hdDplPT5NZSgpLmZvcm1hdD8/bnVsbH0se2d0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKFBlKGUsdCkpfSxtaW4oZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhQZShlLHQpKX0sZ3QoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayh0dChlLHQpKX0sbHQoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhldChlLHQpKX0sbHRlKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soQ2UoZSx0KSl9LG1heChlLHQpe3JldHVybiB0aGlzLmNoZWNrKENlKGUsdCkpfSxwb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayh0dChCaWdJbnQoMCksZSkpfSxuZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhldChCaWdJbnQoMCksZSkpfSxub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhDZShCaWdJbnQoMCksZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhQZShCaWdJbnQoMCksZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soX3QoZSx0KSl9fSkpO2Z1bmN0aW9uIG9sKGUpe3JldHVybiBLbShtbixlKX1jb25zdCBQbz1tKCJab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57VWguaW5pdChlLHQpLG1uLmluaXQoZSx0KX0pO2Z1bmN0aW9uIHNsKGUpe3JldHVybiBZbShQbyxlKX1mdW5jdGlvbiBybChlKXtyZXR1cm4gUW0oUG8sZSl9Y29uc3QgaXI9bSgiWm9kU3ltYm9sIiwoZSx0KT0+e0hoLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bnkoKX0pO2Z1bmN0aW9uIGlsKGUpe3JldHVybiBYbShpcixlKX1jb25zdCBhcj1tKCJab2RVbmRlZmluZWQiLChlLHQpPT57V2guaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5zeSgpfSk7ZnVuY3Rpb24gS3QoZSl7cmV0dXJuIGVmKGFyLGUpfWNvbnN0IGNyPW0oIlpvZE51bGwiLChlLHQpPT57VmguaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5veSgpfSk7ZnVuY3Rpb24gRW8oZSl7cmV0dXJuIHRmKGNyLGUpfWNvbnN0IGxyPW0oIlpvZEFueSIsKGUsdCk9PntKaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmF5KCl9KTtmdW5jdGlvbiBSbygpe3JldHVybiBuZihscil9Y29uc3QgdXI9bSgiWm9kVW5rbm93biIsKGUsdCk9PntLaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmN5KCl9KTtmdW5jdGlvbiBZKCl7cmV0dXJuIG9mKHVyKX1jb25zdCBkcj1tKCJab2ROZXZlciIsKGUsdCk9PntHaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pml5KCl9KTtmdW5jdGlvbiBTdChlKXtyZXR1cm4gc2YoZHIsZSl9Y29uc3QgcHI9bSgiWm9kVm9pZCIsKGUsdCk9PntZaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnJ5KCl9KTtmdW5jdGlvbiBhbChlKXtyZXR1cm4gcmYocHIsZSl9Y29uc3QgT289bSgiWm9kRGF0ZSIsKGUsdCk9PntRaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pmx5KCksZS5taW49KG4sbyk9PmUuY2hlY2soUGUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soQ2UobixvKSl9LFVuKHttaW5EYXRlOmU9Pntjb25zdHttaW5pbXVtOnR9PU1lKCk7cmV0dXJuIHQ/bmV3IERhdGUodCk6bnVsbH0sbWF4RGF0ZTplPT57Y29uc3R7bWF4aW11bTp0fT1NZSgpO3JldHVybiB0P25ldyBEYXRlKHQpOm51bGx9fSx7fSkpO2Z1bmN0aW9uIGNsKGUpe3JldHVybiBhZihPbyxlKX1jb25zdCBocj1tKCJab2RBcnJheSIsKGUsdCk9PntOdCgpLFhoLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+a3koKSxlLmVsZW1lbnQ9dC5lbGVtZW50fSx7bWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2socHQoZSx0KSl9LG5vbmVtcHR5KGUpe3JldHVybiB0aGlzLmNoZWNrKHB0KDEsZSkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhubihlLHQpKX0sbGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2sob24oZSx0KSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSk7ZnVuY3Rpb24gUihlLHQpe3JldHVybiB1ZihocixlLHQpfWZ1bmN0aW9uIGxsKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZi5zaGFwZTtyZXR1cm4gZmUoT2JqZWN0LmtleXModCkpfWNvbnN0IGZuPW0oIlpvZE9iamVjdCIsKGUsdCk9PntOdCgpLG9tLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+d3koKSxHZChlLCJzaGFwZSIsbj0+bi5fem9kLmRlZi5zaGFwZSwhMSl9LHtrZXlvZigpe3JldHVybiBmZShPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKGUpe3JldHVybiB0aGlzLmNsb25lKHllKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOmV9KSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUoeWUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6WSgpfSkpfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHllKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOlkoKX0pKX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUoeWUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6U3QoKX0pKX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh5ZSh0aGlzLl96b2QuZGVmLHtjYXRjaGFsbDp2b2lkIDB9KSl9LGV4dGVuZChlKXtyZXR1cm4gTGQodGhpcyxlKX0sc2FmZUV4dGVuZChlKXtyZXR1cm4gQmQodGhpcyxlKX0sbWVyZ2UoZSl7cmV0dXJuIEZkKHRoaXMsZSl9LHBpY2soZSl7cmV0dXJuIE1kKHRoaXMsZSl9LG9taXQoZSl7cmV0dXJuIHFkKHRoaXMsZSl9LHBhcnRpYWwoLi4uZSl7cmV0dXJuIGZpKHZuLHRoaXMsZVswXSl9LGV4YWN0UGFydGlhbCguLi5lKXtyZXR1cm4gZmkoam8sdGhpcyxlWzBdLCJleGFjdFBhcnRpYWwiKX0scmVxdWlyZWQoLi4uZSl7cmV0dXJuIFVkKE1vLHRoaXMsZVswXSl9fSk7ZnVuY3Rpb24gdihlLHQpe2NvbnN0IG49e3R5cGU6Im9iamVjdCIsc2hhcGU6ZT8/e30sLi4udyh0KX07cmV0dXJuIG5ldyBmbihuKX1mdW5jdGlvbiB1bChlLHQpe3JldHVybiBuZXcgZm4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpTdCgpLC4uLncodCl9KX1mdW5jdGlvbiBtZShlLHQpe3JldHVybiBuZXcgZm4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpZKCksLi4udyh0KX0pfWNvbnN0IGduPW0oIlpvZFVuaW9uIiwoZSx0KT0+e1ZzLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+JGYoKSxlLm9wdGlvbnM9dC5vcHRpb25zfSk7ZnVuY3Rpb24gQihlLHQpe3JldHVybiBuZXcgZ24oe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4udyh0KX0pfWNvbnN0IG1yPW0oIlpvZFhvciIsKGUsdCk9Pntnbi5pbml0KGUsdCksc20uaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT4kZigpLGUub3B0aW9ucz10Lm9wdGlvbnN9KTtmdW5jdGlvbiBkbChlLHQpe3JldHVybiBuZXcgbXIoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLncodCl9KX1jb25zdCBmcj1tKCJab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57Z24uaW5pdChlLHQpLGltLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE5vKGUsdCxuKXtyZXR1cm4gbmV3IGZyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGRpc2NyaW1pbmF0b3I6ZSwuLi53KG4pfSl9Y29uc3QgZ3I9bSgiWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e2FtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+X3koKX0pO2Z1bmN0aW9uIGJuKGUsdCl7cmV0dXJuIG5ldyBncih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OmUscmlnaHQ6dH0pfWNvbnN0IGJyPW0oIlpvZFR1cGxlIiwoZSx0KT0+e050KCksa2EuaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5TeSgpfSx7cmVzdChlKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixyZXN0OmV9KX0scGFydGlhbCgpe2NvbnN0IGU9dGhpcy5fem9kLmRlZjtpZihlLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiB0dXBsZSBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtyZXR1cm4gdGhpcy5jbG9uZSh7Li4uZSxpdGVtczplLml0ZW1zLm1hcCh0PT5uZXcgdm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pKX0pfX0pO2Z1bmN0aW9uIHZyKGUsdCxuKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBNLHM9bz9uOnQscj1vP3Q6bnVsbDtyZXR1cm4gbmV3IGJyKHt0eXBlOiJ0dXBsZSIsaXRlbXM6ZSxyZXN0OnIsLi4udyhzKX0pfWNvbnN0IFR0PW0oIlpvZFJlY29yZCIsKGUsdCk9PntOdCgpLGNtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+VHkoKSxlLmtleVR5cGU9dC5rZXlUeXBlLGUudmFsdWVUeXBlPXQudmFsdWVUeXBlfSk7ZnVuY3Rpb24gSChlLHQsbil7cmV0dXJuIXR8fCF0Ll96b2Q/bmV3IFR0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZygpLHZhbHVlVHlwZTplLC4uLncodCl9KTpuZXcgVHQoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LC4uLncobil9KX1mdW5jdGlvbiBwbChlLHQsbil7cmV0dXJuIG5ldyBUdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOmUsdmFsdWVUeXBlOnQsLi4udyhuKSxwYXJ0aWFsOiEwfSl9ZnVuY3Rpb24gaGwoZSx0LG4pe3JldHVybiBuZXcgVHQoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LG1vZGU6Imxvb3NlIiwuLi53KG4pfSl9Y29uc3QgeXI9bSgiWm9kTWFwIiwoZSx0KT0+e050KCksbG0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT55eSgpLGUua2V5VHlwZT10LmtleVR5cGUsZS52YWx1ZVR5cGU9dC52YWx1ZVR5cGUsZS5taW49KC4uLm4pPT5lLmNoZWNrKG50KC4uLm4pKSxlLm5vbmVtcHR5PW49PmUuY2hlY2sobnQoMSxuKSksZS5tYXg9KC4uLm4pPT5lLmNoZWNrKE90KC4uLm4pKSxlLnNpemU9KC4uLm4pPT5lLmNoZWNrKHRuKC4uLm4pKX0pO2Z1bmN0aW9uIG1sKGUsdCxuKXtyZXR1cm4gbmV3IHlyKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6dCwuLi53KG4pfSl9Y29uc3QgJHI9bSgiWm9kU2V0IiwoZSx0KT0+e050KCksdW0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT4keSgpLGUubWluPSguLi5uKT0+ZS5jaGVjayhudCguLi5uKSksZS5ub25lbXB0eT1uPT5lLmNoZWNrKG50KDEsbikpLGUubWF4PSguLi5uKT0+ZS5jaGVjayhPdCguLi5uKSksZS5zaXplPSguLi5uKT0+ZS5jaGVjayh0biguLi5uKSl9KTtmdW5jdGlvbiBmbChlLHQpe3JldHVybiBuZXcgJHIoe3R5cGU6InNldCIsdmFsdWVUeXBlOmUsLi4udyh0KX0pfWNvbnN0IHp0PW0oIlpvZEVudW0iLChlLHQpPT57ZG0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxzLHIpPT51eSgpLGUuZW51bT10LmVudHJpZXMsZS5vcHRpb25zPVsuLi5lLl96b2QudmFsdWVzXTtjb25zdCBuPW5ldyBTZXQoT2JqZWN0LmtleXModC5lbnRyaWVzKSk7ZS5leHRyYWN0PShvLHMpPT57Y29uc3Qgcj17fTtmb3IoY29uc3QgaSBvZiBvKWlmKG4uaGFzKGkpKXJbaV09dC5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgenQoey4uLnQsY2hlY2tzOltdLC4uLncocyksZW50cmllczpyfSl9LGUuZXhjbHVkZT0obyxzKT0+e2NvbnN0IHI9ey4uLnQuZW50cmllc307Zm9yKGNvbnN0IGkgb2YgbylpZihuLmhhcyhpKSlkZWxldGUgcltpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IHp0KHsuLi50LGNoZWNrczpbXSwuLi53KHMpLGVudHJpZXM6cn0pfX0pO2Z1bmN0aW9uIGZlKGUsdCl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChvPT5bbyxvXSkpOmU7cmV0dXJuIG5ldyB6dCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLncodCl9KX1mdW5jdGlvbiBnbChlLHQpe3JldHVybiBuZXcgenQoe3R5cGU6ImVudW0iLGVudHJpZXM6ZSwuLi53KHQpfSl9Y29uc3Qga3I9bSgiWm9kTGl0ZXJhbCIsKGUsdCk9PntwbS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmR5KCksZS52YWx1ZXM9bmV3IFNldCh0LnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhbHVlIix7Z2V0KCl7aWYodC52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiB0LnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIGIoZSx0KXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShlKT9lOltlXSwuLi53KHQpfSl9Y29uc3Qgd3I9bSgiWm9kRmlsZSIsKGUsdCk9PntobS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pm15KCksZS5taW49KG4sbyk9PmUuY2hlY2sobnQobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soT3QobixvKSksZS5taW1lPShuLG8pPT5lLmNoZWNrKGlvKEFycmF5LmlzQXJyYXkobik/bjpbbl0sbykpfSk7ZnVuY3Rpb24gYmwoZSl7cmV0dXJuIGRmKHdyLGUpfWNvbnN0IF9yPW0oIlpvZFRyYW5zZm9ybSIsKGUsdCk9PntOdCgpLG1tLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+dnkoKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IHFzKGUuY29uc3RydWN0b3IubmFtZSk7bi5hZGRJc3N1ZT1yPT57aWYodHlwZW9mIHI9PSJzdHJpbmciKW4uaXNzdWVzLnB1c2goVnQocixuLnZhbHVlLHQpKTtlbHNle2NvbnN0IGk9cjtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gaXx8KGkuaW5wdXQ9bi52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLG4uaXNzdWVzLnB1c2goVnQoaSkpfX07Y29uc3Qgcz10LnRyYW5zZm9ybShuLnZhbHVlLG4pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+KG4udmFsdWU9cixuKSk6KG4udmFsdWU9cyxuKX19KTtmdW5jdGlvbiBabyhlKXtyZXR1cm4gbmV3IF9yKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3Qgdm49bSgiWm9kT3B0aW9uYWwiLChlLHQpPT57d2EuaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5rZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIG5lKGUpe3JldHVybiBuZXcgdm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IGpvPW0oIlpvZEV4YWN0T3B0aW9uYWwiLChlLHQpPT57Zm0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5rZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFNyKGUpe3JldHVybiBuZXcgam8oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IFRyPW0oIlpvZE51bGxhYmxlIiwoZSx0KT0+e2dtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+enkoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBHdChlKXtyZXR1cm4gbmV3IFRyKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOmV9KX1mdW5jdGlvbiB2bChlKXtyZXR1cm4gbmUoR3QoZSkpfWNvbnN0IHpyPW0oIlpvZERlZmF1bHQiLChlLHQpPT57Ym0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5JeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZURlZmF1bHQ9ZS51bndyYXB9KTtmdW5jdGlvbiB4cihlLHQpe3JldHVybiBuZXcgenIoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOlJzKHQpfX0pfWNvbnN0IElyPW0oIlpvZFByZWZhdWx0IiwoZSx0KT0+e3ZtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+QXkoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBBcihlLHQpe3JldHVybiBuZXcgSXIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoKTpScyh0KX19KX1jb25zdCBNbz1tKCJab2ROb25PcHRpb25hbCIsKGUsdCk9Pnt5bS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pnh5KCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gQ3IoZSx0KXtyZXR1cm4gbmV3IE1vKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4udyh0KX0pfWNvbnN0IFByPW0oIlpvZFN1Y2Nlc3MiLChlLHQpPT57JG0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5meSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHlsKGUpe3JldHVybiBuZXcgUHIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTplfSl9Y29uc3QgRXI9bSgiWm9kQ2F0Y2giLChlLHQpPT57a20uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5DeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZUNhdGNoPWUudW53cmFwfSk7ZnVuY3Rpb24gUnIoZSx0KXtyZXR1cm4gbmV3IEVyKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OlVpKHQpfSl9Y29uc3QgT3I9bSgiWm9kTmFOIiwoZSx0KT0+e3dtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+cHkoKX0pO2Z1bmN0aW9uICRsKGUpe3JldHVybiBsZihPcixlKX1jb25zdCB5bj1tKCJab2RQaXBlIiwoZSx0KT0+e19hLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+UHkoKSxlLmluPXQuaW4sZS5vdXQ9dC5vdXR9KTtmdW5jdGlvbiBNbihlLHQpe3JldHVybiBuZXcgeW4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnR9KX1jb25zdCAkbj1tKCJab2RDb2RlYyIsKGUsdCk9Pnt5bi5pbml0KGUsdCksU2EuaW5pdChlLHQpfSk7ZnVuY3Rpb24ga2woZSx0LG4pe3JldHVybiBuZXcgJG4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnQsdHJhbnNmb3JtOm4uZGVjb2RlLHJldmVyc2VUcmFuc2Zvcm06bi5lbmNvZGV9KX1mdW5jdGlvbiB3bChlKXtjb25zdCB0PWUuX3pvZC5kZWY7cmV0dXJuIG5ldyAkbih7dHlwZToicGlwZSIsaW46dC5vdXQsb3V0OnQuaW4sdHJhbnNmb3JtOnQucmV2ZXJzZVRyYW5zZm9ybSxyZXZlcnNlVHJhbnNmb3JtOnQudHJhbnNmb3JtfSl9Y29uc3QgTnI9bSgiWm9kUHJlcHJvY2VzcyIsKGUsdCk9Pnt5bi5pbml0KGUsdCksX20uaW5pdChlLHQpfSksWnI9bSgiWm9kUmVhZG9ubHkiLChlLHQpPT57U20uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5FeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGpyKGUpe3JldHVybiBuZXcgWnIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6ZX0pfWNvbnN0IE1yPW0oIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUsdCk9PntUbS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pmh5KCl9KTtmdW5jdGlvbiBfbChlLHQpe3JldHVybiBuZXcgTXIoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4udyh0KX0pfWNvbnN0IHFyPW0oIlpvZExhenkiLChlLHQpPT57VGEuaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5PeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gTHIoZSl7cmV0dXJuIG5ldyBxcih7dHlwZToibGF6eSIsZ2V0dGVyOmV9KX1jb25zdCBEcj1tKCJab2RQcm9taXNlIiwoZSx0KT0+e3htLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+UnkoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBTbChlKXtyZXR1cm4gbmV3IERyKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IEJyPW0oIlpvZEZ1bmN0aW9uIiwoZSx0KT0+e3ptLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YnkoKX0pO2Z1bmN0aW9uIFl0KGUpe3JldHVybiBuZXcgQnIoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KGU/LmlucHV0KT92cihlPy5pbnB1dCk6ZT8uaW5wdXQ/P1IoWSgpKSxvdXRwdXQ6ZT8ub3V0cHV0Pz9ZKCl9KX1jb25zdCBrbj1tKCJab2RDdXN0b20iLChlLHQpPT57SW0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5neSgpfSk7ZnVuY3Rpb24gVGwoZSl7Y29uc3QgdD1uZXcgaWUoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gRnIoZSx0KXtyZXR1cm4gcGYoa24sZT8/KCgpPT4hMCksdCl9ZnVuY3Rpb24gVXIoZSx0PXt9KXtyZXR1cm4gaGYoa24sZSx0KX1mdW5jdGlvbiBIcihlLHQpe3JldHVybiBtZihlLHQpfWNvbnN0IHpsPWdmLHhsPWJmLFdyPW0oIlpvZEluc3RhbmNlT2YiLChlLHQpPT57a24uaW5pdChlLHQpfSx7cHJvcGVydGllcyhlLHQpe3JldHVybiB0aGlzLmNoZWNrKHJvKGUsdCkpfX0pO2Z1bmN0aW9uIElsKGUsdD17fSl7Y29uc3Qgbj1uZXcgV3Ioe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4udyh0KX0pO3JldHVybiBuLl96b2QuYmFnLkNsYXNzPWUsbi5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgZXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDplLm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0Om4scGF0aDpbLi4ubi5fem9kLmRlZi5wYXRoPz9bXV19KX0sbn1jb25zdCBBbD0oLi4uZSk9PnZmKHtDb2RlYzokbixCb29sZWFuOmhuLFN0cmluZzpybn0sLi4uZSk7ZnVuY3Rpb24gQ2woZSl7Y29uc3QgdD1McigoKT0+QihbZyhlKSxxKCksUSgpLEVvKCksUih0KSxIKGcoKSx0KV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBxbyhlLHQpe3JldHVybiBuZXcgTnIoe3R5cGU6InBpcGUiLGluOlpvKGUpLG91dDp0fSl9Y29uc3QgRHk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpscixab2RBcnJheTpocixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDptbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjpobixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6eW8sWm9kQ2F0Y2g6RXIsWm9kQ29kZWM6JG4sWm9kQ3JlZGl0Q2FyZDpzcixab2RDdXN0b206a24sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Om10LFpvZERhdGU6T28sWm9kRGVmYXVsdDp6cixab2REaXNjcmltaW5hdGVkVW5pb246ZnIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOnp0LFpvZEV4YWN0T3B0aW9uYWw6am8sWm9kRmlsZTp3cixab2RGdW5jdGlvbjpCcixab2RHVUlEOmZvLFpvZElCQU46cnIsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6Y24sWm9kSVNPRGF0ZVRpbWU6YW4sWm9kSVNPRHVyYXRpb246dW4sWm9kSVNPVGltZTpsbixab2RJbnN0YW5jZU9mOldyLFpvZEludGVyc2VjdGlvbjpncixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpxcixab2RMaXRlcmFsOmtyLFpvZE1BQzpvcixab2RNYXA6eXIsWm9kTmFOOk9yLFpvZE5hbm9JRDpibyxab2ROZXZlcjpkcixab2ROb25PcHRpb25hbDpNbyxab2ROdWxsOmNyLFpvZE51bGxhYmxlOlRyLFpvZE51bWJlcjpwbixab2ROdW1iZXJGb3JtYXQ6ZnQsWm9kT2JqZWN0OmZuLFpvZE9wdGlvbmFsOnZuLFpvZFBpcGU6eW4sWm9kUHJlZmF1bHQ6SXIsWm9kUHJlcHJvY2VzczpOcixab2RQcm9taXNlOkRyLFpvZFJlYWRvbmx5OlpyLFpvZFJlY29yZDpUdCxab2RTZXQ6JHIsWm9kU3RyaW5nOnJuLFpvZFN0cmluZ0Zvcm1hdDpYLFpvZFN1Y2Nlc3M6UHIsWm9kU3ltYm9sOmlyLFpvZFRlbXBsYXRlTGl0ZXJhbDpNcixab2RUcmFuc2Zvcm06X3IsWm9kVHVwbGU6YnIsWm9kVHlwZTpMLFpvZFVMSUQ6JG8sWm9kVVJMOmRuLFpvZFVVSUQ6SGUsWm9kVW5kZWZpbmVkOmFyLFpvZFVuaW9uOmduLFpvZFVua25vd246dXIsWm9kVm9pZDpwcixab2RYSUQ6a28sWm9kWG9yOm1yLF9ab2RTdHJpbmc6aG8sX2RlZmF1bHQ6eHIsX2Z1bmN0aW9uOll0LGFueTpSbyxhcnJheTpSLGJhc2U2NDpCYyxiYXNlNjR1cmw6RmMsYmlnaW50Om9sLGJvb2xlYW46USxjYXRjaDpScixjaGVjazpUbCxjaWRydjQ6TGMsY2lkcnY2OkRjLGNvZGVjOmtsLGNyZWRpdENhcmQ6SGMsY3VpZDpFYyxjdWlkMjpSYyxjdXJyZW5jeUNvZGU6WWMsY3VzdG9tOkZyLGRhdGU6Y2wsZGVzY3JpYmU6emwsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6VWMsZW1haWw6d2MsZW1vamk6Q2MsZW51bTpmZSxleGFjdE9wdGlvbmFsOlNyLGZpbGU6YmwsZmxvYXQzMjpYYyxmbG9hdDY0OmVsLGZ1bmN0aW9uOll0LGd1aWQ6X2MsaGFzaDpRYyxoZXg6R2MsaG9zdG5hbWU6S2MsaHR0cFVybDpBYyxpYmFuOldjLGluc3RhbmNlb2Y6SWwsaW50OmpuLGludDMyOnRsLGludDY0OnNsLGludGVyc2VjdGlvbjpibixpbnZlcnRDb2RlYzp3bCxpcHY0OmpjLGlwdjY6cWMsanNvbjpDbCxqd3Q6VmMsa2V5b2Y6bGwsa3N1aWQ6WmMsbGF6eTpMcixsaXRlcmFsOmIsbG9vc2VPYmplY3Q6bWUsbG9vc2VSZWNvcmQ6aGwsbWFjOk1jLG1hcDptbCxtZXRhOnhsLG5hbjokbCxuYW5vaWQ6UGMsbmF0aXZlRW51bTpnbCxuZXZlcjpTdCxub25vcHRpb25hbDpDcixudWxsOkVvLG51bGxhYmxlOkd0LG51bGxpc2g6dmwsbnVtYmVyOnEsb2JqZWN0OnYsb3B0aW9uYWw6bmUscGFydGlhbFJlY29yZDpwbCxwaXBlOk1uLHByZWZhdWx0OkFyLHByZXByb2Nlc3M6cW8scHJvbWlzZTpTbCxyZWFkb25seTpqcixyZWNvcmQ6SCxyZWZpbmU6VXIsc2V0OmZsLHN0cmljdE9iamVjdDp1bCxzdHJpbmc6ZyxzdHJpbmdGb3JtYXQ6SmMsc3RyaW5nYm9vbDpBbCxzdWNjZXNzOnlsLHN1cGVyUmVmaW5lOkhyLHN5bWJvbDppbCx0ZW1wbGF0ZUxpdGVyYWw6X2wsdHJhbnNmb3JtOlpvLHR1cGxlOnZyLHVpbnQzMjpubCx1aW50NjQ6cmwsdWxpZDpPYyx1bmRlZmluZWQ6S3QsdW5pb246Qix1bmtub3duOlksdXJsOkljLHV1aWQ6U2MsdXVpZHY0OlRjLHV1aWR2Njp6Yyx1dWlkdjc6eGMsdm9pZDphbCx4aWQ6TmMseG9yOmRsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHpmPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiB4ZihlKXtoZSh7Y3VzdG9tRXJyb3I6ZX0pfWZ1bmN0aW9uIElmKCl7cmV0dXJuIGhlKCkuY3VzdG9tRXJyb3J9dmFyIHZzO3ZzfHwodnM9e30pO2Z1bmN0aW9uIEFmKGUpe3JldHVybiBvYyhhbixlKX1mdW5jdGlvbiBCeShlKXtyZXR1cm4gc2MoY24sZSl9ZnVuY3Rpb24gRnkoZSl7cmV0dXJuIHJjKGxuLGUpfWZ1bmN0aW9uIFV5KGUpe3JldHVybiBpYyh1bixlKX1jb25zdCBQbD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpjbixab2RJU09EYXRlVGltZTphbixab2RJU09EdXJhdGlvbjp1bixab2RJU09UaW1lOmxuLGRhdGU6QnksZGF0ZXRpbWU6QWYsZHVyYXRpb246VXksdGltZTpGeX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxJPXsuLi5EeSwuLi5xeSxpc286UGx9LEh5PW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIFd5KGUsdCl7Y29uc3Qgbj1lLiRzY2hlbWE7cmV0dXJuIG49PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpuPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOm49PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6dD8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIEd1KGUsdCl7cmV0dXJuIGUubWFwKChuLG8pPT5vPHQ/bjpuLm9wdGlvbmFsKCkpfWZ1bmN0aW9uIFZ5KGUpe3JldHVybiBlLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZnVuY3Rpb24gSnkoZSx0KXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgbj1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdC5yb290U2NoZW1hO2NvbnN0IG89dC52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihuWzBdPT09byl7Y29uc3Qgcz1uWzFdPT09dm9pZCAwP3ZvaWQgMDpWeShuWzFdKTtpZighc3x8IXQuZGVmc1tzXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4gdC5kZWZzW3NdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApfWZ1bmN0aW9uIEt5KGUsdCl7cmV0dXJuIEkudHJhbnNmb3JtKG89Pm8pLmNoZWNrKG89Pntjb25zdCBzPW8udmFsdWU7aWYodHlwZW9mIHMhPSJvYmplY3QifHxzPT09bnVsbHx8QXJyYXkuaXNBcnJheShzKSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzKTtpZih0Lm1pblByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPHQubWluUHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pblByb3BlcnRpZXMsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6YFRvbyBzbWFsbDogZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgPj0ke3QubWluUHJvcGVydGllc30gcHJvcGVydGllc2AsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6ITB9KSx0Lm1heFByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPnQubWF4UHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19iaWciLG1heGltdW06dC5tYXhQcm9wZXJ0aWVzLGluY2x1c2l2ZTohMCxtZXNzYWdlOmBUb28gYmlnOiBleHBlY3RlZCBvYmplY3QgdG8gaGF2ZSA8PSR7dC5tYXhQcm9wZXJ0aWVzfSBwcm9wZXJ0aWVzYCxpbnB1dDpzLGluc3Q6ZSxjb250aW51ZTohMH0pLHQua2V5U2NoZW1hKWZvcihjb25zdCBpIG9mIHIpe2NvbnN0IGE9dC5rZXlTY2hlbWEuc2FmZVBhcnNlKGkpO2Euc3VjY2Vzc3x8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6YS5lcnJvci5pc3N1ZXMsaW5wdXQ6aSxwYXRoOltpXSxjb250aW51ZTohMH0pfX0pLnBpcGUoZSl9ZnVuY3Rpb24gU2koZSx0KXtpZihlPT09bnVsbClyZXR1cm4ieiI7Y29uc3Qgbj10eXBlb2YgZTtpZihuIT09Im9iamVjdCIpe2lmKG49PT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKGUpKXJldHVybiBudWxsO2NvbnN0IG89U3RyaW5nKGUpO3JldHVybmAke25bMF19JHtvLmxlbmd0aH06JHtvfWB9aWYodC5oYXMoZSkpcmV0dXJuIG51bGw7dC5hZGQoZSk7dHJ5e2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgYT1TaShpLHQpO2lmKGE9PT1udWxsKXJldHVybiBudWxsO3IucHVzaChhKX1yZXR1cm5gYSR7ci5sZW5ndGh9Olske3Iuam9pbigiLCIpfV1gfWNvbnN0IG89T2JqZWN0LmtleXMoZSkuc29ydCgpLHM9W107Zm9yKGNvbnN0IHIgb2Ygbyl7Y29uc3QgaT1TaShlW3JdLHQpO2lmKGk9PT1udWxsKXJldHVybiBudWxsO3MucHVzaChgJHtyLmxlbmd0aH06JHtyfT0ke2l9YCl9cmV0dXJuYG8ke3MubGVuZ3RofTp7JHtzLmpvaW4oIiwiKX19YH1maW5hbGx5e3QuZGVsZXRlKGUpfX1jb25zdCBHeT1uZXcgU2V0KFsiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29udGFpbnMiLCJwcm9wZXJ0eU5hbWVzIiwibm90IiwiaWYiLCJ0aGVuIiwiZWxzZSIsImFsbE9mIiwiYW55T2YiLCJvbmVPZiIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJjb250ZW50U2NoZW1hIl0pLFl5PW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW5jaWVzIiwiJGRlZnMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiBQbihlKXtyZXR1cm4gdHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbD8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZShQbik6dHlwZW9mIGUuJHJlZj09InN0cmluZyI/ITA6T2JqZWN0LmVudHJpZXMoZSkuc29tZSgoW3Qsbl0pPT5HeS5oYXModCk/UG4obik6IVl5Lmhhcyh0KXx8dHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbD8hMTpPYmplY3QudmFsdWVzKG4pLnNvbWUoUG4pKX1mdW5jdGlvbiBZdShlKXtyZXR1cm4gZT09PTE/ImVsZW1lbnQiOiJlbGVtZW50cyJ9ZnVuY3Rpb24gUXkoZSx0KXtyZXR1cm4gSS50cmFuc2Zvcm0obz0+bykuY2hlY2sobz0+e2NvbnN0IHM9by52YWx1ZTtpZihBcnJheS5pc0FycmF5KHMpKXtpZih0LnVuaXF1ZUl0ZW1zPT09ITApe2NvbnN0IHI9bmV3IE1hcDtmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKyl7Y29uc3QgYT1TaShzW2ldLG5ldyBTZXQpO2lmKGE9PT1udWxsKWNvbnRpbnVlO2NvbnN0IHU9ci5nZXQoYSk7aWYodT09PXZvaWQgMCl7ci5zZXQoYSxpKTtjb250aW51ZX1vLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IGl0ZW1zIG11c3QgYmUgdW5pcXVlOiBlbGVtZW50IGF0IGluZGV4ICR7aX0gZHVwbGljYXRlcyB0aGUgb25lIGF0IGluZGV4ICR7dX1gLGlucHV0OnMscGF0aDpbaV0sY29udGludWU6ITB9KX19aWYodC5jb250YWluc1NjaGVtYSl7Y29uc3Qgcj10Lm1pbkNvbnRhaW5zPz8xLGk9dC5tYXhDb250YWlucyE9PXZvaWQgMD90Lm1heENvbnRhaW5zKzE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBhPTA7Zm9yKGNvbnN0IHUgb2YgcylpZih0LmNvbnRhaW5zU2NoZW1hLnNhZmVQYXJzZSh1KS5zdWNjZXNzJiYrK2E+PWkpYnJlYWs7YTxyJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCAke3J9IG1hdGNoaW5nICR7WXUocil9OyBmb3VuZCAke2F9YCxpbnB1dDpzLGNvbnRpbnVlOiEwfSksdC5tYXhDb250YWlucyE9PXZvaWQgMCYmYT50Lm1heENvbnRhaW5zJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBtb3N0ICR7dC5tYXhDb250YWluc30gbWF0Y2hpbmcgJHtZdSh0Lm1heENvbnRhaW5zKX1gLGlucHV0OnMsY29udGludWU6ITB9KX19fSkucGlwZShlKX1mdW5jdGlvbiBRdShlLHQpe2lmKGUhPT0hMSlyZXR1cm4gZT09PXZvaWQgMHx8ZT09PSEwP0kuYW55KCk6JGUoZSx0KX1jb25zdCBYeT0vXig/OlswMV1cZHwyWzAtM10pOlswLTVdXGQ6WzAtNV1cZCg/OlwuXGQrKT8oPzpafFsrLV0oPzpbMDFdXGR8MlswLTNdKTpbMC01XVxkKSQvO2Z1bmN0aW9uIENmKGUsdCl7aWYoZS5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiBlLm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKGUubm90KS5sZW5ndGg9PT0wKXJldHVybiBJLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYoZS51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuaWYhPT12b2lkIDB8fGUudGhlbiE9PXZvaWQgMHx8ZS5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8ZS5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYoZS4kcmVmKXtjb25zdCBzPWUuJHJlZjtpZih0LnJlZnMuaGFzKHMpKXJldHVybiB0LnJlZnMuZ2V0KHMpO2lmKHQucHJvY2Vzc2luZy5oYXMocykpcmV0dXJuIEkubGF6eSgoKT0+e2lmKCF0LnJlZnMuaGFzKHMpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtzfWApO3JldHVybiB0LnJlZnMuZ2V0KHMpfSk7dC5wcm9jZXNzaW5nLmFkZChzKTtjb25zdCByPUp5KHMsdCksaT0kZShyLHQpO3JldHVybiB0LnJlZnMuc2V0KHMsaSksdC5wcm9jZXNzaW5nLmRlbGV0ZShzKSxpfWlmKGUuZW51bSE9PXZvaWQgMCl7Y29uc3Qgcz1lLmVudW07aWYodC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmZS5udWxsYWJsZT09PSEwJiZzLmxlbmd0aD09PTEmJnNbMF09PT1udWxsKXJldHVybiBJLm51bGwoKTtpZihzLmxlbmd0aD09PTApcmV0dXJuIEkubmV2ZXIoKTtpZihzLmxlbmd0aD09PTEpcmV0dXJuIEkubGl0ZXJhbChzWzBdKTtpZihzLmV2ZXJ5KGk9PnR5cGVvZiBpPT0ic3RyaW5nIikpcmV0dXJuIEkuZW51bShzKTtjb25zdCByPXMubWFwKGk9PkkubGl0ZXJhbChpKSk7cmV0dXJuIHIubGVuZ3RoPDI/clswXTpJLnVuaW9uKFtyWzBdLHJbMV0sLi4uci5zbGljZSgyKV0pfWlmKGUuY29uc3QhPT12b2lkIDApcmV0dXJuIEkubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBuPWUudHlwZTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPW4ubWFwKHI9Pntjb25zdCBpPXsuLi5lLHR5cGU6cn07cmV0dXJuIENmKGksdCl9KTtyZXR1cm4gcy5sZW5ndGg9PT0wP0kubmV2ZXIoKTpzLmxlbmd0aD09PTE/c1swXTpJLnVuaW9uKHMpfWlmKCFuKXJldHVybiBJLmFueSgpO2xldCBvO3N3aXRjaChuKXtjYXNlInN0cmluZyI6e2xldCBzPUkuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IHI9ZS5mb3JtYXQ7cj09PSJlbWFpbCI/cz1zLmNoZWNrKEkuZW1haWwoKSk6cj09PSJ1cmkifHxyPT09InVyaS1yZWZlcmVuY2UiP3M9cy5jaGVjayhJLnVybCgpKTpyPT09InV1aWQifHxyPT09Imd1aWQiP3M9cy5jaGVjayhJLnV1aWQoKSk6cj09PSJkYXRlLXRpbWUiP3M9cy5jaGVjayhJLmlzby5kYXRldGltZSh7b2Zmc2V0OiEwfSkpOnI9PT0iZGF0ZSI/cz1zLmNoZWNrKEkuaXNvLmRhdGUoKSk6cj09PSJ0aW1lIj9zPXMuY2hlY2soSS5yZWdleChYeSkpOnI9PT0iZHVyYXRpb24iP3M9cy5jaGVjayhJLmlzby5kdXJhdGlvbigpKTpyPT09Imhvc3RuYW1lIj9zPXMuY2hlY2soSS5ob3N0bmFtZSgpKTpyPT09ImlwdjQiP3M9cy5jaGVjayhJLmlwdjQoKSk6cj09PSJpcHY2Ij9zPXMuY2hlY2soSS5pcHY2KCkpOnI9PT0ibWFjIj9zPXMuY2hlY2soSS5tYWMoKSk6cj09PSJjaWRyIj9zPXMuY2hlY2soSS5jaWRydjQoKSk6cj09PSJjaWRyLXY2Ij9zPXMuY2hlY2soSS5jaWRydjYoKSk6cj09PSJiYXNlNjQiP3M9cy5jaGVjayhJLmJhc2U2NCgpKTpyPT09ImJhc2U2NHVybCI/cz1zLmNoZWNrKEkuYmFzZTY0dXJsKCkpOnI9PT0iZTE2NCI/cz1zLmNoZWNrKEkuZTE2NCgpKTpyPT09ImNyZWRpdF9jYXJkIj9zPXMuY2hlY2soSS5jcmVkaXRDYXJkKCkpOnI9PT0iaWJhbiI/cz1zLmNoZWNrKEkuaWJhbigpKTpyPT09Imp3dCI/cz1zLmNoZWNrKEkuand0KCkpOnI9PT0iZW1vamkiP3M9cy5jaGVjayhJLmVtb2ppKCkpOnI9PT0ibmFub2lkIj9zPXMuY2hlY2soSS5uYW5vaWQoKSk6cj09PSJjdWlkIj9zPXMuY2hlY2soSS5jdWlkKCkpOnI9PT0iY3VpZDIiP3M9cy5jaGVjayhJLmN1aWQyKCkpOnI9PT0idWxpZCI/cz1zLmNoZWNrKEkudWxpZCgpKTpyPT09InhpZCI/cz1zLmNoZWNrKEkueGlkKCkpOnI9PT0ia3N1aWQiJiYocz1zLmNoZWNrKEkua3N1aWQoKSkpfXR5cGVvZiBlLm1pbkxlbmd0aD09Im51bWJlciImJihzPXMubWluKGUubWluTGVuZ3RoKSksdHlwZW9mIGUubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKHM9cy5tYXgoZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihzPXMucmVnZXgobmV3IFJlZ0V4cChlLnBhdHRlcm4pKSksbz1zO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgcz1uPT09ImludGVnZXIiP0kubnVtYmVyKCkuaW50KCk6SS5udW1iZXIoKTt0eXBlb2YgZS5taW5pbXVtPT0ibnVtYmVyIiYmZS5leGNsdXNpdmVNaW5pbXVtIT09ITAmJihzPXMubWluKGUubWluaW11bSkpLHR5cGVvZiBlLm1heGltdW09PSJudW1iZXIiJiZlLmV4Y2x1c2l2ZU1heGltdW0hPT0hMCYmKHM9cy5tYXgoZS5tYXhpbXVtKSksdHlwZW9mIGUuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/cz1zLmd0KGUuZXhjbHVzaXZlTWluaW11bSk6ZS5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiBlLm1pbmltdW09PSJudW1iZXIiJiYocz1zLmd0KGUubWluaW11bSkpLHR5cGVvZiBlLmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP3M9cy5sdChlLmV4Y2x1c2l2ZU1heGltdW0pOmUuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgZS5tYXhpbXVtPT0ibnVtYmVyIiYmKHM9cy5sdChlLm1heGltdW0pKSx0eXBlb2YgZS5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKHM9cy5tdWx0aXBsZU9mKGUubXVsdGlwbGVPZikpLG89czticmVha31jYXNlImJvb2xlYW4iOntvPUkuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289SS5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBzPXt9LHI9ZS5wcm9wZXJ0aWVzfHx7fSxpPW5ldyBTZXQoZS5yZXF1aXJlZHx8W10pLGE9dHlwZW9mIGUuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiPyRlKGUuYWRkaXRpb25hbFByb3BlcnRpZXMsdCk6dm9pZCAwO2Zvcihjb25zdFtoLGZdb2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0ICQ9JGUoZix0KTtSdChzLGgsaS5oYXMoaCk/JDokLm9wdGlvbmFsKCkpfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxmPU9iamVjdC5rZXlzKGgpLCQ9W107Zm9yKGNvbnN0IHogb2YgZil7Y29uc3QgQT0kZShoW3pdLHQpLHg9SS5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKHopKTskLnB1c2goSS5sb29zZVJlY29yZCh4LEEpKX1jb25zdCBrPVtdO2lmKE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZrLnB1c2goSS5vYmplY3QocykucGFzc3Rocm91Z2goKSksay5wdXNoKC4uLiQpLGsubGVuZ3RoPT09MClvPUkub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoay5sZW5ndGg9PT0xKW89a1swXTtlbHNle2xldCB6PUkuaW50ZXJzZWN0aW9uKGtbMF0sa1sxXSk7Zm9yKGxldCBBPTI7QTxrLmxlbmd0aDtBKyspej1JLmludGVyc2VjdGlvbih6LGtbQV0pO289en1pZihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2NvbnN0IHo9T2JqZWN0LmtleXMocyksQT1mLm1hcChUPT5uZXcgUmVnRXhwKFQpKSx4PW87bz1vLmNoZWNrKFQ9PntpZighZHQoVC52YWx1ZSkpcmV0dXJuO2NvbnN0IFo9W107Zm9yKGNvbnN0IHNlIG9mIE9iamVjdC5rZXlzKFQudmFsdWUpKXouaW5jbHVkZXMoc2UpfHxBLnNvbWUoSj0+Si50ZXN0KHNlKSl8fFoucHVzaChzZSk7Wi5sZW5ndGgmJlQuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOlosaW5wdXQ6VC52YWx1ZSxpbnN0Onh9KX0pfX1lbHNle2NvbnN0IGg9SS5vYmplY3Qocyk7ZS5hZGRpdGlvbmFsUHJvcGVydGllcz09PSExP289aC5zdHJpY3QoKTphP289aC5jYXRjaGFsbChhKTpvPWgucGFzc3Rocm91Z2goKX1jb25zdCB1PWUucHJvcGVydHlOYW1lcyE9PXZvaWQgMCYmZS5wcm9wZXJ0eU5hbWVzIT09ITAsZD10eXBlb2YgZS5taW5Qcm9wZXJ0aWVzPT0ibnVtYmVyIj9lLm1pblByb3BlcnRpZXM6dm9pZCAwLHA9dHlwZW9mIGUubWF4UHJvcGVydGllcz09Im51bWJlciI/ZS5tYXhQcm9wZXJ0aWVzOnZvaWQgMDtpZih1fHxkIT09dm9pZCAwfHxwIT09dm9pZCAwKXtsZXQgaDtpZih1KXtjb25zdCBmPXR5cGVvZiBlLnByb3BlcnR5TmFtZXM9PSJvYmplY3QiJiZlLnByb3BlcnR5TmFtZXMudHlwZT09PXZvaWQgMD97dHlwZToic3RyaW5nIiwuLi5lLnByb3BlcnR5TmFtZXN9OmUucHJvcGVydHlOYW1lcztoPSRlKGYsdCl9bz1LeShvLHtrZXlTY2hlbWE6aCxtaW5Qcm9wZXJ0aWVzOmQsbWF4UHJvcGVydGllczpwfSl9YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IHM9ZS5wcmVmaXhJdGVtcyxyPWUuaXRlbXM7aWYocyYmQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9cy5tYXAoaD0+JGUoaCx0KSksdT1HdShhLGkpLGQ9QXJyYXkuaXNBcnJheShyKT92b2lkIDA6UXUocix0KSxwPUkudHVwbGUodSk7bz1kP3AucmVzdChkKTpwLHR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhJLm1pbkxlbmd0aChlLm1pbkl0ZW1zKSkpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhJLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9ci5tYXAoaD0+JGUoaCx0KSksdT1HdShhLGkpLGQ9UXUoZS5hZGRpdGlvbmFsSXRlbXMsdCkscD1JLnR1cGxlKHUpO289ZD9wLnJlc3QoZCk6cCx0eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soSS5taW5MZW5ndGgoZS5taW5JdGVtcykpKSx0eXBlb2YgZS5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soSS5tYXhMZW5ndGgoZS5tYXhJdGVtcykpKX1lbHNlIGlmKHIhPT12b2lkIDApe2NvbnN0IGk9JGUocix0KTtsZXQgYT1JLmFycmF5KGkpO3R5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5taW4oZS5taW5JdGVtcykpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5tYXgoZS5tYXhJdGVtcykpLG89YX1lbHNlIG89SS5hcnJheShJLmFueSgpKTsoZS51bmlxdWVJdGVtcz09PSEwfHxlLmNvbnRhaW5zIT09dm9pZCAwKSYmKG89UXkobyx7dW5pcXVlSXRlbXM6ZS51bmlxdWVJdGVtcz09PSEwLGNvbnRhaW5zU2NoZW1hOmUuY29udGFpbnMhPT12b2lkIDA/JGUoZS5jb250YWlucyx0KTp2b2lkIDAsbWluQ29udGFpbnM6dHlwZW9mIGUubWluQ29udGFpbnM9PSJudW1iZXIiP2UubWluQ29udGFpbnM6dm9pZCAwLG1heENvbnRhaW5zOnR5cGVvZiBlLm1heENvbnRhaW5zPT0ibnVtYmVyIj9lLm1heENvbnRhaW5zOnZvaWQgMH0pKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZTogJHtufWApfXJldHVybiBvfWZ1bmN0aW9uICRlKGUsdCl7aWYodHlwZW9mIGU9PSJib29sZWFuIilyZXR1cm4gZT9JLmFueSgpOkkubmV2ZXIoKTtsZXQgbj1DZihlLHQpO2NvbnN0IG89ZS50eXBlfHxlLmVudW0hPT12b2lkIDB8fGUuY29uc3QhPT12b2lkIDA7aWYoZS5hbnlPZiYmQXJyYXkuaXNBcnJheShlLmFueU9mKSl7Y29uc3QgYT1lLmFueU9mLm1hcChkPT4kZShkLHQpKSx1PUkudW5pb24oYSk7bj1vP0kuaW50ZXJzZWN0aW9uKG4sdSk6dX1pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBhPWUub25lT2YubWFwKGQ9PiRlKGQsdCkpLHU9SS54b3IoYSk7bj1vP0kuaW50ZXJzZWN0aW9uKG4sdSk6dX1pZihlLmFsbE9mJiZBcnJheS5pc0FycmF5KGUuYWxsT2YpKWlmKGUuYWxsT2YubGVuZ3RoPT09MCluPW8/bjpJLmFueSgpO2Vsc2V7bGV0IGE9bz9uOiRlKGUuYWxsT2ZbMF0sdCk7Y29uc3QgdT1vPzA6MTtmb3IobGV0IGQ9dTtkPGUuYWxsT2YubGVuZ3RoO2QrKylhPUkuaW50ZXJzZWN0aW9uKGEsJGUoZS5hbGxPZltkXSx0KSk7bj1hfWUubnVsbGFibGU9PT0hMCYmdC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKG49SS5udWxsYWJsZShuKSksZS5yZWFkT25seT09PSEwJiYobj1JLnJlYWRvbmx5KG4pKSxlLmRlZmF1bHQhPT12b2lkIDAmJihuPW4uZGVmYXVsdChlLmRlZmF1bHQpKTtjb25zdCBzPXt9LHI9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBhIG9mIHIpYSBpbiBlJiYoc1thXT1lW2FdKTtjb25zdCBpPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgYSBvZiBpKWEgaW4gZSYmKHNbYV09ZVthXSk7aWYoZS50eXBlPT09Im9iamVjdCImJmUuJHJlZj09PXZvaWQgMCl7ZS5wcm9wZXJ0eU5hbWVzIT09dm9pZCAwJiYhUG4oZS5wcm9wZXJ0eU5hbWVzKSYmKHMucHJvcGVydHlOYW1lcz1lLnByb3BlcnR5TmFtZXMpO2Zvcihjb25zdCBhIG9mWyJtaW5Qcm9wZXJ0aWVzIiwibWF4UHJvcGVydGllcyJdKWVbYV0hPT12b2lkIDAmJihzW2FdPWVbYV0pfWlmKGUudHlwZT09PSJhcnJheSImJmUuJHJlZj09PXZvaWQgMCl7ZS5jb250YWlucyE9PXZvaWQgMCYmIVBuKGUuY29udGFpbnMpJiYocy5jb250YWlucz1lLmNvbnRhaW5zKTtmb3IoY29uc3QgYSBvZlsidW5pcXVlSXRlbXMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIl0pZVthXSE9PXZvaWQgMCYmKHNbYV09ZVthXSl9Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmtleXMoZSkpSHkuaGFzKGEpfHxSdChzLGEsZVthXSk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZ0LnJlZ2lzdHJ5LmFkZChuLHMpLGUuZGVzY3JpcHRpb24mJihuPW4uZGVzY3JpYmUoZS5kZXNjcmlwdGlvbikpLG59ZnVuY3Rpb24gUGYoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiBlP0kuYW55KCk6SS5uZXZlcigpO2xldCBuO3RyeXtuPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiZnJvbUpTT05TY2hlbWEgaW5wdXQgaXMgbm90IHZhbGlkIEpTT04gKHBvc3NpYmx5IGN5Y2xpYyk7IHVzZSAkZGVmcy8kcmVmIGZvciByZWN1cnNpdmUgc2NoZW1hcyIpfWNvbnN0IG89V3kobix0Py5kZWZhdWx0VGFyZ2V0KSxzPW4uJGRlZnN8fG4uZGVmaW5pdGlvbnN8fHt9LHI9e3ZlcnNpb246byxkZWZzOnMscmVmczpuZXcgTWFwLHByb2Nlc3Npbmc6bmV3IFNldCxyb290U2NoZW1hOm4scmVnaXN0cnk6dD8ucmVnaXN0cnk/P2plfTtyZXR1cm4gJGUobixyKX1mdW5jdGlvbiBFZihlKXtyZXR1cm4gY2MoZSx7b2JqZWN0OnQ9PnQucGFydGlhbCgpLHVuaW9uOnQ9Pntjb25zdCBuPXQuX3pvZC5kZWY7cmV0dXJuIG4uZGlzY3JpbWluYXRvcj09PXZvaWQgMD90OkIobi5vcHRpb25zKX19KX1mdW5jdGlvbiBlJChlLHQpe2lmKCF0Py5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj1lLl96b2QuZGVmO3JldHVybiBhZShlLHllKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnRdfSkse3BhcmVudDohMH0pfWZ1bmN0aW9uIFJmKGUpe3JldHVybiBlJChlLm91dCxlLmNoZWNrcyl9ZnVuY3Rpb24gdCQoZSl7cmV0dXJuIGUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIik/UmYoZSk6ZS5pbn1mdW5jdGlvbiBPZihlKXtyZXR1cm4gY2MoZSx7cGlwZTp0PT50JCh0Ll96b2QuZGVmKSxkZWZhdWx0Oih0LG4pPT5uP25lKHQuX3pvZC5kZWYuaW5uZXJUeXBlKTp0LGNhdGNoOih0LG4pPT5uP3QuX3pvZC5kZWYuaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBOZihlKXtyZXR1cm4gY2MoZSx7cGlwZTp0PT5SZih0Ll96b2QuZGVmKSxwcmVmYXVsdDoodCxuKT0+bj90Ll96b2QuZGVmLmlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gbiQoZSl7cmV0dXJuIFptKHJuLGUpfWZ1bmN0aW9uIG8kKGUpe3JldHVybiBEbShwbixlKX1mdW5jdGlvbiBzJChlKXtyZXR1cm4gSm0oaG4sZSl9ZnVuY3Rpb24gciQoZSl7cmV0dXJuIEdtKG1uLGUpfWZ1bmN0aW9uIGkkKGUpe3JldHVybiBjZihPbyxlKX1jb25zdCBaZj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OnIkLGJvb2xlYW46cyQsZGF0ZTppJCxudW1iZXI6byQsc3RyaW5nOm4kfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLFh1PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6VmksJGlucHV0OklhLCRvdXRwdXQ6eGEsSU5WQUxJRDpDYSxORVZFUjpXaSxUaW1lUHJlY2lzaW9uOm5jLFpvZEFueTpscixab2RBcnJheTpocixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDptbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjpobixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6eW8sWm9kQ2F0Y2g6RXIsWm9kQ29kZWM6JG4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6UGEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6RWEsWm9kQ3JlZGl0Q2FyZDpzcixab2RDdXN0b206a24sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Om10LFpvZERhdGU6T28sWm9kRGVmYXVsdDp6cixab2REaXNjcmltaW5hdGVkVW5pb246ZnIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOnp0LFpvZEVycm9yOlRmLFpvZEV4YWN0T3B0aW9uYWw6am8sWm9kRmlsZTp3cixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIHZzfSxab2RGdW5jdGlvbjpCcixab2RHVUlEOmZvLFpvZElCQU46cnIsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6Y24sWm9kSVNPRGF0ZVRpbWU6YW4sWm9kSVNPRHVyYXRpb246dW4sWm9kSVNPVGltZTpsbixab2RJbnN0YW5jZU9mOldyLFpvZEludGVyc2VjdGlvbjpncixab2RJc3N1ZUNvZGU6emYsWm9kSldUOkNvLFpvZEtTVUlEOndvLFpvZExhenk6cXIsWm9kTGl0ZXJhbDprcixab2RNQUM6b3IsWm9kTWFwOnlyLFpvZE5hTjpPcixab2ROYW5vSUQ6Ym8sWm9kTmV2ZXI6ZHIsWm9kTm9uT3B0aW9uYWw6TW8sWm9kTnVsbDpjcixab2ROdWxsYWJsZTpUcixab2ROdW1iZXI6cG4sWm9kTnVtYmVyRm9ybWF0OmZ0LFpvZE9iamVjdDpmbixab2RPcHRpb25hbDp2bixab2RQaXBlOnluLFpvZFByZWZhdWx0OklyLFpvZFByZXByb2Nlc3M6TnIsWm9kUHJvbWlzZTpEcixab2RSZWFkb25seTpacixab2RSZWFsRXJyb3I6SWUsWm9kUmVjb3JkOlR0LFpvZFNldDokcixab2RTdHJpbmc6cm4sWm9kU3RyaW5nRm9ybWF0OlgsWm9kU3VjY2VzczpQcixab2RTeW1ib2w6aXIsWm9kVGVtcGxhdGVMaXRlcmFsOk1yLFpvZFRyYW5zZm9ybTpfcixab2RUdXBsZTpicixab2RUeXBlOkwsWm9kVUxJRDokbyxab2RVUkw6ZG4sWm9kVVVJRDpIZSxab2RVbmRlZmluZWQ6YXIsWm9kVW5pb246Z24sWm9kVW5rbm93bjp1cixab2RWb2lkOnByLFpvZFhJRDprbyxab2RYb3I6bXIsX1pvZFN0cmluZzpobyxfZGVmYXVsdDp4cixfZnVuY3Rpb246WXQsYW55OlJvLGFycmF5OlIsYmFzZTY0OkJjLGJhc2U2NHVybDpGYyxiaWdpbnQ6b2wsYm9vbGVhbjpRLGNhdGNoOlJyLGNoZWNrOlRsLGNpZHJ2NDpMYyxjaWRydjY6RGMsY2xvbmU6YWUsY29kZWM6a2wsY29lcmNlOlpmLGNvbXBpbGU6UmEsY29uZmlnOmhlLGNvcmU6d2YsY3JlZGl0Q2FyZDpIYyxjdWlkOkVjLGN1aWQyOlJjLGN1cnJlbmN5Q29kZTpZYyxjdXN0b206RnIsZGF0ZTpjbCxkZWNvZGU6ZmMsZGVjb2RlQXN5bmM6YmMsZGVlcFBhcnRpYWw6RWYsZGVzY3JpYmU6emwsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6VWMsZW1haWw6d2MsZW1vamk6Q2MsZW5jb2RlOm1jLGVuY29kZUFzeW5jOmdjLGVuZHNXaXRoOnNvLGVudW06ZmUsZXhhY3RPcHRpb25hbDpTcixmaWxlOmJsLGZsYXR0ZW5FcnJvcjpMcyxmbG9hdDMyOlhjLGZsb2F0NjQ6ZWwsZm9ybWF0RXJyb3I6RHMsZnJvbUpTT05TY2hlbWE6UGYsZnVuY3Rpb246WXQsZ2V0RGlzY3JpbWluYXRlZE9wdGlvbjokYSxnZXRFcnJvck1hcDpJZixnbG9iYWxSZWdpc3RyeTpqZSxndDp0dCxndGU6UGUsZ3VpZDpfYyxoYXNoOlFjLGhleDpHYyxob3N0bmFtZTpLYyxodHRwVXJsOkFjLGliYW46V2MsaW5jbHVkZXM6bm8saW5wdXQ6T2YsaW5zdGFuY2VvZjpJbCxpbnQ6am4saW50MzI6dGwsaW50NjQ6c2wsaW50ZXJzZWN0aW9uOmJuLGludmVydENvZGVjOndsLGlwdjQ6amMsaXB2NjpxYyxpc286UGwsanNvbjpDbCxqd3Q6VmMsa2V5b2Y6bGwsa3N1aWQ6WmMsbGF6eTpMcixsZW5ndGg6b24sbGl0ZXJhbDpiLGxvY2FsZXM6emEsbG9vc2VPYmplY3Q6bWUsbG9vc2VSZWNvcmQ6aGwsbG93ZXJjYXNlOmVvLGx0OmV0LGx0ZTpDZSxtYWM6TWMsbWFwOm1sLG1heExlbmd0aDpubixtYXhTaXplOk90LG1lbW9pemVyOkpzLG1ldGE6eGwsbWltZTppbyxtaW5MZW5ndGg6cHQsbWluU2l6ZTpudCxtdWx0aXBsZU9mOl90LG5hbjokbCxuYW5vaWQ6UGMsbmF0aXZlRW51bTpnbCxuZWdhdGl2ZTpYcyxuZXZlcjpTdCxub25uZWdhdGl2ZTp0cixub25vcHRpb25hbDpDcixub25wb3NpdGl2ZTplcixub3JtYWxpemU6YW8sbnVsbDpFbyxudWxsYWJsZTpHdCxudWxsaXNoOnZsLG51bWJlcjpxLG9iamVjdDp2LG9wdGlvbmFsOm5lLG91dHB1dDpOZixvdmVyd3JpdGU6S2UscGFyc2U6dWMscGFyc2VBc3luYzpkYyxwYXJ0aWFsUmVjb3JkOnBsLHBpcGU6TW4scG9zaXRpdmU6UXMscHJlZmF1bHQ6QXIscHJlcHJvY2VzczpxbyxwcmV0dGlmeUVycm9yOktpLHByb21pc2U6U2wscHJvcGVydGllczpybyxwcm9wZXJ0eTpucixyZWFkb25seTpqcixyZWNvcmQ6SCxyZWZpbmU6VXIscmVnZXg6WG4scmVnZXhlczpXcyxyZWdpc3RyeTpLcyxzYWZlRGVjb2RlOnljLHNhZmVEZWNvZGVBc3luYzprYyxzYWZlRW5jb2RlOnZjLHNhZmVFbmNvZGVBc3luYzokYyxzYWZlUGFyc2U6cGMsc2FmZVBhcnNlQXN5bmM6aGMsc2V0OmZsLHNldEVycm9yTWFwOnhmLHNpemU6dG4sc2x1Z2lmeTpwbyxzdGFydHNXaXRoOm9vLHN0cmljdE9iamVjdDp1bCxzdHJpbmc6ZyxzdHJpbmdGb3JtYXQ6SmMsc3RyaW5nYm9vbDpBbCxzdWNjZXNzOnlsLHN1cGVyUmVmaW5lOkhyLHN5bWJvbDppbCx0ZW1wbGF0ZUxpdGVyYWw6X2wsdG9KU09OU2NoZW1hOmFjLHRvTG93ZXJDYXNlOmxvLHRvVXBwZXJDYXNlOnVvLHRvWm9kOlBzLHRyYW5zZm9ybTpabyx0cmVlaWZ5RXJyb3I6SmksdHJpbTpjbyx0dXBsZTp2cix1aW50MzI6bmwsdWludDY0OnJsLHVsaWQ6T2MsdW5kZWZpbmVkOkt0LHVuaW9uOkIsdW5rbm93bjpZLHVwcGVyY2FzZTp0byx1cmw6SWMsdXRpbDpIaSx1dWlkOlNjLHV1aWR2NDpUYyx1dWlkdjY6emMsdXVpZHY3OnhjLHZhbGlkYXRlOkZzLHZhbGlkYXRlQXN5bmM6VXMsdm9pZDphbCx3aXRoUGFyc2VyOk9hLHhpZDpOYyx4b3I6ZGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksYSQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpWaSwkaW5wdXQ6SWEsJG91dHB1dDp4YSxJTlZBTElEOkNhLE5FVkVSOldpLFRpbWVQcmVjaXNpb246bmMsWm9kQW55OmxyLFpvZEFycmF5OmhyLFpvZEJhc2U2NDp4byxab2RCYXNlNjRVUkw6SW8sWm9kQmlnSW50Om1uLFpvZEJpZ0ludEZvcm1hdDpQbyxab2RCb29sZWFuOmhuLFpvZENJRFJ2NDpUbyxab2RDSURSdjY6em8sWm9kQ1VJRDp2byxab2RDVUlEMjp5byxab2RDYXRjaDpFcixab2RDb2RlYzokbixab2RDb21waWxlQXN5bmNFcnJvcjpQYSxab2RDb21waWxlVW5zdXBwb3J0ZWRFcnJvcjpFYSxab2RDcmVkaXRDYXJkOnNyLFpvZEN1c3RvbTprbixab2RDdXN0b21TdHJpbmdGb3JtYXQ6bXQsWm9kRGF0ZTpPbyxab2REZWZhdWx0OnpyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpmcixab2RFMTY0OkFvLFpvZEVtYWlsOm1vLFpvZEVtb2ppOmdvLFpvZEVudW06enQsWm9kRXJyb3I6VGYsWm9kRXhhY3RPcHRpb25hbDpqbyxab2RGaWxlOndyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gdnN9LFpvZEZ1bmN0aW9uOkJyLFpvZEdVSUQ6Zm8sWm9kSUJBTjpycixab2RJUHY0Ol9vLFpvZElQdjY6U28sWm9kSVNPRGF0ZTpjbixab2RJU09EYXRlVGltZTphbixab2RJU09EdXJhdGlvbjp1bixab2RJU09UaW1lOmxuLFpvZEluc3RhbmNlT2Y6V3IsWm9kSW50ZXJzZWN0aW9uOmdyLFpvZElzc3VlQ29kZTp6Zixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpxcixab2RMaXRlcmFsOmtyLFpvZE1BQzpvcixab2RNYXA6eXIsWm9kTmFOOk9yLFpvZE5hbm9JRDpibyxab2ROZXZlcjpkcixab2ROb25PcHRpb25hbDpNbyxab2ROdWxsOmNyLFpvZE51bGxhYmxlOlRyLFpvZE51bWJlcjpwbixab2ROdW1iZXJGb3JtYXQ6ZnQsWm9kT2JqZWN0OmZuLFpvZE9wdGlvbmFsOnZuLFpvZFBpcGU6eW4sWm9kUHJlZmF1bHQ6SXIsWm9kUHJlcHJvY2VzczpOcixab2RQcm9taXNlOkRyLFpvZFJlYWRvbmx5OlpyLFpvZFJlYWxFcnJvcjpJZSxab2RSZWNvcmQ6VHQsWm9kU2V0OiRyLFpvZFN0cmluZzpybixab2RTdHJpbmdGb3JtYXQ6WCxab2RTdWNjZXNzOlByLFpvZFN5bWJvbDppcixab2RUZW1wbGF0ZUxpdGVyYWw6TXIsWm9kVHJhbnNmb3JtOl9yLFpvZFR1cGxlOmJyLFpvZFR5cGU6TCxab2RVTElEOiRvLFpvZFVSTDpkbixab2RVVUlEOkhlLFpvZFVuZGVmaW5lZDphcixab2RVbmlvbjpnbixab2RVbmtub3duOnVyLFpvZFZvaWQ6cHIsWm9kWElEOmtvLFpvZFhvcjptcixfWm9kU3RyaW5nOmhvLF9kZWZhdWx0OnhyLF9mdW5jdGlvbjpZdCxhbnk6Um8sYXJyYXk6UixiYXNlNjQ6QmMsYmFzZTY0dXJsOkZjLGJpZ2ludDpvbCxib29sZWFuOlEsY2F0Y2g6UnIsY2hlY2s6VGwsY2lkcnY0OkxjLGNpZHJ2NjpEYyxjbG9uZTphZSxjb2RlYzprbCxjb2VyY2U6WmYsY29tcGlsZTpSYSxjb25maWc6aGUsY29yZTp3ZixjcmVkaXRDYXJkOkhjLGN1aWQ6RWMsY3VpZDI6UmMsY3VycmVuY3lDb2RlOlljLGN1c3RvbTpGcixkYXRlOmNsLGRlY29kZTpmYyxkZWNvZGVBc3luYzpiYyxkZWVwUGFydGlhbDpFZixkZWZhdWx0Olh1LGRlc2NyaWJlOnpsLGRpc2NyaW1pbmF0ZWRVbmlvbjpObyxlMTY0OlVjLGVtYWlsOndjLGVtb2ppOkNjLGVuY29kZTptYyxlbmNvZGVBc3luYzpnYyxlbmRzV2l0aDpzbyxlbnVtOmZlLGV4YWN0T3B0aW9uYWw6U3IsZmlsZTpibCxmbGF0dGVuRXJyb3I6THMsZmxvYXQzMjpYYyxmbG9hdDY0OmVsLGZvcm1hdEVycm9yOkRzLGZyb21KU09OU2NoZW1hOlBmLGZ1bmN0aW9uOll0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246JGEsZ2V0RXJyb3JNYXA6SWYsZ2xvYmFsUmVnaXN0cnk6amUsZ3Q6dHQsZ3RlOlBlLGd1aWQ6X2MsaGFzaDpRYyxoZXg6R2MsaG9zdG5hbWU6S2MsaHR0cFVybDpBYyxpYmFuOldjLGluY2x1ZGVzOm5vLGlucHV0Ok9mLGluc3RhbmNlb2Y6SWwsaW50OmpuLGludDMyOnRsLGludDY0OnNsLGludGVyc2VjdGlvbjpibixpbnZlcnRDb2RlYzp3bCxpcHY0OmpjLGlwdjY6cWMsaXNvOlBsLGpzb246Q2wsand0OlZjLGtleW9mOmxsLGtzdWlkOlpjLGxhenk6THIsbGVuZ3RoOm9uLGxpdGVyYWw6Yixsb2NhbGVzOnphLGxvb3NlT2JqZWN0Om1lLGxvb3NlUmVjb3JkOmhsLGxvd2VyY2FzZTplbyxsdDpldCxsdGU6Q2UsbWFjOk1jLG1hcDptbCxtYXhMZW5ndGg6bm4sbWF4U2l6ZTpPdCxtZW1vaXplcjpKcyxtZXRhOnhsLG1pbWU6aW8sbWluTGVuZ3RoOnB0LG1pblNpemU6bnQsbXVsdGlwbGVPZjpfdCxuYW46JGwsbmFub2lkOlBjLG5hdGl2ZUVudW06Z2wsbmVnYXRpdmU6WHMsbmV2ZXI6U3Qsbm9ubmVnYXRpdmU6dHIsbm9ub3B0aW9uYWw6Q3Isbm9ucG9zaXRpdmU6ZXIsbm9ybWFsaXplOmFvLG51bGw6RW8sbnVsbGFibGU6R3QsbnVsbGlzaDp2bCxudW1iZXI6cSxvYmplY3Q6dixvcHRpb25hbDpuZSxvdXRwdXQ6TmYsb3ZlcndyaXRlOktlLHBhcnNlOnVjLHBhcnNlQXN5bmM6ZGMscGFydGlhbFJlY29yZDpwbCxwaXBlOk1uLHBvc2l0aXZlOlFzLHByZWZhdWx0OkFyLHByZXByb2Nlc3M6cW8scHJldHRpZnlFcnJvcjpLaSxwcm9taXNlOlNsLHByb3BlcnRpZXM6cm8scHJvcGVydHk6bnIscmVhZG9ubHk6anIscmVjb3JkOkgscmVmaW5lOlVyLHJlZ2V4OlhuLHJlZ2V4ZXM6V3MscmVnaXN0cnk6S3Msc2FmZURlY29kZTp5YyxzYWZlRGVjb2RlQXN5bmM6a2Msc2FmZUVuY29kZTp2YyxzYWZlRW5jb2RlQXN5bmM6JGMsc2FmZVBhcnNlOnBjLHNhZmVQYXJzZUFzeW5jOmhjLHNldDpmbCxzZXRFcnJvck1hcDp4ZixzaXplOnRuLHNsdWdpZnk6cG8sc3RhcnRzV2l0aDpvbyxzdHJpY3RPYmplY3Q6dWwsc3RyaW5nOmcsc3RyaW5nRm9ybWF0OkpjLHN0cmluZ2Jvb2w6QWwsc3VjY2Vzczp5bCxzdXBlclJlZmluZTpIcixzeW1ib2w6aWwsdGVtcGxhdGVMaXRlcmFsOl9sLHRvSlNPTlNjaGVtYTphYyx0b0xvd2VyQ2FzZTpsbyx0b1VwcGVyQ2FzZTp1byx0b1pvZDpQcyx0cmFuc2Zvcm06Wm8sdHJlZWlmeUVycm9yOkppLHRyaW06Y28sdHVwbGU6dnIsdWludDMyOm5sLHVpbnQ2NDpybCx1bGlkOk9jLHVuZGVmaW5lZDpLdCx1bmlvbjpCLHVua25vd246WSx1cHBlcmNhc2U6dG8sdXJsOkljLHV0aWw6SGksdXVpZDpTYyx1dWlkdjQ6VGMsdXVpZHY2OnpjLHV1aWR2Nzp4Yyx2YWxpZGF0ZTpGcyx2YWxpZGF0ZUFzeW5jOlVzLHZvaWQ6YWwsd2l0aFBhcnNlcjpPYSx4aWQ6TmMseG9yOmRsLHo6WHV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksJHQ9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsVnI9IjIuMCIsZGU9RnIoZT0+ZSE9PW51bGwmJih0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKSksamY9QihbZygpLHEoKS5pbnQoKV0pLE1mPWcoKTttZSh7dHRsOnEoKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDpxKCkub3B0aW9uYWwoKX0pO2NvbnN0IGMkPXYoe3R0bDpxKCkub3B0aW9uYWwoKX0pLGwkPXYoe3Rhc2tJZDpnKCl9KSxFbD1tZSh7cHJvZ3Jlc3NUb2tlbjpqZi5vcHRpb25hbCgpLFskdF06bCQub3B0aW9uYWwoKX0pLE9lPXYoe19tZXRhOkVsLm9wdGlvbmFsKCl9KSxMbz1PZS5leHRlbmQoe3Rhc2s6YyQub3B0aW9uYWwoKX0pLHUkPWU9PkxvLnNhZmVQYXJzZShlKS5zdWNjZXNzLGdlPXYoe21ldGhvZDpnKCkscGFyYW1zOk9lLmxvb3NlKCkub3B0aW9uYWwoKX0pLExlPXYoe19tZXRhOkVsLm9wdGlvbmFsKCl9KSxEZT12KHttZXRob2Q6ZygpLHBhcmFtczpMZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxiZT1tZSh7X21ldGE6RWwub3B0aW9uYWwoKX0pLERvPUIoW2coKSxxKCkuaW50KCldKSxxZj12KHtqc29ucnBjOmIoVnIpLGlkOkRvLC4uLmdlLnNoYXBlfSkuc3RyaWN0KCksZWQ9ZT0+cWYuc2FmZVBhcnNlKGUpLnN1Y2Nlc3MsTGY9dih7anNvbnJwYzpiKFZyKSwuLi5EZS5zaGFwZX0pLnN0cmljdCgpLGQkPWU9PkxmLnNhZmVQYXJzZShlKS5zdWNjZXNzLFJsPXYoe2pzb25ycGM6YihWciksaWQ6RG8scmVzdWx0OmJlfSkuc3RyaWN0KCksb3M9ZT0+Umwuc2FmZVBhcnNlKGUpLnN1Y2Nlc3M7dmFyIGVlOyhmdW5jdGlvbihlKXtlW2UuQ29ubmVjdGlvbkNsb3NlZD0tMzJlM109IkNvbm5lY3Rpb25DbG9zZWQiLGVbZS5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPSJSZXF1ZXN0VGltZW91dCIsZVtlLlBhcnNlRXJyb3I9LTMyNzAwXT0iUGFyc2VFcnJvciIsZVtlLkludmFsaWRSZXF1ZXN0PS0zMjYwMF09IkludmFsaWRSZXF1ZXN0IixlW2UuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT0iTWV0aG9kTm90Rm91bmQiLGVbZS5JbnZhbGlkUGFyYW1zPS0zMjYwMl09IkludmFsaWRQYXJhbXMiLGVbZS5JbnRlcm5hbEVycm9yPS0zMjYwM109IkludGVybmFsRXJyb3IiLGVbZS5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09IlVybEVsaWNpdGF0aW9uUmVxdWlyZWQifSkoZWV8fChlZT17fSkpO2NvbnN0IE9sPXYoe2pzb25ycGM6YihWciksaWQ6RG8ub3B0aW9uYWwoKSxlcnJvcjp2KHtjb2RlOnEoKS5pbnQoKSxtZXNzYWdlOmcoKSxkYXRhOlkoKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxwJD1lPT5PbC5zYWZlUGFyc2UoZSkuc3VjY2VzcyxoJD1CKFtxZixMZixSbCxPbF0pO0IoW1JsLE9sXSk7Y29uc3QgTmw9YmUuc3RyaWN0KCksbSQ9TGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6RG8ub3B0aW9uYWwoKSxyZWFzb246ZygpLm9wdGlvbmFsKCl9KSxabD1EZS5leHRlbmQoe21ldGhvZDpiKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczptJH0pLGYkPXYoe3NyYzpnKCksbWltZVR5cGU6ZygpLm9wdGlvbmFsKCksc2l6ZXM6UihnKCkpLm9wdGlvbmFsKCksdGhlbWU6ZmUoWyJsaWdodCIsImRhcmsiXSkub3B0aW9uYWwoKX0pLEJvPXYoe2ljb25zOlIoZiQpLm9wdGlvbmFsKCl9KSxRdD12KHtuYW1lOmcoKSx0aXRsZTpnKCkub3B0aW9uYWwoKX0pLEpyPVF0LmV4dGVuZCh7Li4uUXQuc2hhcGUsLi4uQm8uc2hhcGUsdmVyc2lvbjpnKCksd2Vic2l0ZVVybDpnKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpnKCkub3B0aW9uYWwoKX0pLGckPWJuKHYoe2FwcGx5RGVmYXVsdHM6USgpLm9wdGlvbmFsKCl9KSxIKGcoKSxZKCkpKSxiJD1xbyhlPT5lJiZ0eXBlb2YgZT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGUpJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wP3tmb3JtOnt9fTplLGJuKHYoe2Zvcm06ZyQub3B0aW9uYWwoKSx1cmw6ZGUub3B0aW9uYWwoKX0pLEgoZygpLFkoKSkub3B0aW9uYWwoKSkpLHYkPW1lKHtsaXN0OmRlLm9wdGlvbmFsKCksY2FuY2VsOmRlLm9wdGlvbmFsKCkscmVxdWVzdHM6bWUoe3NhbXBsaW5nOm1lKHtjcmVhdGVNZXNzYWdlOmRlLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOm1lKHtjcmVhdGU6ZGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkseSQ9bWUoe2xpc3Q6ZGUub3B0aW9uYWwoKSxjYW5jZWw6ZGUub3B0aW9uYWwoKSxyZXF1ZXN0czptZSh7dG9vbHM6bWUoe2NhbGw6ZGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksJCQ9dih7ZXhwZXJpbWVudGFsOkgoZygpLGRlKS5vcHRpb25hbCgpLHNhbXBsaW5nOnYoe2NvbnRleHQ6ZGUub3B0aW9uYWwoKSx0b29sczpkZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpiJC5vcHRpb25hbCgpLHJvb3RzOnYoe2xpc3RDaGFuZ2VkOlEoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp2JC5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChnKCksZGUpLm9wdGlvbmFsKCl9KSxrJD1PZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpnKCksY2FwYWJpbGl0aWVzOiQkLGNsaWVudEluZm86SnJ9KSx3JD1nZS5leHRlbmQoe21ldGhvZDpiKCJpbml0aWFsaXplIikscGFyYW1zOmskfSksXyQ9dih7ZXhwZXJpbWVudGFsOkgoZygpLGRlKS5vcHRpb25hbCgpLGxvZ2dpbmc6ZGUub3B0aW9uYWwoKSxjb21wbGV0aW9uczpkZS5vcHRpb25hbCgpLHByb21wdHM6dih7bGlzdENoYW5nZWQ6USgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczp2KHtzdWJzY3JpYmU6USgpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6USgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOnYoe2xpc3RDaGFuZ2VkOlEoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp5JC5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChnKCksZGUpLm9wdGlvbmFsKCl9KSxTJD1iZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpnKCksY2FwYWJpbGl0aWVzOl8kLHNlcnZlckluZm86SnIsaW5zdHJ1Y3Rpb25zOmcoKS5vcHRpb25hbCgpfSksVCQ9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpMZS5vcHRpb25hbCgpfSksS3I9Z2UuZXh0ZW5kKHttZXRob2Q6YigicGluZyIpLHBhcmFtczpPZS5vcHRpb25hbCgpfSkseiQ9dih7cHJvZ3Jlc3M6cSgpLHRvdGFsOm5lKHEoKSksbWVzc2FnZTpuZShnKCkpfSkseCQ9dih7Li4uTGUuc2hhcGUsLi4ueiQuc2hhcGUscHJvZ3Jlc3NUb2tlbjpqZn0pLGpsPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6eCR9KSxJJD1PZS5leHRlbmQoe2N1cnNvcjpNZi5vcHRpb25hbCgpfSksRm89Z2UuZXh0ZW5kKHtwYXJhbXM6SSQub3B0aW9uYWwoKX0pLFVvPWJlLmV4dGVuZCh7bmV4dEN1cnNvcjpNZi5vcHRpb25hbCgpfSksQSQ9ZmUoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksSG89dih7dGFza0lkOmcoKSxzdGF0dXM6QSQsdHRsOkIoW3EoKSxFbygpXSksY3JlYXRlZEF0OmcoKSxsYXN0VXBkYXRlZEF0OmcoKSxwb2xsSW50ZXJ2YWw6bmUocSgpKSxzdGF0dXNNZXNzYWdlOm5lKGcoKSl9KSxNbD1iZS5leHRlbmQoe3Rhc2s6SG99KSxDJD1MZS5tZXJnZShIbykseXM9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6QyR9KSxxbD1nZS5leHRlbmQoe21ldGhvZDpiKCJ0YXNrcy9nZXQiKSxwYXJhbXM6T2UuZXh0ZW5kKHt0YXNrSWQ6ZygpfSl9KSxMbD1iZS5tZXJnZShIbyksRGw9Z2UuZXh0ZW5kKHttZXRob2Q6YigidGFza3MvcmVzdWx0IikscGFyYW1zOk9lLmV4dGVuZCh7dGFza0lkOmcoKX0pfSk7YmUubG9vc2UoKTtjb25zdCBCbD1Gby5leHRlbmQoe21ldGhvZDpiKCJ0YXNrcy9saXN0Iil9KSxGbD1Vby5leHRlbmQoe3Rhc2tzOlIoSG8pfSksVWw9Z2UuZXh0ZW5kKHttZXRob2Q6YigidGFza3MvY2FuY2VsIikscGFyYW1zOk9lLmV4dGVuZCh7dGFza0lkOmcoKX0pfSksUCQ9YmUubWVyZ2UoSG8pLERmPXYoe3VyaTpnKCksbWltZVR5cGU6bmUoZygpKSxfbWV0YTpIKGcoKSxZKCkpLm9wdGlvbmFsKCl9KSxCZj1EZi5leHRlbmQoe3RleHQ6ZygpfSksSGw9ZygpLnJlZmluZShlPT57dHJ5e3JldHVybiBhdG9iKGUpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxGZj1EZi5leHRlbmQoe2Jsb2I6SGx9KSxXbz1mZShbInVzZXIiLCJhc3Npc3RhbnQiXSksd249dih7YXVkaWVuY2U6UihXbykub3B0aW9uYWwoKSxwcmlvcml0eTpxKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDpBZih7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLFVmPXYoey4uLlF0LnNoYXBlLC4uLkJvLnNoYXBlLHVyaTpnKCksZGVzY3JpcHRpb246bmUoZygpKSxtaW1lVHlwZTpuZShnKCkpLHNpemU6bmUocSgpKSxhbm5vdGF0aW9uczp3bi5vcHRpb25hbCgpLF9tZXRhOm5lKG1lKHt9KSl9KSxFJD12KHsuLi5RdC5zaGFwZSwuLi5Cby5zaGFwZSx1cmlUZW1wbGF0ZTpnKCksZGVzY3JpcHRpb246bmUoZygpKSxtaW1lVHlwZTpuZShnKCkpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6bmUobWUoe30pKX0pLFIkPUZvLmV4dGVuZCh7bWV0aG9kOmIoInJlc291cmNlcy9saXN0Iil9KSxIZj1Vby5leHRlbmQoe3Jlc291cmNlczpSKFVmKX0pLE8kPUZvLmV4dGVuZCh7bWV0aG9kOmIoInJlc291cmNlcy90ZW1wbGF0ZXMvbGlzdCIpfSksTiQ9VW8uZXh0ZW5kKHtyZXNvdXJjZVRlbXBsYXRlczpSKEUkKX0pLFdsPU9lLmV4dGVuZCh7dXJpOmcoKX0pLFokPVdsLGokPWdlLmV4dGVuZCh7bWV0aG9kOmIoInJlc291cmNlcy9yZWFkIikscGFyYW1zOlokfSksV2Y9YmUuZXh0ZW5kKHtjb250ZW50czpSKEIoW0JmLEZmXSkpfSksTSQ9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KSxxJD1XbCxMJD1nZS5leHRlbmQoe21ldGhvZDpiKCJyZXNvdXJjZXMvc3Vic2NyaWJlIikscGFyYW1zOnEkfSksRCQ9V2wsQiQ9Z2UuZXh0ZW5kKHttZXRob2Q6YigicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOkQkfSksRiQ9TGUuZXh0ZW5kKHt1cmk6ZygpfSksVSQ9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpGJH0pLEgkPXYoe25hbWU6ZygpLGRlc2NyaXB0aW9uOm5lKGcoKSkscmVxdWlyZWQ6bmUoUSgpKX0pLFckPXYoey4uLlF0LnNoYXBlLC4uLkJvLnNoYXBlLGRlc2NyaXB0aW9uOm5lKGcoKSksYXJndW1lbnRzOm5lKFIoSCQpKSxfbWV0YTpuZShtZSh7fSkpfSksViQ9Rm8uZXh0ZW5kKHttZXRob2Q6YigicHJvbXB0cy9saXN0Iil9KSxKJD1Vby5leHRlbmQoe3Byb21wdHM6UihXJCl9KSxLJD1PZS5leHRlbmQoe25hbWU6ZygpLGFyZ3VtZW50czpIKGcoKSxnKCkpLm9wdGlvbmFsKCl9KSxHJD1nZS5leHRlbmQoe21ldGhvZDpiKCJwcm9tcHRzL2dldCIpLHBhcmFtczpLJH0pLFZsPXYoe3R5cGU6YigidGV4dCIpLHRleHQ6ZygpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksSmw9dih7dHlwZTpiKCJpbWFnZSIpLGRhdGE6SGwsbWltZVR5cGU6ZygpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksS2w9dih7dHlwZTpiKCJhdWRpbyIpLGRhdGE6SGwsbWltZVR5cGU6ZygpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksWSQ9dih7dHlwZTpiKCJ0b29sX3VzZSIpLG5hbWU6ZygpLGlkOmcoKSxpbnB1dDpIKGcoKSxZKCkpLF9tZXRhOkgoZygpLFkoKSkub3B0aW9uYWwoKX0pLFZmPXYoe3R5cGU6YigicmVzb3VyY2UiKSxyZXNvdXJjZTpCKFtCZixGZl0pLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksSmY9VWYuZXh0ZW5kKHt0eXBlOmIoInJlc291cmNlX2xpbmsiKX0pLFZvPUIoW1ZsLEpsLEtsLEpmLFZmXSksUSQ9dih7cm9sZTpXbyxjb250ZW50OlZvfSksWCQ9YmUuZXh0ZW5kKHtkZXNjcmlwdGlvbjpnKCkub3B0aW9uYWwoKSxtZXNzYWdlczpSKFEkKX0pLGVrPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pLHRrPXYoe3RpdGxlOmcoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpRKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6USgpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6USgpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpRKCkub3B0aW9uYWwoKX0pLG5rPXYoe3Rhc2tTdXBwb3J0OmZlKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksR2w9dih7Li4uUXQuc2hhcGUsLi4uQm8uc2hhcGUsZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6dih7dHlwZTpiKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZygpLGRlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZygpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoWSgpKSxvdXRwdXRTY2hlbWE6dih7dHlwZTpiKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZygpLGRlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZygpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoWSgpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOnRrLm9wdGlvbmFsKCksZXhlY3V0aW9uOm5rLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksS2Y9Rm8uZXh0ZW5kKHttZXRob2Q6YigidG9vbHMvbGlzdCIpfSksb2s9VW8uZXh0ZW5kKHt0b29sczpSKEdsKX0pLEdyPWJlLmV4dGVuZCh7Y29udGVudDpSKFZvKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGcoKSxZKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpRKCkub3B0aW9uYWwoKX0pO0dyLm9yKGJlLmV4dGVuZCh7dG9vbFJlc3VsdDpZKCl9KSk7Y29uc3Qgc2s9TG8uZXh0ZW5kKHtuYW1lOmcoKSxhcmd1bWVudHM6SChnKCksWSgpKS5vcHRpb25hbCgpfSksR2Y9Z2UuZXh0ZW5kKHttZXRob2Q6YigidG9vbHMvY2FsbCIpLHBhcmFtczpza30pLHJrPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KTt2KHthdXRvUmVmcmVzaDpRKCkuZGVmYXVsdCghMCksZGVib3VuY2VNczpxKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KTtjb25zdCBZZj1mZShbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksaWs9T2UuZXh0ZW5kKHtsZXZlbDpZZn0pLGFrPWdlLmV4dGVuZCh7bWV0aG9kOmIoImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6aWt9KSxjaz1MZS5leHRlbmQoe2xldmVsOllmLGxvZ2dlcjpnKCkub3B0aW9uYWwoKSxkYXRhOlkoKX0pLGxrPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpja30pLHVrPXYoe25hbWU6ZygpLm9wdGlvbmFsKCl9KSxkaz12KHtoaW50czpSKHVrKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTpxKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6cSgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTpxKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSkscGs9dih7bW9kZTpmZShbImF1dG8iLCJyZXF1aXJlZCIsIm5vbmUiXSkub3B0aW9uYWwoKX0pLGhrPXYoe3R5cGU6YigidG9vbF9yZXN1bHQiKSx0b29sVXNlSWQ6ZygpLmRlc2NyaWJlKCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC4iKSxjb250ZW50OlIoVm8pLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOlEoKS5vcHRpb25hbCgpLF9tZXRhOkgoZygpLFkoKSkub3B0aW9uYWwoKX0pLG1rPU5vKCJ0eXBlIixbVmwsSmwsS2xdKSwkcz1ObygidHlwZSIsW1ZsLEpsLEtsLFkkLGhrXSksZms9dih7cm9sZTpXbyxjb250ZW50OkIoWyRzLFIoJHMpXSksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksZ2s9TG8uZXh0ZW5kKHttZXNzYWdlczpSKGZrKSxtb2RlbFByZWZlcmVuY2VzOmRrLm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OmcoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0OmZlKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6cSgpLm9wdGlvbmFsKCksbWF4VG9rZW5zOnEoKS5pbnQoKSxzdG9wU2VxdWVuY2VzOlIoZygpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmRlLm9wdGlvbmFsKCksdG9vbHM6UihHbCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOnBrLm9wdGlvbmFsKCl9KSxiaz1nZS5leHRlbmQoe21ldGhvZDpiKCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIikscGFyYW1zOmdrfSksUWY9YmUuZXh0ZW5kKHttb2RlbDpnKCksc3RvcFJlYXNvbjpuZShmZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiXSkub3IoZygpKSkscm9sZTpXbyxjb250ZW50Om1rfSksWGY9YmUuZXh0ZW5kKHttb2RlbDpnKCksc3RvcFJlYXNvbjpuZShmZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiLCJ0b29sVXNlIl0pLm9yKGcoKSkpLHJvbGU6V28sY29udGVudDpCKFskcyxSKCRzKV0pfSksdms9dih7dHlwZTpiKCJib29sZWFuIiksdGl0bGU6ZygpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksZGVmYXVsdDpRKCkub3B0aW9uYWwoKX0pLHlrPXYoe3R5cGU6Yigic3RyaW5nIiksdGl0bGU6ZygpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksbWluTGVuZ3RoOnEoKS5vcHRpb25hbCgpLG1heExlbmd0aDpxKCkub3B0aW9uYWwoKSxmb3JtYXQ6ZmUoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OmcoKS5vcHRpb25hbCgpfSksJGs9dih7dHlwZTpmZShbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6ZygpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksbWluaW11bTpxKCkub3B0aW9uYWwoKSxtYXhpbXVtOnEoKS5vcHRpb25hbCgpLGRlZmF1bHQ6cSgpLm9wdGlvbmFsKCl9KSxraz12KHt0eXBlOmIoInN0cmluZyIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLGVudW06UihnKCkpLGRlZmF1bHQ6ZygpLm9wdGlvbmFsKCl9KSx3az12KHt0eXBlOmIoInN0cmluZyIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLG9uZU9mOlIodih7Y29uc3Q6ZygpLHRpdGxlOmcoKX0pKSxkZWZhdWx0OmcoKS5vcHRpb25hbCgpfSksX2s9dih7dHlwZTpiKCJzdHJpbmciKSx0aXRsZTpnKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpnKCkub3B0aW9uYWwoKSxlbnVtOlIoZygpKSxlbnVtTmFtZXM6UihnKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpnKCkub3B0aW9uYWwoKX0pLFNrPUIoW2trLHdrXSksVGs9dih7dHlwZTpiKCJhcnJheSIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnEoKS5vcHRpb25hbCgpLG1heEl0ZW1zOnEoKS5vcHRpb25hbCgpLGl0ZW1zOnYoe3R5cGU6Yigic3RyaW5nIiksZW51bTpSKGcoKSl9KSxkZWZhdWx0OlIoZygpKS5vcHRpb25hbCgpfSksems9dih7dHlwZTpiKCJhcnJheSIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnEoKS5vcHRpb25hbCgpLG1heEl0ZW1zOnEoKS5vcHRpb25hbCgpLGl0ZW1zOnYoe2FueU9mOlIodih7Y29uc3Q6ZygpLHRpdGxlOmcoKX0pKX0pLGRlZmF1bHQ6UihnKCkpLm9wdGlvbmFsKCl9KSx4az1CKFtUayx6a10pLElrPUIoW19rLFNrLHhrXSksQWs9QihbSWssdmsseWssJGtdKSxDaz1Mby5leHRlbmQoe21vZGU6YigiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpnKCkscmVxdWVzdGVkU2NoZW1hOnYoe3R5cGU6Yigib2JqZWN0IikscHJvcGVydGllczpIKGcoKSxBaykscmVxdWlyZWQ6UihnKCkpLm9wdGlvbmFsKCl9KX0pLFBrPUxvLmV4dGVuZCh7bW9kZTpiKCJ1cmwiKSxtZXNzYWdlOmcoKSxlbGljaXRhdGlvbklkOmcoKSx1cmw6ZygpLnVybCgpfSksRWs9QihbQ2ssUGtdKSxSaz1nZS5leHRlbmQoe21ldGhvZDpiKCJlbGljaXRhdGlvbi9jcmVhdGUiKSxwYXJhbXM6RWt9KSxPaz1MZS5leHRlbmQoe2VsaWNpdGF0aW9uSWQ6ZygpfSksTms9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZSIpLHBhcmFtczpPa30pLFprPWJlLmV4dGVuZCh7YWN0aW9uOmZlKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OnFvKGU9PmU9PT1udWxsP3ZvaWQgMDplLEgoZygpLEIoW2coKSxxKCksUSgpLFIoZygpKV0pKS5vcHRpb25hbCgpKX0pLGprPXYoe3R5cGU6YigicmVmL3Jlc291cmNlIiksdXJpOmcoKX0pLE1rPXYoe3R5cGU6YigicmVmL3Byb21wdCIpLG5hbWU6ZygpfSkscWs9T2UuZXh0ZW5kKHtyZWY6QihbTWssamtdKSxhcmd1bWVudDp2KHtuYW1lOmcoKSx2YWx1ZTpnKCl9KSxjb250ZXh0OnYoe2FyZ3VtZW50czpIKGcoKSxnKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksTGs9Z2UuZXh0ZW5kKHttZXRob2Q6YigiY29tcGxldGlvbi9jb21wbGV0ZSIpLHBhcmFtczpxa30pLERrPWJlLmV4dGVuZCh7Y29tcGxldGlvbjptZSh7dmFsdWVzOlIoZygpKS5tYXgoMTAwKSx0b3RhbDpuZShxKCkuaW50KCkpLGhhc01vcmU6bmUoUSgpKX0pfSksQms9dih7dXJpOmcoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpnKCkub3B0aW9uYWwoKSxfbWV0YTpIKGcoKSxZKCkpLm9wdGlvbmFsKCl9KSxGaz1nZS5leHRlbmQoe21ldGhvZDpiKCJyb290cy9saXN0IikscGFyYW1zOk9lLm9wdGlvbmFsKCl9KSxVaz1iZS5leHRlbmQoe3Jvb3RzOlIoQmspfSksSGs9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9yb290cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pO0IoW0tyLHckLExrLGFrLEckLFYkLFIkLE8kLGokLEwkLEIkLEdmLEtmLHFsLERsLEJsLFVsXSk7QihbWmwsamwsVCQsSGsseXNdKTtCKFtObCxRZixYZixaayxVayxMbCxGbCxNbF0pO0IoW0tyLGJrLFJrLEZrLHFsLERsLEJsLFVsXSk7QihbWmwsamwsbGssVSQsTSQscmssZWsseXMsTmtdKTtCKFtObCxTJCxEayxYJCxKJCxIZixOJCxXZixHcixvayxMbCxGbCxNbF0pO2NsYXNzIEsgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LG4sbyl7c3VwZXIoYE1DUCBlcnJvciAke3R9OiAke259YCksdGhpcy5jb2RlPXQsdGhpcy5kYXRhPW8sdGhpcy5uYW1lPSJNY3BFcnJvciJ9c3RhdGljIGZyb21FcnJvcih0LG4sbyl7aWYodD09PWVlLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQmJm8pe2NvbnN0IHM9bztpZihzLmVsaWNpdGF0aW9ucylyZXR1cm4gbmV3IFdrKHMuZWxpY2l0YXRpb25zLG4pfXJldHVybiBuZXcgSyh0LG4sbyl9fWNsYXNzIFdrIGV4dGVuZHMgS3tjb25zdHJ1Y3Rvcih0LG49YFVSTCBlbGljaXRhdGlvbiR7dC5sZW5ndGg+MT8icyI6IiJ9IHJlcXVpcmVkYCl7c3VwZXIoZWUuVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxuLHtlbGljaXRhdGlvbnM6dH0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiB5dChlKXtyZXR1cm4gZT09PSJjb21wbGV0ZWQifHxlPT09ImZhaWxlZCJ8fGU9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiB0ZChlKXtjb25zdCBuPWp5KGUpPy5tZXRob2Q7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz1NeShuKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIG5kKGUsdCl7Y29uc3Qgbj1fZihlLHQpO2lmKCFuLnN1Y2Nlc3MpdGhyb3cgbi5lcnJvcjtyZXR1cm4gbi5kYXRhfWNvbnN0IFZrPTZlNDtjbGFzcyBKa3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9vcHRpb25zPXQsdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihabCxuPT57dGhpcy5fb25jYW5jZWwobil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoamwsbj0+e3RoaXMuX29ucHJvZ3Jlc3Mobil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEtyLG49Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT10Py50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT10Py50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIocWwsYXN5bmMobixvKT0+e2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2sobi5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighcyl0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm57Li4uc319KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKERsLGFzeW5jKG4sbyk9Pntjb25zdCBzPWFzeW5jKCk9Pntjb25zdCByPW4ucGFyYW1zLnRhc2tJZDtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgYTtmb3IoO2E9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlKHIsby5zZXNzaW9uSWQpOyl7aWYoYS50eXBlPT09InJlc3BvbnNlInx8YS50eXBlPT09ImVycm9yIil7Y29uc3QgdT1hLm1lc3NhZ2UsZD11LmlkLHA9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoZCk7aWYocClpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShkKSxhLnR5cGU9PT0icmVzcG9uc2UiKXAodSk7ZWxzZXtjb25zdCBoPXUsZj1uZXcgSyhoLmVycm9yLmNvZGUsaC5lcnJvci5tZXNzYWdlLGguZXJyb3IuZGF0YSk7cChmKX1lbHNle2NvbnN0IGg9YS50eXBlPT09InJlc3BvbnNlIj8iUmVzcG9uc2UiOiJFcnJvciI7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYCR7aH0gaGFuZGxlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7ZH1gKSl9Y29udGludWV9YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5zZW5kKGEubWVzc2FnZSx7cmVsYXRlZFJlcXVlc3RJZDpvLnJlcXVlc3RJZH0pfX1jb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIsby5zZXNzaW9uSWQpO2lmKCFpKXRocm93IG5ldyBLKGVlLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke3J9YCk7aWYoIXl0KGkuc3RhdHVzKSlyZXR1cm4gYXdhaXQgdGhpcy5fd2FpdEZvclRhc2tVcGRhdGUocixvLnNpZ25hbCksYXdhaXQgcygpO2lmKHl0KGkuc3RhdHVzKSl7Y29uc3QgYT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChyLG8uc2Vzc2lvbklkKTtyZXR1cm4gdGhpcy5fY2xlYXJUYXNrUXVldWUociksey4uLmEsX21ldGE6ey4uLmEuX21ldGEsWyR0XTp7dGFza0lkOnJ9fX19cmV0dXJuIGF3YWl0IHMoKX07cmV0dXJuIGF3YWl0IHMoKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQmwsYXN5bmMobixvKT0+e3RyeXtjb25zdHt0YXNrczpzLG5leHRDdXJzb3I6cn09YXdhaXQgdGhpcy5fdGFza1N0b3JlLmxpc3RUYXNrcyhuLnBhcmFtcz8uY3Vyc29yLG8uc2Vzc2lvbklkKTtyZXR1cm57dGFza3M6cyxuZXh0Q3Vyc29yOnIsX21ldGE6e319fWNhdGNoKHMpe3Rocm93IG5ldyBLKGVlLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke3MgaW5zdGFuY2VvZiBFcnJvcj9zLm1lc3NhZ2U6U3RyaW5nKHMpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoVWwsYXN5bmMobixvKT0+e3RyeXtjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXMpdGhyb3cgbmV3IEsoZWUuSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7bi5wYXJhbXMudGFza0lkfWApO2lmKHl0KHMuc3RhdHVzKSl0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgY2FuY2VsIHRhc2sgaW4gdGVybWluYWwgc3RhdHVzOiAke3Muc3RhdHVzfWApO2F3YWl0IHRoaXMuX3Rhc2tTdG9yZS51cGRhdGVUYXNrU3RhdHVzKG4ucGFyYW1zLnRhc2tJZCwiY2FuY2VsbGVkIiwiQ2xpZW50IGNhbmNlbGxlZCB0YXNrIGV4ZWN1dGlvbi4iLG8uc2Vzc2lvbklkKSx0aGlzLl9jbGVhclRhc2tRdWV1ZShuLnBhcmFtcy50YXNrSWQpO2NvbnN0IHI9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2sobi5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighcil0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7bi5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5yfX1jYXRjaChzKXt0aHJvdyBzIGluc3RhbmNlb2YgSz9zOm5ldyBLKGVlLkludmFsaWRSZXF1ZXN0LGBGYWlsZWQgdG8gY2FuY2VsIHRhc2s6ICR7cyBpbnN0YW5jZW9mIEVycm9yP3MubWVzc2FnZTpTdHJpbmcocyl9YCl9fSkpfWFzeW5jIF9vbmNhbmNlbCh0KXtpZighdC5wYXJhbXMucmVxdWVzdElkKXJldHVybjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQucGFyYW1zLnJlcXVlc3RJZCk/LmFib3J0KHQucGFyYW1zLnJlYXNvbil9X3NldHVwVGltZW91dCh0LG4sbyxzLHI9ITEpe3RoaXMuX3RpbWVvdXRJbmZvLnNldCh0LHt0aW1lb3V0SWQ6c2V0VGltZW91dChzLG4pLHN0YXJ0VGltZTpEYXRlLm5vdygpLHRpbWVvdXQ6bixtYXhUb3RhbFRpbWVvdXQ6byxyZXNldFRpbWVvdXRPblByb2dyZXNzOnIsb25UaW1lb3V0OnN9KX1fcmVzZXRUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO2lmKCFuKXJldHVybiExO2NvbnN0IG89RGF0ZS5ub3coKS1uLnN0YXJ0VGltZTtpZihuLm1heFRvdGFsVGltZW91dCYmbz49bi5tYXhUb3RhbFRpbWVvdXQpdGhyb3cgdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpLEsuZnJvbUVycm9yKGVlLlJlcXVlc3RUaW1lb3V0LCJNYXhpbXVtIHRvdGFsIHRpbWVvdXQgZXhjZWVkZWQiLHttYXhUb3RhbFRpbWVvdXQ6bi5tYXhUb3RhbFRpbWVvdXQsdG90YWxFbGFwc2VkOm99KTtyZXR1cm4gY2xlYXJUaW1lb3V0KG4udGltZW91dElkKSxuLnRpbWVvdXRJZD1zZXRUaW1lb3V0KG4ub25UaW1lb3V0LG4udGltZW91dCksITB9X2NsZWFudXBUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO24mJihjbGVhclRpbWVvdXQobi50aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZSh0KSl9YXN5bmMgY29ubmVjdCh0KXtpZih0aGlzLl90cmFuc3BvcnQpdGhyb3cgbmV3IEVycm9yKCJBbHJlYWR5IGNvbm5lY3RlZCB0byBhIHRyYW5zcG9ydC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIHRvIGEgbmV3IHRyYW5zcG9ydCwgb3IgdXNlIGEgc2VwYXJhdGUgUHJvdG9jb2wgaW5zdGFuY2UgcGVyIGNvbm5lY3Rpb24uIik7dGhpcy5fdHJhbnNwb3J0PXQ7Y29uc3Qgbj10aGlzLnRyYW5zcG9ydD8ub25jbG9zZTt0aGlzLl90cmFuc3BvcnQub25jbG9zZT0oKT0+e24/LigpLHRoaXMuX29uY2xvc2UoKX07Y29uc3Qgbz10aGlzLnRyYW5zcG9ydD8ub25lcnJvcjt0aGlzLl90cmFuc3BvcnQub25lcnJvcj1yPT57bz8uKHIpLHRoaXMuX29uZXJyb3Iocil9O2NvbnN0IHM9dGhpcy5fdHJhbnNwb3J0Py5vbm1lc3NhZ2U7dGhpcy5fdHJhbnNwb3J0Lm9ubWVzc2FnZT0ocixpKT0+e3M/LihyLGkpLG9zKHIpfHxwJChyKT90aGlzLl9vbnJlc3BvbnNlKHIpOmVkKHIpP3RoaXMuX29ucmVxdWVzdChyLGkpOmQkKHIpP3RoaXMuX29ubm90aWZpY2F0aW9uKHIpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZTogJHtKU09OLnN0cmluZ2lmeShyKX1gKSl9LGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zdGFydCgpfV9vbmNsb3NlKCl7Y29uc3QgdD10aGlzLl9yZXNwb25zZUhhbmRsZXJzO3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmNsZWFyKCksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmNsZWFyKCksdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl90aW1lb3V0SW5mby52YWx1ZXMoKSljbGVhclRpbWVvdXQoby50aW1lb3V0SWQpO3RoaXMuX3RpbWVvdXRJbmZvLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnZhbHVlcygpKW8uYWJvcnQoKTt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuY2xlYXIoKTtjb25zdCBuPUsuZnJvbUVycm9yKGVlLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIHQudmFsdWVzKCkpbyhuKX1fb25lcnJvcih0KXt0aGlzLm9uZXJyb3I/Lih0KX1fb25ub3RpZmljYXRpb24odCl7Y29uc3Qgbj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQodC5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtuIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5uKHQpKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QodCxuKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQodC5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIscz10aGlzLl90cmFuc3BvcnQscj10LnBhcmFtcz8uX21ldGE/LlskdF0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBwPXtqc29ucnBjOiIyLjAiLGlkOnQuaWQsZXJyb3I6e2NvZGU6ZWUuTWV0aG9kTm90Rm91bmQsbWVzc2FnZToiTWV0aG9kIG5vdCBmb3VuZCJ9fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP3RoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpwLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpLmNhdGNoKGg9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZW5xdWV1ZSBlcnJvciByZXNwb25zZTogJHtofWApKSk6cz8uc2VuZChwKS5jYXRjaChoPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgYW4gZXJyb3IgcmVzcG9uc2U6ICR7aH1gKSkpO3JldHVybn1jb25zdCBpPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldCh0LmlkLGkpO2NvbnN0IGE9dSQodC5wYXJhbXMpP3QucGFyYW1zLnRhc2s6dm9pZCAwLHU9dGhpcy5fdGFza1N0b3JlP3RoaXMucmVxdWVzdFRhc2tTdG9yZSh0LHM/LnNlc3Npb25JZCk6dm9pZCAwLGQ9e3NpZ25hbDppLnNpZ25hbCxzZXNzaW9uSWQ6cz8uc2Vzc2lvbklkLF9tZXRhOnQucGFyYW1zPy5fbWV0YSxzZW5kTm90aWZpY2F0aW9uOmFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJihoLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHAsaCl9LHNlbmRSZXF1ZXN0OmFzeW5jKHAsaCxmKT0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEsoZWUuQ29ubmVjdGlvbkNsb3NlZCwiUmVxdWVzdCB3YXMgY2FuY2VsbGVkIik7Y29uc3QgJD17Li4uZixyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJiEkLnJlbGF0ZWRUYXNrJiYoJC5yZWxhdGVkVGFzaz17dGFza0lkOnJ9KTtjb25zdCBrPSQucmVsYXRlZFRhc2s/LnRhc2tJZD8/cjtyZXR1cm4gayYmdSYmYXdhaXQgdS51cGRhdGVUYXNrU3RhdHVzKGssImlucHV0X3JlcXVpcmVkIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHAsaCwkKX0sYXV0aEluZm86bj8uYXV0aEluZm8scmVxdWVzdElkOnQuaWQscmVxdWVzdEluZm86bj8ucmVxdWVzdEluZm8sdGFza0lkOnIsdGFza1N0b3JlOnUsdGFza1JlcXVlc3RlZFR0bDphPy50dGwsY2xvc2VTU0VTdHJlYW06bj8uY2xvc2VTU0VTdHJlYW0sY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtOm4/LmNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbX07UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EmJnRoaXMuYXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KHQubWV0aG9kKX0pLnRoZW4oKCk9Pm8odCxkKSkudGhlbihhc3luYyBwPT57aWYoaS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgaD17cmVzdWx0OnAsanNvbnJwYzoiMi4wIixpZDp0LmlkfTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJyZXNwb25zZSIsbWVzc2FnZTpoLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpOmF3YWl0IHM/LnNlbmQoaCl9LGFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtqc29ucnBjOiIyLjAiLGlkOnQuaWQsZXJyb3I6e2NvZGU6TnVtYmVyLmlzU2FmZUludGVnZXIocC5jb2RlKT9wLmNvZGU6ZWUuSW50ZXJuYWxFcnJvcixtZXNzYWdlOnAubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5wLmRhdGEhPT12b2lkIDAmJntkYXRhOnAuZGF0YX19fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpoLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpOmF3YWl0IHM/LnNlbmQoaCl9KS5jYXRjaChwPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7cH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQuaWQpPT09aSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZSh0LmlkKX0pfV9vbnByb2dyZXNzKHQpe2NvbnN0e3Byb2dyZXNzVG9rZW46biwuLi5vfT10LnBhcmFtcyxzPU51bWJlcihuKSxyPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KHMpO2lmKCFyKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkodCl9YCkpO3JldHVybn1jb25zdCBpPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KHMpLGE9dGhpcy5fdGltZW91dEluZm8uZ2V0KHMpO2lmKGEmJmkmJmEucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KHMpfWNhdGNoKHUpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHMpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHMpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHMpLGkodSk7cmV0dXJufXIobyl9X29ucmVzcG9uc2UodCl7Y29uc3Qgbj1OdW1iZXIodC5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChuKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShuKSxvcyh0KSlvKHQpO2Vsc2V7Y29uc3QgaT1uZXcgSyh0LmVycm9yLmNvZGUsdC5lcnJvci5tZXNzYWdlLHQuZXJyb3IuZGF0YSk7byhpKX1yZXR1cm59Y29uc3Qgcz10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChuKTtpZihzPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KHQpfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUobiksdGhpcy5fY2xlYW51cFRpbWVvdXQobik7bGV0IHI9ITE7aWYob3ModCkmJnQucmVzdWx0JiZ0eXBlb2YgdC5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBpPXQucmVzdWx0O2lmKGkudGFzayYmdHlwZW9mIGkudGFzaz09Im9iamVjdCIpe2NvbnN0IGE9aS50YXNrO3R5cGVvZiBhLnRhc2tJZD09InN0cmluZyImJihyPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQoYS50YXNrSWQsbikpfX1pZihyfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShuKSxvcyh0KSlzKHQpO2Vsc2V7Y29uc3QgaT1LLmZyb21FcnJvcih0LmVycm9yLmNvZGUsdC5lcnJvci5tZXNzYWdlLHQuZXJyb3IuZGF0YSk7cyhpKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbSh0LG4sbyl7Y29uc3R7dGFzazpzfT1vPz97fTtpZighcyl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdCh0LG4sbyl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgSz9pOm5ldyBLKGVlLkludGVybmFsRXJyb3IsU3RyaW5nKGkpKX19cmV0dXJufWxldCByO3RyeXtjb25zdCBpPWF3YWl0IHRoaXMucmVxdWVzdCh0LE1sLG8pO2lmKGkudGFzaylyPWkudGFzay50YXNrSWQseWllbGR7dHlwZToidGFza0NyZWF0ZWQiLHRhc2s6aS50YXNrfTtlbHNlIHRocm93IG5ldyBLKGVlLkludGVybmFsRXJyb3IsIlRhc2sgY3JlYXRpb24gZGlkIG5vdCByZXR1cm4gYSB0YXNrIik7Zm9yKDs7KXtjb25zdCBhPWF3YWl0IHRoaXMuZ2V0VGFzayh7dGFza0lkOnJ9LG8pO2lmKHlpZWxke3R5cGU6InRhc2tTdGF0dXMiLHRhc2s6YX0seXQoYS5zdGF0dXMpKXthLnN0YXR1cz09PSJjb21wbGV0ZWQiP3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOnJ9LG4sbyl9OmEuc3RhdHVzPT09ImZhaWxlZCI/eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBLKGVlLkludGVybmFsRXJyb3IsYFRhc2sgJHtyfSBmYWlsZWRgKX06YS5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgSyhlZS5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gd2FzIGNhbmNlbGxlZGApfSk7cmV0dXJufWlmKGEuc3RhdHVzPT09ImlucHV0X3JlcXVpcmVkIil7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX07cmV0dXJufWNvbnN0IHU9YS5wb2xsSW50ZXJ2YWw/P3RoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7YXdhaXQgbmV3IFByb21pc2UoZD0+c2V0VGltZW91dChkLHUpKSxvPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgSz9pOm5ldyBLKGVlLkludGVybmFsRXJyb3IsU3RyaW5nKGkpKX19fXJlcXVlc3QodCxuLG8pe2NvbnN0e3JlbGF0ZWRSZXF1ZXN0SWQ6cyxyZXN1bXB0aW9uVG9rZW46cixvbnJlc3VtcHRpb250b2tlbjppLHRhc2s6YSxyZWxhdGVkVGFzazp1fT1vPz97fTtyZXR1cm4gbmV3IFByb21pc2UoKGQscCk9Pntjb25zdCBoPVQ9PntwKFQpfTtpZighdGhpcy5fdHJhbnNwb3J0KXtoKG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpKTtyZXR1cm59aWYodGhpcy5fb3B0aW9ucz8uZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcz09PSEwKXRyeXt0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodC5tZXRob2QpLGEmJnRoaXMuYXNzZXJ0VGFza0NhcGFiaWxpdHkodC5tZXRob2QpfWNhdGNoKFQpe2goVCk7cmV0dXJufW8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtjb25zdCBmPXRoaXMuX3JlcXVlc3RNZXNzYWdlSWQrKywkPXsuLi50LGpzb25ycGM6IjIuMCIsaWQ6Zn07bz8ub25wcm9ncmVzcyYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuc2V0KGYsby5vbnByb2dyZXNzKSwkLnBhcmFtcz17Li4udC5wYXJhbXMsX21ldGE6ey4uLnQucGFyYW1zPy5fbWV0YXx8e30scHJvZ3Jlc3NUb2tlbjpmfX0pLGEmJigkLnBhcmFtcz17Li4uJC5wYXJhbXMsdGFzazphfSksdSYmKCQucGFyYW1zPXsuLi4kLnBhcmFtcyxfbWV0YTp7Li4uJC5wYXJhbXM/Ll9tZXRhfHx7fSxbJHRdOnV9fSk7Y29uc3Qgaz1UPT57dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoZiksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoZiksdGhpcy5fY2xlYW51cFRpbWVvdXQoZiksdGhpcy5fdHJhbnNwb3J0Py5zZW5kKHtqc29ucnBjOiIyLjAiLG1ldGhvZDoibm90aWZpY2F0aW9ucy9jYW5jZWxsZWQiLHBhcmFtczp7cmVxdWVzdElkOmYscmVhc29uOlN0cmluZyhUKX19LHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aX0pLmNhdGNoKHNlPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke3NlfWApKSk7Y29uc3QgWj1UIGluc3RhbmNlb2YgSz9UOm5ldyBLKGVlLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhUKSk7cChaKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQoZixUPT57aWYoIW8/LnNpZ25hbD8uYWJvcnRlZCl7aWYoVCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwKFQpO3RyeXtjb25zdCBaPV9mKG4sVC5yZXN1bHQpO1ouc3VjY2Vzcz9kKFouZGF0YSk6cChaLmVycm9yKX1jYXRjaChaKXtwKFopfX19KSxvPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2sobz8uc2lnbmFsPy5yZWFzb24pfSk7Y29uc3Qgej1vPy50aW1lb3V0Pz9WayxBPSgpPT5rKEsuZnJvbUVycm9yKGVlLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6en0pKTt0aGlzLl9zZXR1cFRpbWVvdXQoZix6LG8/Lm1heFRvdGFsVGltZW91dCxBLG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCB4PXU/LnRhc2tJZDtpZih4KXtjb25zdCBUPVo9Pntjb25zdCBzZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChmKTtzZT9zZShaKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzcG9uc2UgaGFuZGxlciBtaXNzaW5nIGZvciBzaWRlLWNoYW5uZWxlZCByZXF1ZXN0ICR7Zn1gKSl9O3RoaXMuX3JlcXVlc3RSZXNvbHZlcnMuc2V0KGYsVCksdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHgse3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKFo9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChmKSxwKFopfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aX0pLmNhdGNoKFQ9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChmKSxwKFQpfSl9KX1hc3luYyBnZXRUYXNrKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczp0fSxMbCxuKX1hc3luYyBnZXRUYXNrUmVzdWx0KHQsbixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOnR9LG4sbyl9YXN5bmMgbGlzdFRhc2tzKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6dH0sRmwsbil9YXN5bmMgY2FuY2VsVGFzayh0LG4pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6dH0sUCQsbil9YXN5bmMgbm90aWZpY2F0aW9uKHQsbil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodC5tZXRob2QpO2NvbnN0IG89bj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBhPXsuLi50LGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxbJHRdOm4ucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTphLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXModC5tZXRob2QpJiYhdC5wYXJhbXMmJiFuPy5yZWxhdGVkUmVxdWVzdElkJiYhbj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyh0Lm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZCh0Lm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZSh0Lm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IGE9ey4uLnQsanNvbnJwYzoiMi4wIn07bj8ucmVsYXRlZFRhc2smJihhPXsuLi5hLHBhcmFtczp7Li4uYS5wYXJhbXMsX21ldGE6ey4uLmEucGFyYW1zPy5fbWV0YXx8e30sWyR0XTpuLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoYSxuKS5jYXRjaCh1PT50aGlzLl9vbmVycm9yKHUpKX0pO3JldHVybn1sZXQgaT17Li4udCxqc29ucnBjOiIyLjAifTtuPy5yZWxhdGVkVGFzayYmKGk9ey4uLmkscGFyYW1zOnsuLi5pLnBhcmFtcyxfbWV0YTp7Li4uaS5wYXJhbXM/Ll9tZXRhfHx7fSxbJHRdOm4ucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGksbil9c2V0UmVxdWVzdEhhbmRsZXIodCxuKXtjb25zdCBvPXRkKHQpO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywocyxyKT0+e2NvbnN0IGk9bmQodCxzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG4oaSxyKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcih0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKHQpfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKHQpe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHt0fSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKXtjb25zdCBvPXRkKHQpO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLHM9Pntjb25zdCByPW5kKHQscyk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKHIpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIodCl7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKHQpfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcih0KXtjb25zdCBuPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQodCk7biE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUodCkpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UodCxuLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3Qgcz10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZSh0LG4sbyxzKX1hc3luYyBfY2xlYXJUYXNrUXVldWUodCxuKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbCh0LG4pO2Zvcihjb25zdCBzIG9mIG8paWYocy50eXBlPT09InJlcXVlc3QiJiZlZChzLm1lc3NhZ2UpKXtjb25zdCByPXMubWVzc2FnZS5pZCxpPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2k/KGkobmV3IEsoZWUuSW50ZXJuYWxFcnJvciwiVGFzayBjYW5jZWxsZWQgb3IgY29tcGxldGVkIikpLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHIpKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzb2x2ZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke3J9IGR1cmluZyB0YXNrICR7dH0gY2xlYW51cGApKX19fWFzeW5jIF93YWl0Rm9yVGFza1VwZGF0ZSh0LG4pe2xldCBvPXRoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7dHJ5e2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlPy5nZXRUYXNrKHQpO3M/LnBvbGxJbnRlcnZhbCYmKG89cy5wb2xsSW50ZXJ2YWwpfWNhdGNoe31yZXR1cm4gbmV3IFByb21pc2UoKHMscik9PntpZihuLmFib3J0ZWQpe3IobmV3IEsoZWUuSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpO3JldHVybn1jb25zdCBpPXNldFRpbWVvdXQocyxvKTtuLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NsZWFyVGltZW91dChpKSxyKG5ldyBLKGVlLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUodCxuKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIHM9PntpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKHMsdC5pZCx7bWV0aG9kOnQubWV0aG9kLHBhcmFtczp0LnBhcmFtc30sbil9LGdldFRhc2s6YXN5bmMgcz0+e2NvbnN0IHI9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIXIpdGhyb3cgbmV3IEsoZWUuSW52YWxpZFBhcmFtcywiRmFpbGVkIHRvIHJldHJpZXZlIHRhc2s6IFRhc2sgbm90IGZvdW5kIik7cmV0dXJuIHJ9LHN0b3JlVGFza1Jlc3VsdDphc3luYyhzLHIsaSk9Pnthd2FpdCBvLnN0b3JlVGFza1Jlc3VsdChzLHIsaSxuKTtjb25zdCBhPWF3YWl0IG8uZ2V0VGFzayhzLG4pO2lmKGEpe2NvbnN0IHU9eXMucGFyc2Uoe21ldGhvZDoibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiLHBhcmFtczphfSk7YXdhaXQgdGhpcy5ub3RpZmljYXRpb24odSkseXQoYS5zdGF0dXMpJiZ0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihzKX19LGdldFRhc2tSZXN1bHQ6cz0+by5nZXRUYXNrUmVzdWx0KHMsbiksdXBkYXRlVGFza1N0YXR1czphc3luYyhzLHIsaSk9Pntjb25zdCBhPWF3YWl0IG8uZ2V0VGFzayhzLG4pO2lmKCFhKXRocm93IG5ldyBLKGVlLkludmFsaWRQYXJhbXMsYFRhc2sgIiR7c30iIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKHl0KGEuc3RhdHVzKSl0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7c30iIGZyb20gdGVybWluYWwgc3RhdHVzICIke2Euc3RhdHVzfSIgdG8gIiR7cn0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMocyxyLGksbik7Y29uc3QgdT1hd2FpdCBvLmdldFRhc2socyxuKTtpZih1KXtjb25zdCBkPXlzLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6dX0pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKGQpLHl0KHUuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIocyl9fSxsaXN0VGFza3M6cz0+by5saXN0VGFza3MocyxuKX19fWZ1bmN0aW9uIG9kKGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBLayhlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IHM9byxyPXRbc107aWYocj09PXZvaWQgMCljb250aW51ZTtjb25zdCBpPW5bc107b2QoaSkmJm9kKHIpP25bc109ey4uLmksLi4ucn06bltzXT1yfXJldHVybiBufShlPT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eShlLHtnZXQ6KHQsbik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0KVtuXX0pOmUpKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJytlKyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIEdrIGV4dGVuZHMgSmt7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2godCxuKXt9X2Vuc3VyZUV2ZW50U2xvdCh0KXtsZXQgbj10aGlzLl9ldmVudFNsb3RzLmdldCh0KTtpZighbil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbdF07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKHQpfWApO249e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQodCxuKTtsZXQgcz1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQocyk7bGV0IHI9bjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8saT0+e2xldCBhPWkucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKHQsYSksci5vbkhhbmRsZXI/LihhKTtmb3IobGV0IHUgb2ZbLi4uci5saXN0ZW5lcnNdKXUoYSl9KX1yZXR1cm4gbn1zZXRFdmVudEhhbmRsZXIodCxuKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3QodCk7by5vbkhhbmRsZXImJm4mJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKHQpfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcodCl9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPW59Z2V0RXZlbnRIYW5kbGVyKHQpe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldCh0KT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIodCxuKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QodCkubGlzdGVuZXJzLnB1c2gobil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpO2lmKCFvKXJldHVybjtsZXQgcz1vLmxpc3RlbmVycy5pbmRleE9mKG4pO3MhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKHMsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KHQsbik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIodCxuKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0odCxuKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCh0LG4sbyl7biYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7dH0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPSh0LG4pPT57bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKHQsbil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsbil7bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtufSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIFlrPSIyMDI2LTAxLTI2IixRaz0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIFhre2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3Rvcih0PXdpbmRvdy5wYXJlbnQsbil7dGhpcy5ldmVudFRhcmdldD10LHRoaXMuZXZlbnRTb3VyY2U9bix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYobiYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgcz1oJC5zYWZlUGFyc2Uoby5kYXRhKTtzLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixzLmRhdGEpLHRoaXMub25tZXNzYWdlPy4ocy5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK3MuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQodCxuKXt0Lm1ldGhvZCE9PVFrJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLHQpLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UodCwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgZXc9QihbYigibGlnaHQiKSxiKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIikscW49QihbYigiaW5saW5lIiksYigiZnVsbHNjcmVlbiIpLGIoInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLHR3PUIoW2IoIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLGIoIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLGIoIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxiKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxiKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLGIoIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLGIoIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksYigiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLGIoIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLGIoIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksYigiLS1jb2xvci10ZXh0LWdob3N0IiksYigiLS1jb2xvci10ZXh0LWluZm8iKSxiKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksYigiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxiKCItLWNvbG9yLXRleHQtd2FybmluZyIpLGIoIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLGIoIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxiKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxiKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLGIoIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxiKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLGIoIi0tY29sb3ItYm9yZGVyLWluZm8iKSxiKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxiKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksYigiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLGIoIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksYigiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxiKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksYigiLS1jb2xvci1yaW5nLWludmVyc2UiKSxiKCItLWNvbG9yLXJpbmctaW5mbyIpLGIoIi0tY29sb3ItcmluZy1kYW5nZXIiKSxiKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLGIoIi0tY29sb3ItcmluZy13YXJuaW5nIiksYigiLS1mb250LXNhbnMiKSxiKCItLWZvbnQtbW9ubyIpLGIoIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksYigiLS1mb250LXdlaWdodC1tZWRpdW0iKSxiKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksYigiLS1mb250LXdlaWdodC1ib2xkIiksYigiLS1mb250LXRleHQteHMtc2l6ZSIpLGIoIi0tZm9udC10ZXh0LXNtLXNpemUiKSxiKCItLWZvbnQtdGV4dC1tZC1zaXplIiksYigiLS1mb250LXRleHQtbGctc2l6ZSIpLGIoIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxiKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksYigiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLGIoIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxiKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksYigiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxiKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLGIoIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksYigiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxiKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLGIoIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksYigiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxiKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLGIoIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksYigiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxiKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLGIoIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLGIoIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLGIoIi0tYm9yZGVyLXJhZGl1cy14cyIpLGIoIi0tYm9yZGVyLXJhZGl1cy1zbSIpLGIoIi0tYm9yZGVyLXJhZGl1cy1tZCIpLGIoIi0tYm9yZGVyLXJhZGl1cy1sZyIpLGIoIi0tYm9yZGVyLXJhZGl1cy14bCIpLGIoIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksYigiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLGIoIi0tc2hhZG93LWhhaXJsaW5lIiksYigiLS1zaGFkb3ctc20iKSxiKCItLXNoYWRvdy1tZCIpLGIoIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLG53PUgodHcuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksQihbZygpLEt0KCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7dih7bWV0aG9kOmIoInVpL29wZW4tbGluayIpLHBhcmFtczp2KHt1cmw6ZygpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIG93PXYoe2lzRXJyb3I6USgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLHN3PXYoe2lzRXJyb3I6USgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxydz12KHtpc0Vycm9yOlEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTt2KHttZXRob2Q6YigidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOnYoe30pfSk7dmFyIFlsPXYoe2Nvbm5lY3REb21haW5zOlIoZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczpSKGcoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6UihnKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6UihnKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLFFsPXYoe2NhbWVyYTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7dih7bWV0aG9kOmIoInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOnYoe3dpZHRoOnEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDpxKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBpdz12KHttZXRob2Q6YigidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGcoKSxZKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksYXc9dih7bWV0aG9kOmIoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGcoKSxZKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLGN3PXYoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOnYoe3JlYXNvbjpnKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxsdz12KHtmb250czpnKCkub3B0aW9uYWwoKX0pLHV3PXYoe3ZhcmlhYmxlczpudy5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOmx3Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxkdz12KHttZXRob2Q6YigidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6dih7fSl9KTtIKGcoKSxZKCkpO3ZhciBzZD12KHt0ZXh0OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7dih7bWV0aG9kOmIoInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczp2KHt9KS5vcHRpb25hbCgpfSk7dmFyIHB3PXYoe2V4cGVyaW1lbnRhbDpIKGcoKSxIKGcoKSxSbygpKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpLG9wZW5MaW5rczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczp2KHtsaXN0Q2hhbmdlZDpRKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOnYoe2xpc3RDaGFuZ2VkOlEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OnYoe3Blcm1pc3Npb25zOlFsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpZbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpzZC5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6c2Qub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzp2KHt0b29sczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxodz12KHtleHBlcmltZW50YWw6SChnKCksSChnKCksUm8oKSkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMga2V5ZWQgYnkgaWRlbnRpZmllci4iKSx0b29sczp2KHtsaXN0Q2hhbmdlZDpRKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOlIocW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO3Yoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOnYoe30pLm9wdGlvbmFsKCl9KTt2KHtjc3A6WWwub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOlFsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46ZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6USgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTt2KHttZXRob2Q6YigidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6dih7bW9kZTpxbi5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBtdz12KHttb2RlOnFuLmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxmdz1CKFtiKCJtb2RlbCIpLGIoImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO3Yoe3Jlc291cmNlVXJpOmcoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6Uihmdykub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDpTdCgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6U3QoKS5vcHRpb25hbCgpfSk7dih7bWltZVR5cGVzOlIoZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7dih7bWV0aG9kOmIoInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6dih7Y29udGVudHM6UihCKFtWZixKZl0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7dih7bWV0aG9kOmIoInVpL21lc3NhZ2UiKSxwYXJhbXM6dih7cm9sZTpiKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OlIoVm8pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO3Yoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6dih7aHRtbDpnKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpZbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOlFsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIGd3PXYoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOkdyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksZWc9dih7dG9vbEluZm86dih7aWQ6RG8ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOkdsLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOmV3Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6dXcub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOnFuLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6Uihxbikub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOkIoW3Yoe2hlaWdodDpxKCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksdih7bWF4SGVpZ2h0OkIoW3EoKSxLdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKEIoW3Yoe3dpZHRoOnEoKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLHYoe21heFdpZHRoOkIoW3EoKSxLdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpnKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06QihbYigid2ViIiksYigiZGVza3RvcCIpLGIoIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczp2KHt0b3VjaDpRKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOlEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czp2KHt0b3A6cSgpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDpxKCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOnEoKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDpxKCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLGJ3PXYoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOmVnLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO3Yoe21ldGhvZDpiKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczp2KHtjb250ZW50OlIoVm8pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGcoKSxZKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO3Yoe21ldGhvZDpiKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOnYoe2FwcEluZm86SnIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOmh3LmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpnKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciB2dz12KHtwcm90b2NvbFZlcnNpb246ZygpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOkpyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6cHcuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6ZWcuZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCkseXc9e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIHJkKGUsdCl7bGV0IG49ZVsifnN0YW5kYXJkIl07aWYobi5qc29uU2NoZW1hKXJldHVybiBuLmpzb25TY2hlbWFbdF0oeXcpO2lmKG4udmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IFZnKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5hJCksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKGUse2lvOnR9KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7bi52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBpZChlLHQsbj0iIil7bGV0IG89YXdhaXQgZVsifnN0YW5kYXJkIl0udmFsaWRhdGUodCk7aWYoby5pc3N1ZXMpe2xldCBzPW8uaXNzdWVzLm1hcChyPT57bGV0IGk9ci5wYXRoPy5tYXAoYT0+dHlwZW9mIGE9PSJvYmplY3QiP2Eua2V5OmEpLmpvaW4oIi4iKTtyZXR1cm4gaT9gJHtpfTogJHtyLm1lc3NhZ2V9YDpyLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKG4rcyl9cmV0dXJuIG8udmFsdWV9ZnVuY3Rpb24gJHcoZSl7bGV0IHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3Quc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIixlKSx0LnN0eWxlLmNvbG9yU2NoZW1lPWV9ZnVuY3Rpb24ga3coZSx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7Zm9yKGxldFtuLG9db2YgT2JqZWN0LmVudHJpZXMoZSkpbyE9PXZvaWQgMCYmdC5zdHlsZS5zZXRQcm9wZXJ0eShuLG8pfWZ1bmN0aW9uIHd3KGUpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX21jcC1ob3N0LWZvbnRzIikpcmV0dXJuO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pZD0iX19tY3AtaG9zdC1mb250cyIsdC50ZXh0Q29udGVudD1lLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Y2xhc3MgWGwgZXh0ZW5kcyBHa3tfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKHQpe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IG49YFtleHQtYXBwc10gQXBwLiR7dH0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKG4pO2NvbnNvbGUud2FybihgJHtufS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6aXcsdG9vbGlucHV0cGFydGlhbDphdyx0b29scmVzdWx0Omd3LHRvb2xjYW5jZWxsZWQ6Y3csaG9zdGNvbnRleHRjaGFuZ2VkOmJ3fTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKHQpe2lmKCFYbC5PTkVfU0hPVF9FVkVOVFMuaGFzKHQpfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKHQpfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZCh0KSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IG49YFtleHQtYXBwc10gIiR7U3RyaW5nKHQpfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihuKTtjb25zb2xlLndhcm4obil9c2V0RXZlbnRIYW5kbGVyKHQsbil7biYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5zZXRFdmVudEhhbmRsZXIodCxuKX1hZGRFdmVudExpc3RlbmVyKHQsbil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5hZGRFdmVudExpc3RlbmVyKHQsbil9b25FdmVudERpc3BhdGNoKHQsbil7dD09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLm59KX1jb25zdHJ1Y3Rvcih0LG49e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89dCx0aGlzLl9jYXBhYmlsaXRpZXM9bix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8aGUoe2ppdGxlc3M6ITB9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEtyLHM9Pihjb25zb2xlLmxvZygiUmVjZWl2ZWQgcGluZzoiLHMucGFyYW1zKSx7fSkpLHRoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLHZvaWQgMCl9cmVnaXN0ZXJDYXBhYmlsaXRpZXModCl7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBjYXBhYmlsaXRpZXMgYWZ0ZXIgdHJhbnNwb3J0IGlzIGVzdGFibGlzaGVkIik7dGhpcy5fY2FwYWJpbGl0aWVzPUtrKHRoaXMuX2NhcGFiaWxpdGllcyx0KX1yZWdpc3RlclRvb2wodCxuLG8pe2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1t0XSl0aHJvdyBFcnJvcihgVG9vbCAke3R9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBzPXRoaXMscj0oKT0+e3MuX2luaXRpYWxpemVkU2VudCYmcy5fY2FwYWJpbGl0aWVzLnRvb2xzPy5saXN0Q2hhbmdlZCYmcy5zZW5kVG9vbExpc3RDaGFuZ2VkKCl9LGk9bi5pbnB1dFNjaGVtYSE9PXZvaWQgMCxhPXt0aXRsZTpuLnRpdGxlLGRlc2NyaXB0aW9uOm4uZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6bi5pbnB1dFNjaGVtYSxvdXRwdXRTY2hlbWE6bi5vdXRwdXRTY2hlbWEsYW5ub3RhdGlvbnM6bi5hbm5vdGF0aW9ucyxfbWV0YTpuLl9tZXRhLGVuYWJsZWQ6ITAsZW5hYmxlKCl7dGhpcy5lbmFibGVkPSEwLHIoKX0sZGlzYWJsZSgpe3RoaXMuZW5hYmxlZD0hMSxyKCl9LHVwZGF0ZSh1KXtPYmplY3QuYXNzaWduKHRoaXMsdSkscigpfSxyZW1vdmUoKXtzLl9yZWdpc3RlcmVkVG9vbHNbdF09PT1hJiYoZGVsZXRlIHMuX3JlZ2lzdGVyZWRUb29sc1t0XSxyKCkpfSxoYW5kbGVyOmFzeW5jKHUsZCk9PntpZighYS5lbmFibGVkKXRocm93IEVycm9yKGBUb29sICR7dH0gaXMgZGlzYWJsZWRgKTtsZXQgcDtpZihpKXtsZXQgaD1hLmlucHV0U2NoZW1hLGY9aD9hd2FpdCBpZChoLHU/P3t9LGBJbnZhbGlkIGlucHV0IGZvciB0b29sICR7dH06IGApOnU/P3t9O3A9YXdhaXQgbyhmLGQpfWVsc2UgcD1hd2FpdCBvKGQpO3JldHVybiBhLm91dHB1dFNjaGVtYSYmIXAuaXNFcnJvciYmKHAuc3RydWN0dXJlZENvbnRlbnQ9YXdhaXQgaWQoYS5vdXRwdXRTY2hlbWEscC5zdHJ1Y3R1cmVkQ29udGVudCxgSW52YWxpZCBvdXRwdXQgZm9yIHRvb2wgJHt0fTogYCkpLHB9fTtyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZFRvb2xzW3RdPWEsIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyYmIXRoaXMudHJhbnNwb3J0JiZ0aGlzLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHt0b29sczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5lbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpLHIoKSxhfV90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMTtlbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpe3RoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkfHwodGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5vbmNhbGx0b29sPWFzeW5jKHQsbik9PntsZXQgbz10aGlzLl9yZWdpc3RlcmVkVG9vbHNbdC5uYW1lXTtpZighbyl0aHJvdyBFcnJvcihgVG9vbCAke3QubmFtZX0gbm90IGZvdW5kYCk7cmV0dXJuIG8uaGFuZGxlcih0LmFyZ3VtZW50cyxuKX0sdGhpcy5vbmxpc3R0b29scz1hc3luYyh0LG4pPT4oe3Rvb2xzOmF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHRoaXMuX3JlZ2lzdGVyZWRUb29scykuZmlsdGVyKChbbyxzXSk9PnMuZW5hYmxlZCkubWFwKGFzeW5jKFtvLHNdKT0+e2xldCByPXtuYW1lOm8sdGl0bGU6cy50aXRsZSxkZXNjcmlwdGlvbjpzLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnMuaW5wdXRTY2hlbWE/YXdhaXQgcmQocy5pbnB1dFNjaGVtYSwiaW5wdXQiKTp7dHlwZToib2JqZWN0Iixwcm9wZXJ0aWVzOnt9fX07cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYoci5vdXRwdXRTY2hlbWE9YXdhaXQgcmQocy5vdXRwdXRTY2hlbWEsIm91dHB1dCIpKSxzLmFubm90YXRpb25zJiYoci5hbm5vdGF0aW9ucz1zLmFubm90YXRpb25zKSxzLl9tZXRhJiYoci5fbWV0YT1zLl9tZXRhKSxyfSkpfSkpfWFzeW5jIHNlbmRUb29sTGlzdENoYW5nZWQodD17fSl7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRUb29sTGlzdENoYW5nZWQiKSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIscGFyYW1zOnR9KX1nZXRIb3N0Q2FwYWJpbGl0aWVzKCl7cmV0dXJuIHRoaXMuX2hvc3RDYXBhYmlsaXRpZXN9Z2V0SG9zdFZlcnNpb24oKXtyZXR1cm4gdGhpcy5faG9zdEluZm99Z2V0SG9zdENvbnRleHQoKXtyZXR1cm4gdGhpcy5faG9zdENvbnRleHR9Z2V0IG9udG9vbGlucHV0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiKX1zZXQgb250b29saW5wdXQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIsdCl9Z2V0IG9udG9vbGlucHV0cGFydGlhbCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIpfXNldCBvbnRvb2xpbnB1dHBhcnRpYWwodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiLHQpfWdldCBvbnRvb2xyZXN1bHQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiKX1zZXQgb250b29scmVzdWx0KHQpe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iix0KX1nZXQgb250b29sY2FuY2VsbGVkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIil9c2V0IG9udG9vbGNhbmNlbGxlZCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIsdCl9Z2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiKX1zZXQgb25ob3N0Y29udGV4dGNoYW5nZWQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdCl9X29udGVhcmRvd247Z2V0IG9udGVhcmRvd24oKXtyZXR1cm4gdGhpcy5fb250ZWFyZG93bn1zZXQgb250ZWFyZG93bih0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9udGVhcmRvd24iLHRoaXMuX29udGVhcmRvd24sdCksdGhpcy5fb250ZWFyZG93bj10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKGR3LChuLG8pPT57aWYoIXRoaXMuX29udGVhcmRvd24pdGhyb3cgRXJyb3IoIk5vIG9udGVhcmRvd24gaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb250ZWFyZG93bihuLnBhcmFtcyxvKX0pfV9vbmNhbGx0b29sO2dldCBvbmNhbGx0b29sKCl7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2x9c2V0IG9uY2FsbHRvb2wodCl7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmNhbGx0b29sIix0aGlzLl9vbmNhbGx0b29sLHQpLHRoaXMuX29uY2FsbHRvb2w9dCx0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihHZiwobixvKT0+e2lmKCF0aGlzLl9vbmNhbGx0b29sKXRocm93IEVycm9yKCJObyBvbmNhbGx0b29sIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2wobi5wYXJhbXMsbyl9KX1fb25saXN0dG9vbHM7Z2V0IG9ubGlzdHRvb2xzKCl7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzfXNldCBvbmxpc3R0b29scyh0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9ubGlzdHRvb2xzIix0aGlzLl9vbmxpc3R0b29scyx0KSx0aGlzLl9vbmxpc3R0b29scz10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKEtmLChuLG8pPT57aWYoIXRoaXMuX29ubGlzdHRvb2xzKXRocm93IEVycm9yKCJObyBvbmxpc3R0b29scyBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmxpc3R0b29scyhuLnBhcmFtcyxvKX0pfWFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodCl7c3dpdGNoKHQpe2Nhc2Uic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSI6aWYoIXRoaXMuX2hvc3RDYXBhYmlsaXRpZXM/LnNhbXBsaW5nKXRocm93IEVycm9yKGBIb3N0IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgKHJlcXVpcmVkIGZvciAke3R9KWApO2JyZWFrfX1hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkodCl7c3dpdGNoKHQpe2Nhc2UidG9vbHMvY2FsbCI6Y2FzZSJ0b29scy9saXN0IjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB0b29sIGNhcGFiaWxpdHkgKHJlcXVpcmVkIGZvciAke3R9KWApO3JldHVybjtjYXNlInBpbmciOmNhc2UidWkvcmVzb3VyY2UtdGVhcmRvd24iOnJldHVybjtkZWZhdWx0OnRocm93IEVycm9yKGBObyBoYW5kbGVyIGZvciBtZXRob2QgJHt0fSByZWdpc3RlcmVkYCl9fWFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodCl7fWFzc2VydFRhc2tDYXBhYmlsaXR5KHQpe3Rocm93IEVycm9yKCJUYXNrcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSh0KXt0aHJvdyBFcnJvcigiVGFzayBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzeW5jIGNhbGxTZXJ2ZXJUb29sKHQsbil7aWYodGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNhbGxTZXJ2ZXJUb29sIiksdHlwZW9mIHQ9PSJzdHJpbmciKXRocm93IEVycm9yKGBjYWxsU2VydmVyVG9vbCgpIGV4cGVjdHMgYW4gb2JqZWN0IGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYnV0IHJlY2VpdmVkIGEgc3RyaW5nICgiJHt0fSIpLiBEaWQgeW91IG1lYW46IGNhbGxTZXJ2ZXJUb29sKHsgbmFtZTogIiR7dH0iLCBhcmd1bWVudHM6IHsgLi4uIH0gfSk/YCk7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0b29scy9jYWxsIixwYXJhbXM6dH0sR3Ise29ucHJvZ3Jlc3M6KCk9Pnt9LHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6ITAsLi4ubn0pfWFzeW5jIHJlYWRTZXJ2ZXJSZXNvdXJjZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVhZFNlcnZlclJlc291cmNlIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9yZWFkIixwYXJhbXM6dH0sV2Ysbil9YXN5bmMgbGlzdFNlcnZlclJlc291cmNlcyh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgibGlzdFNlcnZlclJlc291cmNlcyIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvbGlzdCIscGFyYW1zOnR9LEhmLG4pfWFzeW5jIGNyZWF0ZVNhbXBsaW5nTWVzc2FnZSh0LG4pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjcmVhdGVTYW1wbGluZ01lc3NhZ2UiKTtsZXQgbz10LnRvb2xzP1hmOlFmO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIscGFyYW1zOnR9LG8sbil9c2VuZE1lc3NhZ2UodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRNZXNzYWdlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL21lc3NhZ2UiLHBhcmFtczp0fSxydyxuKX1zZW5kTG9nKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL21lc3NhZ2UiLHBhcmFtczp0fSl9dXBkYXRlTW9kZWxDb250ZXh0KHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJ1cGRhdGVNb2RlbENvbnRleHQiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvdXBkYXRlLW1vZGVsLWNvbnRleHQiLHBhcmFtczp0fSxObCxuKX1vcGVuTGluayh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgib3BlbkxpbmsiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvb3Blbi1saW5rIixwYXJhbXM6dH0sb3csbil9c2VuZE9wZW5MaW5rPXRoaXMub3Blbkxpbms7ZG93bmxvYWRGaWxlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJkb3dubG9hZEZpbGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvZG93bmxvYWQtZmlsZSIscGFyYW1zOnR9LHN3LG4pfXJlcXVlc3RUZWFyZG93bih0PXt9KXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIixwYXJhbXM6dH0pfXJlcXVlc3REaXNwbGF5TW9kZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVxdWVzdERpc3BsYXlNb2RlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3JlcXVlc3QtZGlzcGxheS1tb2RlIixwYXJhbXM6dH0sbXcsbil9c2VuZFNpemVDaGFuZ2VkKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3NpemUtY2hhbmdlZCIscGFyYW1zOnR9KX1zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpe2xldCB0PSExLG49MCxvPTAscz0oKT0+e3R8fCh0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3Q9ITE7bGV0IGk9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9aS5zdHlsZS5oZWlnaHQ7aS5zdHlsZS5oZWlnaHQ9Im1heC1jb250ZW50IjtsZXQgdT1NYXRoLmNlaWwoaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO2kuc3R5bGUuaGVpZ2h0PWE7bGV0IGQ9TWF0aC5jZWlsKHdpbmRvdy5pbm5lcldpZHRoKTsoZCE9PW58fHUhPT1vKSYmKG49ZCxvPXUsdGhpcy5zZW5kU2l6ZUNoYW5nZWQoe3dpZHRoOmQsaGVpZ2h0OnV9KSl9KSl9O3MoKTtsZXQgcj1uZXcgUmVzaXplT2JzZXJ2ZXIocyk7cmV0dXJuIHIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLHIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KSwoKT0+ci5kaXNjb25uZWN0KCl9YXN5bmMgY29ubmVjdCh0PW5ldyBYayh3aW5kb3cucGFyZW50LHdpbmRvdy5wYXJlbnQpLG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJBcHAgaXMgYWxyZWFkeSBjb25uZWN0ZWQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyBhZ2Fpbi4iKTt0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITEsYXdhaXQgc3VwZXIuY29ubmVjdCh0KTt0cnl7bGV0IG89YXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2luaXRpYWxpemUiLHBhcmFtczp7YXBwQ2FwYWJpbGl0aWVzOnRoaXMuX2NhcGFiaWxpdGllcyxhcHBJbmZvOnRoaXMuX2FwcEluZm8scHJvdG9jb2xWZXJzaW9uOllrfX0sdncsbik7aWYobz09PXZvaWQgMCl0aHJvdyBFcnJvcihgU2VydmVyIHNlbnQgaW52YWxpZCBpbml0aWFsaXplIHJlc3VsdDogJHtvfWApO3RoaXMuX2hvc3RDYXBhYmlsaXRpZXM9by5ob3N0Q2FwYWJpbGl0aWVzLHRoaXMuX2hvc3RJbmZvPW8uaG9zdEluZm8sdGhpcy5faG9zdENvbnRleHQ9by5ob3N0Q29udGV4dCxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIn0pLHRoaXMuX2luaXRpYWxpemVkU2VudD0hMCx0aGlzLm9wdGlvbnM/LmF1dG9SZXNpemUmJnRoaXMuc2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKX1jYXRjaChvKXt0aHJvdyB0aGlzLmNsb3NlKCksb319fWxldCBhZD0iIjtjb25zdCB0Zz0oZSx0LG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KT0+e2lmKCFlKXJldHVybjsoZS50aGVtZT09PSJsaWdodCJ8fGUudGhlbWU9PT0iZGFyayIpJiZ0LmFwcGx5RG9jdW1lbnRUaGVtZShlLnRoZW1lKTtjb25zdCBvPWUuc3R5bGVzPy52YXJpYWJsZXM7byYmdHlwZW9mIG89PSJvYmplY3QiJiZ0LmFwcGx5SG9zdFN0eWxlVmFyaWFibGVzKG8pO2NvbnN0IHM9ZS5zdHlsZXM/LmNzcz8uZm9udHM7dHlwZW9mIHM9PSJzdHJpbmciJiZzJiZzIT09YWQmJih0LmFwcGx5SG9zdEZvbnRzKHMpLGFkPXMpO2NvbnN0IHI9ZS5zYWZlQXJlYUluc2V0cztpZihyKWZvcihjb25zdCBpIG9mWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSl7Y29uc3QgYT1OdW1iZXIocltpXT8/MCk7bi5zdHlsZS5zZXRQcm9wZXJ0eShgLS1pbnNldC0ke2l9YCxgJHtOdW1iZXIuaXNGaW5pdGUoYSkmJmE+MD9hOjB9cHhgKX19LG5nPWU9PmUucmVwbGFjZSgvWyY8PiInXS9nLHQ9Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW3RdKSxfdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTAgMy41IDUuNSA4IDEwIDEyLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JyxTdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNiAzLjUgMTAuNSA4IDYgMTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLFR3PSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0zLjUgNiA4IDEwLjUgMTIuNSA2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPicsenc9Jzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTkuNSAyLjVoNHY0TTYuNSAxMy41aC00di00TTEzLjUgMi41IDkgN00yLjUgMTMuNSA3IDkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+Jyx4dz1lPT57Y29uc3QgdD1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS50b3RhbCkpLG49TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuZnJvbSkpLG89TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuY291bnQpKSxzPW4+MCxyPW4rbzx0O2lmKCFzJiYhcilyZXR1cm4iIjtjb25zdCBpPWUubm91bj9gICR7bmcoZS5ub3VuKX1gOiIiLGE9bz9gJHtuKzF94oCTJHtuK299IG9mICR7dH1gOmAwIG9mICR7dH1gO3JldHVybmA8bmF2IGNsYXNzPSJjay1wYWdlciIgYXJpYS1sYWJlbD0iUGFnZXMiPjxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWJ0biIgdHlwZT0iYnV0dG9uIiAke2UucHJldn0ke3M/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IlByZXZpb3VzJHtpfSI+JHtfd308c3Bhbj5QcmV2aW91czwvc3Bhbj48L2J1dHRvbj48c3BhbiBjbGFzcz0iY2stcGFnZXItbiI+JHthfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjay1wYWdlci1idG4iIHR5cGU9ImJ1dHRvbiIgJHtlLm5leHR9JHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSJOZXh0JHtpfSI+PHNwYW4+TmV4dDwvc3Bhbj4ke1N3fTwvYnV0dG9uPjwvbmF2PiR7ZS5hbGw/YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke2UuYWxsfT48c3Bhbj5WaWV3IGFsbCAke3R9PC9zcGFuPiR7end9PC9idXR0b24+YDoiIn1gfSxJdz0oZSx0KT0+YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke3R9PjxzcGFuIGRhdGEtbGFiZWw+JHtuZyhlKX08L3NwYW4+JHtUd308L2J1dHRvbj5gLEFlPW5ldyBYbCh7bmFtZToiaG90ZWwtc3RvcmVmcm9udCIsdmVyc2lvbjoiMS4wLjAifSx7b3BlbkxpbmtzOnt9LGF2YWlsYWJsZURpc3BsYXlNb2RlczpbImlubGluZSIsImZ1bGxzY3JlZW4iXX0pLG9nPXthcHBseURvY3VtZW50VGhlbWU6JHcsYXBwbHlIb3N0U3R5bGVWYXJpYWJsZXM6a3csYXBwbHlIb3N0Rm9udHM6d3d9LEc9ZT0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSksbD1lPT5TdHJpbmcoZT8/IiIpLnJlcGxhY2UoL1smPD4iJ10vZyx0PT50PT09IiYiPyImYW1wOyI6dD09PSI8Ij8iJmx0OyI6dD09PSI+Ij8iJmd0OyI6dD09PSciJz8iJnF1b3Q7IjoiJiMzOTsiKTtsZXQgRmU9IiIsa3M9IiIsVGk9IiI7Y29uc3QgQXc9KCk9PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LnRoZW1lPT09ImRhcmsiLGV1PSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJhbmQiKTtpZighZXx8IWtzKXJldHVybjtjb25zdCB0PUF3KCkmJiEhVGksbj10P1RpOmtzO2UuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PW4mJihlLnNyYz1uKSxlLmNsYXNzTGlzdC50b2dnbGUoImRhcmstYXJ0Iix0KX07bGV0IGNpPSExLHppPSIiLHhpPSIiLHR1PXt9LG51PSExLHNnPSIiLFM9e2NoZWNrSW46IiIsY2hlY2tPdXQ6IiIsZ3Vlc3RzOjJ9LFU9MTtjb25zdCBCdD01O2xldCByZT1udWxsLGh0PVtdLHJ0PSIiLHZlPVtdLFA9bnVsbCx3cz0wO2NvbnN0IEN3PW5ldyBTZXQoWyJmb3JnZXRQcmVmZXJlbmNlcyIsImFkZFRvVHJpcCIsImNsZWFyVHJpcCIsInJlcXVlc3RCb29raW5nIiwiY2FuY2VsQm9va2luZyIsImNoYW5nZUJvb2tpbmciLCJzaWduSW4iLCJzaWduT3V0Il0pLHh0PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/YGhvdGVsOiR7ZS5ob3RlbD8uaWQ/PyIifWA6dD09PSJleHRyYXMiP2UuZm9yQm9va2luZz9gZXh0cmFzOmJvb2tpbmc6JHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX1gOmBleHRyYXM6JHtlLmhvdGVsPy5pZD8/IiJ9YDp0PT09InBvbGljeSJ8fHQ9PT0icG9saWNpZXMifHx0PT09InBvbGljeS1taXNzaW5nIj9gcG9saWN5OiR7ZS5ob3RlbD8uaWQ/PyIifToke2UudG9waWM/PyIifWA6dD09PSJjYW5jZWxsYXRpb24tcHJldmlldyI/YGNhbmNlbDoke2UuYm9va2luZz8uY29uZmlybWF0aW9uQ29kZT8/IiJ9YDp0PT09ImNoYW5nZS1wcmV2aWV3Ij9gY2hhbmdlOiR7ZS5jb25maXJtYXRpb25Db2RlPz9lLmJvb2tpbmc/LmNvbmZpcm1hdGlvbkNvZGU/PyIifWA6dD09PSJkZXN0aW5hdGlvbnMiP2BkZXN0aW5hdGlvbnM6JHtlLnNjb3BlPy5uYW1lPz8iIn1gOnQ9PT0iaG90ZWxzInx8dD09PSJuby1ob3RlbHMiP2Bob3RlbHM6JHtlLmFzaz8uY2l0eT8/IiJ9OiR7ZS5hc2s/LnF1ZXJ5Pz9lLnF1ZXJ5Pz8iIn1gOnR9LHhuPWU9PnshUHx8RXcuaGFzKFN0cmluZyhQLnZpZXcpKXx8eHQoZSkhPT14dChQKSYmKHZlPVsuLi52ZSx7cGF5bG9hZDpQLGxhYmVsOlJ3KFApLHZlcnNpb246d3N9XS5zbGljZSgtNikpfSxQdz1lPT57Y29uc3QgdD1TdHJpbmcoZT8udmlldz8/IiIpLG49ZT8uc3RheT8uY2hlY2tJbj97Y2hlY2tJbjplLnN0YXkuY2hlY2tJbixjaGVja091dDplLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOmUuc3RheS5ndWVzdHM/PzJ9Ont9O2lmKHQ9PT0idHJpcCIpcmV0dXJue2tleToidmlld1RyaXAiLGFyZ3M6e319O2lmKHQ9PT0iYm9va2luZ3MiKXJldHVybntrZXk6Imxpc3RCb29raW5ncyIsYXJnczp7fX07aWYoKHQ9PT0iaG90ZWxzInx8dD09PSJkZXN0aW5hdGlvbnMifHx0PT09Im5vLWhvdGVscyImJmUuYXNrKSYmZS5hc2spcmV0dXJue2tleToibGlzdEhvdGVscyIsYXJnczp7Li4uZS5hc2t9fTtpZih0PT09ImNvbXBhcmlzb24iJiZBcnJheS5pc0FycmF5KGUuY29sdW1ucykpcmV0dXJue2tleToiY29tcGFyZSIsYXJnczp7Li4ubiwuLi5lLnRpdGxlP3t0aXRsZTplLnRpdGxlfTp7fSwuLi5lLnJlY29tbWVuZGVkP3tyZWNvbW1lbmRlZDplLnJlY29tbWVuZGVkfTp7fSxlbnRyaWVzOmUuY29sdW1ucy5tYXAobz0+KHtob3RlbDpvLmhvdGVsPy5pZCwuLi5vLmJlc3RGb3I/e2Jlc3RGb3I6by5iZXN0Rm9yfTp7fSwuLi5vLnByb3M/Lmxlbmd0aD97cHJvczpvLnByb3N9Ont9LC4uLm8uY29ucz8ubGVuZ3RoP3tjb25zOm8uY29uc306e319KSl9fTtpZigodD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMiKSYmZS5ob3RlbD8uaWQpcmV0dXJue2tleToiZ2V0SG90ZWwiLGFyZ3M6e2hvdGVsOmUuaG90ZWwuaWQsLi4ubiwuLi5lLnJvb21zX3dhbnRlZD97cm9vbXM6ZS5yb29tc193YW50ZWR9Ont9fX07aWYodD09PSJleHRyYXMiJiZlLmZvckJvb2tpbmcpcmV0dXJue2tleToibGlzdEV4dHJhcyIsYXJnczppdChTdHJpbmcoZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGUpKX07aWYodD09PSJleHRyYXMiJiZlLmhvdGVsPy5pZClyZXR1cm57a2V5OiJsaXN0RXh0cmFzIixhcmdzOntob3RlbDplLmhvdGVsLmlkLC4uLm59fTtpZih0PT09Iml0aW5lcmFyeSIpcmV0dXJue2tleToiaXRpbmVyYXJ5IixhcmdzOnt0aXRsZTplLnRpdGxlLC4uLm4sZGF5czooZS5kYXlzPz9bXSkubWFwKG89Pih7bGFiZWw6by5sYWJlbCwuLi5vLm5vdGU/e25vdGU6by5ub3RlfTp7fSxpdGVtczooby5pdGVtcz8/W10pLm1hcChzPT5zLmlkKX0pKX19fSxjZD1lPT57dmU9dmUuZmlsdGVyKHQ9PiFlLmluY2x1ZGVzKFN0cmluZyh0LnBheWxvYWQ/LnZpZXcpKSl9LEV3PW5ldyBTZXQoWyJmaW5kLWJvb2tpbmciLCJib29raW5nIiwiY2FuY2VsbGVkIiwiY2hhbmdlZCIsImVycm9yIiwibmVlZHMtZ3Vlc3QiLCJzaWduZWQtb3V0IiwibWVtYmVyLXNpZ24taW4iLCJtZW1iZXItbm90LWZvdW5kIl0pLFJ3PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7aWYodD09PSJjb21wYXJpc29uIilyZXR1cm4gYyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApO2lmKHQ9PT0iaXRpbmVyYXJ5IilyZXR1cm4gYygidGhlIHBsYW4iLCLooYznqIvorqHliJIiKTtpZih0PT09Im5vLWhvdGVscyIpcmV0dXJuIGMoInRoZSBzZWFyY2giLCLmkJzntKIiKTtpZih0PT09ImRlc3RpbmF0aW9ucyIpcmV0dXJuIGUuc2NvcGU/Lm5hbWU/U3RyaW5nKGUuc2NvcGUubmFtZSk6YygiYWxsIGRlc3RpbmF0aW9ucyIsIuWFqOmDqOebrueahOWcsCIpO2lmKHQ9PT0iaG90ZWxzIil7aWYoZS5hc2s/LmNpdHkpcmV0dXJuIFN0cmluZyhlLmFzay5jaXR5KTtjb25zdCBuPVsuLi5uZXcgU2V0KChlLmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby5jaXR5KSkpXTtyZXR1cm4gbi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGAke2UudG90YWw/PzB9IGhvdGVsc2AsYCR7ZS50b3RhbD8/MH0g5a626YWS5bqXYCl9cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/U3RyaW5nKGUuaG90ZWw/Lm5hbWU/P2MoInRoZSBob3RlbCIsIumFkuW6lyIpKTp0PT09ImNhbmNlbGxhdGlvbi1wcmV2aWV3Ij9jKCJ0aGUgY2FuY2VsbGF0aW9uIiwi5Y+W5raIIik6dD09PSJjaGFuZ2UtcHJldmlldyI/YygidGhlIGNoYW5nZSIsIuS/ruaUuSIpOnQ9PT0ibWVtYmVyIj9jKCJ5b3VyIG1lbWJlcnNoaXAiLCLkvJrlkZgiKTp0PT09ImV4dHJhcyI/ZS5mb3JCb29raW5nP2MoYGFkZC1vbnMgZm9yICR7ZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGV9YCxgJHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCk6YyhgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/InRoZSBob3RlbCIpfSBhZGQtb25zYCxgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/IumFkuW6lyIpfemZhOWKoOacjeWKoWApOnQ9PT0idHJpcCI/YygidGhlIHRyaXAiLCLooYznqIsiKTp0PT09ImJvb2tpbmdzIj9jKCJ5b3VyIGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIik6dD09PSJwb2xpY3kifHx0PT09InBvbGljaWVzIj9jKCJ0aGUgcG9saWNpZXMiLCLmlL/nrZYiKTpjKCJiYWNrIiwi6L+U5ZueIil9LHJnPSgpPT57Y29uc3QgZT1HKCJiYWNrYnRuIiksdD12ZS5hdCgtMSk7ZS5oaWRkZW49IXQsdCYmKGUuaW5uZXJIVE1MPWAke0UuY2hldkx9PHNwYW4+JHtsKHQubGFiZWwpfTwvc3Bhbj5gKSxpZygpfSxPdz17aG90ZWxzOjEsaG90ZWw6Miwibm8tcm9vbXMiOjIsIm5lZWRzLWRhdGVzIjoyLHRyaXA6MywibmVlZHMtZ3Vlc3QiOjMsYm9va2luZzo0fSxOdz1lPT57bGV0IHQ9T3dbU3RyaW5nKGU/LnZpZXc/PyIiKV0/PzA7ZT8udmlldz09PSJ0cmlwIiYmIShlLmxpbmVzPz9bXSkubGVuZ3RoJiYodD0wKSxlPy52aWV3PT09ImhvdGVscyImJiEoZS5ob3RlbHM/P1tdKS5sZW5ndGgmJih0PTApO2NvbnN0IG49ZT8udmlldz09PSJib29raW5nIiYmZT8uYm9va2luZz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiO24mJih0PTMpLGU/Lm9wZW5lZCYmIW4mJih0PTApLEcoImZsb3czIikudGV4dENvbnRlbnQ9bj9jKCJQYXkiLCLku5jmrL4iKTpjKCJCb29rIiwi6aKE6K6iIik7Y29uc3Qgbz1HKCJmbG93Iik7by5oaWRkZW49IXQ7Zm9yKGNvbnN0IHMgb2Ygby5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpKXtjb25zdCByPU51bWJlcihzLmRhdGFzZXQuc3RlcCk7cy5jbGFzc0xpc3QudG9nZ2xlKCJkb25lIixyPHQpLHI9PT10P3Muc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJzdGVwIik6cy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIpfWlnKCl9LGlnPSgpPT57Rygic3ViaGVhZCIpLmhpZGRlbj1HKCJiYWNrYnRuIikuaGlkZGVuJiZHKCJmbG93IikuaGlkZGVufTtsZXQgRnQ9IiIsSWk9IiIsSXQ9MCxMbj0hMSxzcz0iIjtjb25zdCBhZz1lPT57Y29uc3QgdD1lPy5bImN1cmxlc3MvdHJpcCJdO2lmKCF0KXJldHVybjtjb25zdCBuPXR5cGVvZiB0LmZyb209PSJzdHJpbmciP3QuZnJvbToiIjtuJiZzcyYmbiE9PXNzfHwobiYmIXNzJiYoc3M9biksdHlwZW9mIHQudHJpcElkPT0ic3RyaW5nIiYmdC50cmlwSWQmJihJaT10LnRyaXBJZCksSXQ9TnVtYmVyKHQuY291bnQ/PzApLEFycmF5LmlzQXJyYXkodC5saW5lcykmJihodD10LmxpbmVzLExuPSEwKSl9LGNnPWU9PklpP3suLi5lLHRyaXA6SWl9OmUsbGc9bmV3IE1hcCxadz1lPT57Y29uc3QgdD1bZT8uYm9va2luZywuLi5BcnJheS5pc0FycmF5KGU/LmJvb2tpbmdzKT9lLmJvb2tpbmdzOltdXTtmb3IoY29uc3QgbiBvZiB0KW4/LmNvbmZpcm1hdGlvbkNvZGUmJm4/Lmd1ZXN0Py5lbWFpbCYmbGcuc2V0KFN0cmluZyhuLmNvbmZpcm1hdGlvbkNvZGUpLnRvVXBwZXJDYXNlKCksU3RyaW5nKG4uZ3Vlc3QuZW1haWwpKX0saXQ9ZT0+e2NvbnN0IHQ9bGcuZ2V0KGUudG9VcHBlckNhc2UoKSk7cmV0dXJuIHQ/e2Jvb2tpbmc6ZSxlbWFpbDp0fTp7Ym9va2luZzplfX0sdWc9ZT0+dHVbZV0/PyIiLEpvPWU9PiEhdHVbZV0sanc9Sm87bGV0IGRnPSJob2xkIixvdT0hMSxwZz0hMSxrZT1udWxsLGN0PSIiO2NvbnN0IEF0PWU9PmtlJiZlP2tlLnN1cHBsaWVycy5maW5kKHQ9PnQuaWQ9PT1lKTp2b2lkIDAsVWU9ZT0+e2NvbnN0IHQ9QXQoZSk7aWYoIXQpcmV0dXJue25hbWU6RmUsYm9va2luZ01vZGU6ZGcsZGVtbzpudSxzYW5kYm94Om91LHBob25lUmVxdWlyZWQ6cGcsZXh0cmFzOiEwLGNoYW5nZXM6ITB9O2NvbnN0IG49dC5jYXBhYmlsaXRpZXM/P3t9O3JldHVybntuYW1lOlN0cmluZyh0Lm5hbWUpLGJvb2tpbmdNb2RlOm4uYm9va2luZz09PSJwYXktYXQtaG90ZWwiPyJwYXktYXQtaG90ZWwiOiJob2xkIixkZW1vOnQubW9kZSE9PSJsaXZlIixzYW5kYm94OnQubW9kZT09PSJzYW5kYm94IixwaG9uZVJlcXVpcmVkOiEhbi5yZXF1aXJlc1Bob25lLGV4dHJhczpuLmV4dHJhcyE9PSExLGNoYW5nZXM6bi5jaGFuZ2VzIT09ITF9fSxFbj1lPT57Y29uc3QgdD1lPy5icmFuZD9TdHJpbmcoZS5icmFuZCk6IiIsbj1BdChlPy5zdXBwbGllcik7aWYoIW4pcmV0dXJuIHQ7Y29uc3Qgbz1TdHJpbmcobi5uYW1lKTtyZXR1cm4gdCYmdCE9PW8/YCR7b30gwrcgJHt0fWA6b30sbGQ9KCk9PihrZT9rZS5zdXBwbGllcnMubWFwKGU9PmUuY2FwYWJpbGl0aWVzPy5jb2RlUHJlZml4KS5maWx0ZXIoQm9vbGVhbik6eGk/W3hpXTpbXSkubWFwKGU9PmAke2V9LeKApmApLmpvaW4oIiBvciAiKSxzdT1lPT5rZT9bLi4ubmV3IFNldChlLm1hcCh0PT5TdHJpbmcodC5zdXBwbGllcj8/IiIpKS5maWx0ZXIoQm9vbGVhbikpXTpbXTtsZXQgX249ITE7Y29uc3QgdWQ9ZT0+e19uPWUsZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmNhcmQiKT8uY2xhc3NMaXN0LnRvZ2dsZSgiYnVzeSIsZSl9O2xldCBfcz0wLGhnPSIiLG1nPSIiO2NvbnN0IGF0PSgpPT57Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGVhZCIpO2lmKCFlKXJldHVybjtjb25zdCB0PSgpPT5lLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pO3QoKSxzZXRUaW1lb3V0KHQsMTgwKX0saj0oZSx0PXt9LG49e30pPT57Y29uc3Qgbz11ZyhlKTtpZighbylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBubyB0b29sIGZvciAke2V9YCkpO2lmKF9uKXJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7dWQoITApO2NvbnN0IHM9X3M7cmV0dXJuIEFlLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOm8sYXJndW1lbnRzOmNnKHQpfSkuZmluYWxseSgoKT0+dWQoITEpKS50aGVuKHI9PnthZyhyPy5fbWV0YSk7Y29uc3QgaT1yPy5zdHJ1Y3R1cmVkQ29udGVudCxhPWkmJm4uZm9sZD9uLmZvbGQoaSk6aSx1PUN3LmhhcyhlKSYmYSYmYS52aWV3IT09ImVycm9yIjtpZihzPT09X3MmJmEpe2hnPWk/SlNPTi5zdHJpbmdpZnkoaSk6IiIsbWc9SlNPTi5zdHJpbmdpZnkoYSk7Y29uc3QgZD14dChhKSE9PXh0KFApO2QmJihOPW51bGwpLG4ucHVzaCE9PSExJiYhbi5zdGF5JiZ4bihhKSx1JiYod3MrPTEpLGEudmlldz09PSJib29raW5nIiYmKGNkKFsidHJpcCIsIm5lZWRzLWRhdGVzIiwibmVlZHMtZ3Vlc3QiXSksQXJyYXkuaXNBcnJheShhLmZhaWxlZCkmJmEuZmFpbGVkLmxlbmd0aHx8KFRlPW51bGwpKSwoYS52aWV3PT09ImNhbmNlbGxlZCJ8fGEudmlldz09PSJjaGFuZ2VkIikmJmNkKFsiY2FuY2VsbGF0aW9uLXByZXZpZXciLCJjaGFuZ2UtcHJldmlldyJdKSxuLnN0YXkmJmEudmlldz09PSJ0cmlwIiYmUD8oTG58fChodD1hLmxpbmVzPz9bXSksSXQ9TG4/SXQ6aHQubGVuZ3RoLHdlKFApKTood2UoYSksZCYmYXQoKSl9ZWxzZSB1JiYod3MrPTEpO3JldHVybiBNdyhyLG4ubm90ZSkscn0pfSxNdz0oZSx0KT0+e2NvbnN0IG49KGU/LmNvbnRlbnQ/P1tdKS5maW5kKG89Pm8/LnR5cGU9PT0idGV4dCIpPy50ZXh0OyFufHwhQWUuZ2V0SG9zdENhcGFiaWxpdGllcygpPy51cGRhdGVNb2RlbENvbnRleHR8fEFlLnVwZGF0ZU1vZGVsQ29udGV4dCh7Y29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6dD9gJHt0fSAke1N0cmluZyhuKX1gOlN0cmluZyhuKX1dfSkuY2F0Y2goKCk9Pnt9KX07bGV0IFlyPSExO2NvbnN0IHF3PSIoVGhlIGNhcmQgcHJpY2VkIGl0cyBvd24gZGVmYXVsdCBkYXRlcywgdG9uaWdodCwgdG8gc2hvdyB0aGUgcm9vbXM7IHRoZSBndWVzdCBoYXMgbm90IGNob3NlbiB0aGVtLikiLGd0PWU9PntsZXQgdD0wO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9MSl0PSh0KjMxK2UuY2hhckNvZGVBdChuKSklMzYwO3JldHVybmAtLXNob3QtYTpoc2woJHt0fSA0MiUgMzQlKTstLXNob3QtYjpoc2woJHsodCszOCklMzYwfSA0NiUgMjIlKWB9LFp0PWU9Pntjb25zdCB0PVN0cmluZyhlPz8iIiksbj0vXlxzKlvjgJBcW11ccyoo5qih5ouffHNpbXVsYXRlZHx0ZXN0KVxzKlvjgJFcXV1ccyovaS5leGVjKHQpLG89bCgobj90LnNsaWNlKG5bMF0ubGVuZ3RoKTp0KS5yZXBsYWNlKC8tL2csIuKAkSIpKTtyZXR1cm4gbj9gPHNwYW4gY2xhc3M9InNpbSI+JHtsKG5bMV0pfTwvc3Bhbj4ke299YDpvfSxidD1lPT5lLnJlcGxhY2UoL15ccypb44CQXFtdXHMqKOaooeaLn3xzaW11bGF0ZWR8dGVzdClccypb44CRXF1dXHMqL2ksIiIpLnJlcGxhY2UoL1teXHB7TH1ccHtOfSBdL2d1LCIgIikuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5zbGljZSgwLDIpLm1hcCh0PT50WzBdPy50b1VwcGVyQ2FzZSgpPz8iIikuam9pbigiIiksZmc9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9ImN1cnJlbnRDb2xvciIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiAzLjVsMi42IDUuMyA1LjkuOS00LjMgNC4xIDEgNS44TDEyIDE2LjkgNi44IDE5LjZsMS01LjhMMy41IDkuN2w1LjktLjl6Ii8+PC9zdmc+JyxjZT0oZSx0PTEuOCk9PmA8c3ZnIGNsYXNzPSJpY28iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iJHt0fSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHtlfTwvc3ZnPmAsRT17Y2FsZW5kYXI6Y2UoJzxyZWN0IHg9IjMuNSIgeT0iNSIgd2lkdGg9IjE3IiBoZWlnaHQ9IjE1LjUiIHJ4PSIyLjUiLz48cGF0aCBkPSJNMy41IDkuNWgxN004IDN2NE0xNiAzdjQiLz4nKSxzZWFyY2g6Y2UoJzxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjYuNSIvPjxwYXRoIGQ9Im0yMCAyMC00LjItNC4yIi8+JyksY2hlY2s6Y2UoJzxwYXRoIGQ9Im01IDEyLjUgNC41IDQuNUwxOSA3LjUiLz4nLDIpLGRvbmU6Y2UoJzxwYXRoIGQ9Im02IDEyLjUgNCA0IDgtOSIvPicsMi42KSxhbGVydDpjZSgnPHBhdGggZD0iTTEyIDQuMiAzIDE5LjVoMTh6Ii8+PHBhdGggZD0iTTEyIDEwdjQuMk0xMiAxN2guMDEiLz4nKSxlcnJvcjpjZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDcuOHY1TTEyIDE2LjJoLjAxIi8+JyksY2xvY2s6Y2UoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiA3LjVWMTJsMyAyIi8+JyksYmVkOmNlKCc8cGF0aCBkPSJNMyAxOC41VjYuNU0zIDE0aDE4djQuNU0yMSAxNHYtMi41YTMgMyAwIDAgMC0zLTNoLTdWMTQiLz48Y2lyY2xlIGN4PSI3IiBjeT0iMTEiIHI9IjEuOCIvPicpLHVzZXJzOmNlKCc8Y2lyY2xlIGN4PSI5IiBjeT0iOC41IiByPSIzLjIiLz48cGF0aCBkPSJNMy41IDE5YTUuNSA1LjUgMCAwIDEgMTEgME0xNiA1LjZhMyAzIDAgMCAxIDAgNS44TTE3LjUgMTRhNSA1IDAgMCAxIDMgNSIvPicpLHNpemU6Y2UoJzxwYXRoIGQ9Ik00IDlWNGg1TTIwIDE1djVoLTVNNCA0bDYgNk0yMCAyMGwtNi02Ii8+JyksdmlldzpjZSgnPHBhdGggZD0iTTIuNSAxMlM2IDUuNSAxMiA1LjUgMjEuNSAxMiAyMS41IDEyIDE4IDE4LjUgMTIgMTguNSAyLjUgMTIgMi41IDEyeiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIuOCIvPicpLGN1cDpjZSgnPHBhdGggZD0iTTQgOWgxMnY1YTUgNSAwIDAgMS01IDVIOWE1IDUgMCAwIDEtNS01ek0xNiAxMC41aDEuNWEyLjUgMi41IDAgMCAxIDAgNUgxNk04IDMuNVY2TTEyIDMuNVY2Ii8+JyksaW5mbzpjZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDExdjUuMk0xMiA3LjhoLjAxIi8+Jyksd2luZG93OmNlKCc8cmVjdCB4PSI0LjUiIHk9IjQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgcng9IjEuNSIvPjxwYXRoIGQ9Ik0xMiA0djE2TTQuNSAxMmgxNSIvPicpLGxvY2s6Y2UoJzxyZWN0IHg9IjQuNSIgeT0iMTAuNSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjEwIiByeD0iMi4yIi8+PHBhdGggZD0iTTggMTAuNVY3LjVhNCA0IDAgMCAxIDggMHYzIi8+JykscGluOmNlKCc8cGF0aCBkPSJNMTIgMjFzLTYuNS01LjYtNi41LTExYTYuNSA2LjUgMCAwIDEgMTMgMEMxOC41IDE1LjQgMTIgMjEgMTIgMjF6Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMCIgcj0iMi40Ii8+JyksY2hldkw6Y2UoJzxwYXRoIGQ9Im0xNC41IDYtNiA2IDYgNiIvPicsMiksY2hldlI6Y2UoJzxwYXRoIGQ9Im05LjUgNiA2IDYtNiA2Ii8+JywyKSxhcnJvdzpjZSgnPHBhdGggZD0iTTUgMTJoMTRNMTMgNmw2IDYtNiA2Ii8+JywyKSxzbGlkZXJzOmNlKCc8cGF0aCBkPSJNNCA3aDEwTTE4IDdoMk00IDE3aDRNMTIgMTdoOCIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iNyIgcj0iMiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTciIHI9IjIiLz4nKSxzb3J0OmNlKCc8cGF0aCBkPSJNNyA0djE2TTMuNSA3LjUgNyA0bDMuNSAzLjVNMTcgMjBWNE0xMy41IDE2LjUgMTcgMjBsMy41LTMuNSIvPicpLHRhZzpjZSgnPHBhdGggZD0iTTMuNSAxMi41di04YTEgMSAwIDAgMSAxLTFoOGw4IDgtOSA5eiIvPjxjaXJjbGUgY3g9IjgiIGN5PSI4IiByPSIxLjQiLz4nKX07bGV0IG9lPSJlbiI7Y29uc3QgYz0oZSx0KT0+b2U9PT0iemgiP3Q6ZSxnZz1bIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLHBlPWU9PmU+MD9vZT09PSJ6aCI/YCR7ZX3mmZpgOmAke2V9ICR7ZT09PTE/Im5pZ2h0IjoibmlnaHRzIn1gOiIiLEN0PWU9Pm9lPT09InpoIj9gJHtlfeWwj+aXtmA6YCR7ZX0gJHtOdW1iZXIoZSk9PT0xPyJob3VyIjoiaG91cnMifWAsTHc9ZT0+b2U9PT0iemgiP2Ake2V96Ze0YDpgJHtlfSAke2U9PT0xPyJyb29tIjoicm9vbXMifWAsVmU9ZT0+e2NvbnN0IHQ9bmV3IERhdGUoYCR7ZX1UMTI6MDA6MDBaYCk7aWYoTnVtYmVyLmlzTmFOKHQuZ2V0VGltZSgpKSlyZXR1cm57bWQ6ZSxkb3c6IiIsbG9uZzplLGRheTplLG1vbjoiIn07Y29uc3Qgbj10LmdldFVUQ01vbnRoKCkrMSxvPXQuZ2V0VVRDRGF0ZSgpO2lmKG9lPT09InpoIil7Y29uc3Qgcj1nZ1t0LmdldFVUQ0RheSgpXT8/IiI7cmV0dXJue21kOmAke2595pyIJHtvfeaXpWAsZG93OnIsbG9uZzpgJHt0LmdldFVUQ0Z1bGxZZWFyKCl95bm0JHtufeaciCR7b33ml6UgJHtyLnJlcGxhY2UoIuWRqCIsIuaYn+acnyIpfWAsZGF5OlN0cmluZyhvKSxtb246YCR7bn3mnIhgfX1jb25zdCBzPXI9PnQudG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1HQiIsey4uLnIsdGltZVpvbmU6IlVUQyJ9KTtyZXR1cm57bWQ6YCR7b30gJHtzKHttb250aDoic2hvcnQifSl9YCxkb3c6cyh7d2Vla2RheToic2hvcnQifSksbG9uZzpzKHt3ZWVrZGF5OiJsb25nIixkYXk6Im51bWVyaWMiLG1vbnRoOiJsb25nIix5ZWFyOiJudW1lcmljIn0pLGRheTpTdHJpbmcobyksbW9uOnMoe21vbnRoOiJzaG9ydCJ9KX19LER3PWU9PmUmJnR5cGVvZiBlLnZhbHVlPT0ibnVtYmVyIj9gPHNwYW4gY2xhc3M9InJhdGUiIGFyaWEtbGFiZWw9IiR7bChjKGBSYXRlZCAke2UudmFsdWV9IGJ5ICR7ZS5jb3VudH0gZ3Vlc3RzYCxg6K+E5YiGICR7ZS52YWx1ZX3vvIwke2UuY291bnR9IOadoeeCueivhGApKX0iPiR7Zmd9JHtsKGUudmFsdWUpfTxzbWFsbD4oJHtsKE51bWJlcihlLmNvdW50KS50b0xvY2FsZVN0cmluZygiZW4tR0IiKSl9KTwvc21hbGw+PC9zcGFuPmA6IiIsQnc9IkRlbW9uc3RyYXRpb24gZGF0YTogdGhlc2UgcmF0ZXMgYW5kIHJvb20gY291bnRzIHdlcmUgbWFkZSB1cCBmb3IgdGhpcyBkZW1vLiIsZGQ9ZT0+e2NvbnN0IHQ9cj0+cjw9LjAzOTI4P3IvMTIuOTI6KChyKy4wNTUpLzEuMDU1KSoqMi40LFtuLG8sc109WzEsMyw1XS5tYXAocj0+dChOdW1iZXIucGFyc2VJbnQoZS5zbGljZShyLHIrMiksMTYpLzI1NSkpO3JldHVybiAuMjEyNioobj8/MCkrLjcxNTIqKG8/PzApKy4wNzIyKihzPz8wKX0sc3Q9KGUsdCk9Pntjb25zdFtuLG9dPVtkZChlKSxkZCh0KV0uc29ydCgocyxyKT0+ci1zKTtyZXR1cm4oKG4/PzApKy4wNSkvKChvPz8wKSsuMDUpfSxjcz1lPT50eXBlb2YgZT09InN0cmluZyImJi9eI1swLTlhLWZdezZ9JC9pLnRlc3QoZSksTmU9e2xpZ2h0OiIjZmZmZmZmIixkYXJrOiIjMTExNzIzIixpbms6IiMwYzE0MjQiLGlua0Rhcms6IiNlZWYyZjkifSxiZz1lPT57aWYoIWNzKGUpKXJldHVybjtjb25zdCB0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDt0LnN0eWxlLnNldFByb3BlcnR5KCItLWFjY2VudC1yYXciLGUpLHQuZGF0YXNldC5hY2NlbnQ9IiIsc3QoZSxOZS5kYXJrKTwzP3QuZGF0YXNldC5hY2NlbnREaW09IiI6ZGVsZXRlIHQuZGF0YXNldC5hY2NlbnREaW19LGxpPXtzYW5zOmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWYtc2FucyIpLnRyaW0oKXx8InNhbnMtc2VyaWYiLGRpc3BsYXk6Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoIi0tZi1kaXNwbGF5IikudHJpbSgpfHwic2VyaWYifSxwZD1uZXcgU2V0KFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ic3R5bGVzaGVldCJdJyldLm1hcChlPT5lLmdldEF0dHJpYnV0ZSgiaHJlZiIpPz8iIikpLHZnPWU9PntpZighZXx8IUFycmF5LmlzQXJyYXkoZS5jc3MpKXJldHVybjtjb25zdCB0PWk9PnR5cGVvZiBpPT0ic3RyaW5nIiYmL14iW0EtWmEtejAtOSBdKyIoLCAiW0EtWmEtejAtOSBdKyIpKiQvLnRlc3QoaSk/aToiIjtmb3IoY29uc3QgaSBvZiBlLmNzcyl7aWYodHlwZW9mIGkhPSJzdHJpbmcifHxwZC5oYXMoaSl8fCEvXihodHRwczpcL1wvW15ccyInPD5dK3xodHRwOlwvXC8obG9jYWxob3N0fDEyN1wuMFwuMFwuMSkoOlxkKyk/XC9bXlxzIic8Pl0qKSQvLnRlc3QoaSkpY29udGludWU7cGQuYWRkKGkpO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2EucmVsPSJzdHlsZXNoZWV0IixhLmhyZWY9aSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpfWNvbnN0IG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89dChlLmJvZHkpLHM9dChlLmRpc3BsYXkpLHI9dChlLm51bWVyaWMpO28mJm4uc3R5bGUuc2V0UHJvcGVydHkoIi0tZi1zYW5zIixgJHtvfSwgJHtsaS5zYW5zfWApLHMmJm4uc3R5bGUuc2V0UHJvcGVydHkoIi0tZi1kaXNwbGF5IixgJHtzfSwgJHtsaS5kaXNwbGF5fWApLHImJihuLnN0eWxlLnNldFByb3BlcnR5KCItLWYtbnVtIixgJHtyfSwgJHtsaS5zYW5zfWApLG4uc2V0QXR0cmlidXRlKCJkYXRhLWZvbnQtbnVtIiwiIikpfSx5Zz1lPT57Y29uc3QgdD10eXBlb2YgZT09InN0cmluZyI/e2NvbG9yOmV9OmU7aWYoIXR8fCFjcyh0LmNvbG9yKSlyZXR1cm47Y29uc3Qgbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbz0ocyxyKT0+bi5zdHlsZS5zZXRQcm9wZXJ0eShzLHIpO28oIi0tYnJhbmQiLHQuY29sb3IpLG8oIi0tYnJhbmQtaG92ZXIiLGNzKHQuaG92ZXIpP3QuaG92ZXI6YGNvbG9yLW1peChpbiBzcmdiLCAke3QuY29sb3J9IDg4JSwgYmxhY2spYCksbygiLS1icmFuZC1wcmVzcyIsY3ModC5wcmVzcyk/dC5wcmVzczpgY29sb3ItbWl4KGluIHNyZ2IsICR7dC5jb2xvcn0gNzglLCBibGFjaylgKSxvKCItLWJyYW5kLW9uIixzdCh0LmNvbG9yLCIjZmZmZmZmIik+PXN0KHQuY29sb3IsTmUuaW5rKT8iI2ZmZmZmZiI6TmUuaW5rKSxvKCItLWJyYW5kLWluayIsc3QodC5jb2xvcixOZS5saWdodCk+PTQuNT90LmNvbG9yOk5lLmluayksbygiLS1icmFuZC1mb2N1cyIsc3QodC5jb2xvcixOZS5saWdodCk+PTM/dC5jb2xvcjpOZS5pbmspLG8oIi0tYnJhbmQtaW5rLWRhcmsiLHN0KHQuY29sb3IsTmUuZGFyayk+PTQuNT90LmNvbG9yOk5lLmlua0RhcmspLG8oIi0tYnJhbmQtZm9jdXMtZGFyayIsc3QodC5jb2xvcixOZS5kYXJrKT49Mz90LmNvbG9yOk5lLmlua0RhcmspLG4uZGF0YXNldC5icmFuZD0iIixzdCh0LmNvbG9yLE5lLmRhcmspPDM/bi5kYXRhc2V0LmJyYW5kRGFya0RpbT0iIjpkZWxldGUgbi5kYXRhc2V0LmJyYW5kRGFya0RpbX0sRnc9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjdXJsZXNzLXRoZW1lIik7aWYoISghZXx8ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSE9PSJhcHBsaWNhdGlvbi9qc29uIikpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlLnRleHRDb250ZW50Pz8iIik7dD8uYWNjZW50JiZiZyh0LmFjY2VudCksdD8ucHJpbWFyeSYmeWcodC5wcmltYXJ5KSx0Py5mb250cyYmdmcodC5mb250cyl9Y2F0Y2h7fX07RncoKTtjb25zdCBVdz0oKT0+e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPW9lPT09InpoIj8iemgtQ04iOiJlbiIsRygiaG9tZSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiQmFjayB0byB0aGUgaG90ZWxzIiwi5Zue5Yiw6YWS5bqX6aaW6aG1IikpLEcoImhlYWR0cmlwIikuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjKCJWaWV3IHRoZSB0cmlwIiwi5p+l55yL6KGM56iLIikpLEcoImhlYWR0cmlwd29yZCIpLnRleHRDb250ZW50PWMoIlRyaXAiLCLooYznqIsiKSxHKCJmbG93Iikuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjKCJCb29raW5nIHN0ZXBzIiwi6aKE6K6i5q2l6aqkIikpLEcoImZsb3cxIikudGV4dENvbnRlbnQ9YygiSG90ZWwiLCLpgInphZLlupciKSxHKCJmbG93MiIpLnRleHRDb250ZW50PWMoIlJvb20iLCLpgInmiL/lnosiKSxHKCJmbG93MyIpLnRleHRDb250ZW50PWMoIkJvb2siLCLpooTorqIiKX0sSHc9KCk9PntHKCJkZW1vc3RyaXAiKS5oaWRkZW49IW51LEcoImRlbW90ZXh0IikudGV4dENvbnRlbnQ9b3U/YyhgQSB0ZXN0IGNvcHkgb2YgJHtGZXx8InRoZSBob3RlbCJ9J3Mgc3lzdGVtIOKAlCBub3RoaW5nIGhlcmUgaXMgYSByZWFsIGJvb2tpbmcuYCwi6YWS5bqX57O757uf55qE5rWL6K+V5Ymv5pys77yM6L+Z6YeM55qE6aKE6K6i6YO95LiN5piv55yf5a6e6aKE6K6i44CCIik6YygiU2FtcGxlIHJhdGVzIGFuZCByb29tcyDigJQgbm90aGluZyBoZXJlIGNhbiByZWFsbHkgYmUgYm9va2VkLiIsIuekuuS+i+S7t+agvOWSjOaIv+Wei++8jOi/memHjOaXoOazleecn+WunumihOiuouOAgiIpLEcoImRlbW9sYWJlbCIpLnRleHRDb250ZW50PWMoIkRlbW8iLCLmvJTnpLoiKSxHKCJkZW1vc3RyaXAiKS50aXRsZT1zZ3x8Qnd9LF9lPWU9Pntjb25zdCB0PVZlKGUpO3JldHVybiB0LmRvdz9vZT09PSJ6aCI/YCR7dC5tZH0gJHt0LmRvd31gOmAke3QuZG93fSAke3QubWR9YDplfSxFZT0oZSx0KT0+TWF0aC5yb3VuZCgoRGF0ZS5wYXJzZShgJHt0fVQxMjowMDowMFpgKS1EYXRlLnBhcnNlKGAke2V9VDEyOjAwOjAwWmApKS84NjRlNSksS289ZT0+ZT8uY2hlY2tJbiYmZT8uY2hlY2tPdXQ/ZS5jaGVja091dDw9ZS5jaGVja0luP19lKGUuY2hlY2tJbik6YCR7X2UoZS5jaGVja0luKX0g4oCTICR7X2UoZS5jaGVja091dCl9IMK3ICR7cGUoRWUoZS5jaGVja0luLGUuY2hlY2tPdXQpKX1gOiIiLFNzPShlLHQsbik9Pntjb25zdCBvPWh0LmZpbmQocz0+cy5raW5kPT09InJvb20iJiZzLmhvdGVsSWQ9PT1lJiZzLnJvb21SZWY9PT10JiZzLnN0YXk/LmNoZWNrSW49PT1uPy5jaGVja0luJiZzLnN0YXk/LmNoZWNrT3V0PT09bj8uY2hlY2tPdXQpO3JldHVybiBOdW1iZXIobz8ucXVhbnRpdHk/PzApfSxXdz0oZSx0KT0+e2NvbnN0IG49aHQuZmluZChvPT5vLmtpbmQ9PT0iZXh0cmEiJiZvLmhvdGVsSWQ9PT1lJiZvLmV4dHJhUmVmPT09dCk7cmV0dXJuIE51bWJlcihuPy5xdWFudGl0eT8/MCl9LFRzPShlLHQsbixvPTEpPT50PjA/YDxzcGFuIGNsYXNzPSJzdGVwIj4KICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX0gZGF0YS1uPSIke3QtMX0iIGFyaWEtbGFiZWw9IiR7bChjKGBPbmUgZmV3ZXIgJHtufWAsYOWHj+WwkeS4gOmXtCAke259YCkpfSI+4oiSPC9idXR0b24+CiAgICAgICAgIDxzcGFuIGNsYXNzPSJuIj4ke3R9PC9zcGFuPgogICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfSBkYXRhLW49IiR7dCsxfSIgYXJpYS1sYWJlbD0iJHtsKGMoYE9uZSBtb3JlICR7bn1gLGDlop7liqDkuIDpl7QgJHtufWApKX0iPis8L2J1dHRvbj4KICAgICAgIDwvc3Bhbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFkZCIgJHtlfSBkYXRhLW49IiR7b30iIGFyaWEtbGFiZWw9IiR7bChjKGBBZGQgJHtufWAsYOa3u+WKoCAke259YCkpfSI+CiAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNCIKICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgNXYxNE01IDEyaDE0Ii8+PC9zdmc+CiAgICAgICA8L2J1dHRvbj5gLCRnPShlLHQpPT57Y29uc3Qgbj10fHxTZygpO3JldHVybighUy5jaGVja0lufHxTLmNoZWNrSW48bikmJihTLmNoZWNrSW49biksKCFTLmNoZWNrT3V0fHxTLmNoZWNrT3V0PD1TLmNoZWNrSW4pJiYoUy5jaGVja091dD1FdChTLmNoZWNrSW4sMSkpLFFyKCJjaSIsbix7cm9vbXM6YXUoImRhdGEtcm9vbXMtbiIsInJuIil9KX0scnU9e2NpOlsiY2kiLCJjbyJdLGxjaTpbImxjaSIsImxjbyJdLGRjaTpbImRjaSIsImRjbyJdfSxWdz0xMztsZXQgTj1udWxsO2NvbnN0IGl1PXt9LGxzPWU9PmAke2Uuc2xpY2UoMCw3KX0tMDFgLEFpPShlLHQpPT57Y29uc3Qgbj1uZXcgRGF0ZShgJHtlfVQxMjowMDowMFpgKTtyZXR1cm4gbi5zZXRVVENNb250aChuLmdldFVUQ01vbnRoKCkrdCwxKSxuLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCl9LHpzPTg7bGV0IEx0PSExO2NvbnN0IGtnPSgpPT5VPjE/YyhgJHtTLmd1ZXN0c30gJHtTLmd1ZXN0cz09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn0gcGVyIHJvb20gwrcgJHtVfSByb29tc2AsYOavj+mXtCAke1MuZ3Vlc3RzfSDkurogwrcgJHtVfSDpl7RgKTpjKGAke1MuZ3Vlc3RzfSAke1MuZ3Vlc3RzPT09MT8iZ3Vlc3QiOiJndWVzdHMifSDCtyAxIHJvb21gLGAke1MuZ3Vlc3RzfSDkurogwrcgMSDpl7RgKSxhdT0oZSx0KT0+YAogIDxkaXYgY2xhc3M9IndoZW4tcm9vbXMgd2hlbi1wYXJ0eSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiR3Vlc3RzIGFuZCByb29tcyIsIuS6uuaVsOWSjOmXtOaVsCIpfSI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBhcnR5LXRpbGUiIGRhdGEtcGFydHkgYXJpYS1leHBhbmRlZD0iJHtMdD8idHJ1ZSI6ImZhbHNlIn0iIGFyaWEtY29udHJvbHM9IiR7dH0tcGFuZWwiPgogICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiR3Vlc3RzIiwi5Lq65pWwIil9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icGFydHktdiIgZGF0YS1wYXJ0eS13b3Jkcz4ke2woa2coKSl9PC9zcGFuPgogICAgICAke0UuY2hldlJ9CiAgICA8L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9InBhcnR5LXBhbmVsIiBpZD0iJHt0fS1wYW5lbCIke0x0PyIiOiIgaGlkZGVuIn0+CiAgICAgIDxkaXYgY2xhc3M9InBhcnR5LXJvdyI+CiAgICAgICAgPHNwYW4+JHtjKCJHdWVzdHMgaW4gZWFjaCByb29tIiwi5q+P6Ze05YWl5L2P5Lq65pWwIil9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdGVwIGxpZ2h0Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWd1ZXN0cy1uPSItMSIgZGF0YS1vbj0iJHtlfSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgZmV3ZXIgZ3Vlc3QiLCLlsJHkuIDkuroiKX0iJHtTLmd1ZXN0czw9MT8iIGRpc2FibGVkIjoiIn0+4oiSPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibiIgZGF0YS1ndWVzdHMtc2hvd24+JHtsKFMuZ3Vlc3RzKX08L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1ndWVzdHMtbj0iMSIgZGF0YS1vbj0iJHtlfSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgbW9yZSBndWVzdCIsIuWkmuS4gOS6uiIpfSIke1MuZ3Vlc3RzPj16cz8iIGRpc2FibGVkIjoiIn0+KzwvYnV0dG9uPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcnR5LXJvdyI+CiAgICAgICAgPHNwYW4+JHtjKCJSb29tcyIsIumXtOaVsCIpfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcCBsaWdodCI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfT0iLTEiIGFyaWEtbGFiZWw9IiR7YygiT25lIGZld2VyIHJvb20iLCLlsJHkuIDpl7QiKX0iJHtVPD0xPyIgZGlzYWJsZWQiOiIifT7iiJI8L2J1dHRvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJuIiBpZD0iJHt0fSI+JHtsKFUpfTwvc3Bhbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9PSIxIiBhcmlhLWxhYmVsPSIke2MoIk9uZSBtb3JlIHJvb20iLCLlpJrkuIDpl7QiKX0iJHtVPj1CdD8iIGRpc2FibGVkIjoiIn0+KzwvYnV0dG9uPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj5gLFFyPShlLHQsbik9PntpdVtlXT17bWluOnQscm9vbXM6bi5yb29tcyxzaWRlOm4uc2lkZT8/IiIscGVuZGluZzohIW4ucGVuZGluZ307Y29uc3RbbyxzXT1ydVtlXSxyPUVlKFMuY2hlY2tJbixTLmNoZWNrT3V0KSxpPShhLHUsZCk9Pntjb25zdCBwPVZlKHUpLGg9Tj8ucGFpcj09PWUmJk4ucGlja2luZz09PWE7cmV0dXJuIG4ucGVuZGluZyYmIWg/YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0id2hlbi10aWxlIiBkYXRhLWNhbD0iJHtlfToke2F9IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1sYWJlbD0iJHtkfS4gJHtjKCJDaG9vc2UgYSBkYXRlIiwi6YCJ5oup5pel5pyfIil9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7ZH08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Ind2IHd2LWVtcHR5Ij4ke2MoIkFkZCBkYXRlIiwi6YCJ5pel5pyfIil9PC9zcGFuPgogICAgICA8L2J1dHRvbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IndoZW4tdGlsZSIgZGF0YS1jYWw9IiR7ZX06JHthfSIgYXJpYS1leHBhbmRlZD0iJHtoPyJ0cnVlIjoiZmFsc2UifSIgYXJpYS1sYWJlbD0iJHtkfSwgJHtsKHAubG9uZyl9LiAke2MoIkNoYW5nZSB0aGUgZGF0ZXMiLCLkv67mlLnml6XmnJ8iKX0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHtkfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0id3YiPiR7bChwLm1kKX08c21hbGw+JHtsKHAuZG93KX08L3NtYWxsPjwvc3Bhbj4KICAgICAgPC9idXR0b24+YH07cmV0dXJuYAogIDxkaXYgY2xhc3M9IndoZW5iYXIke24ucGVuZGluZz8iIHBlbmRpbmciOiIifSIgZGF0YS13aGVuPSIke2V9Ij4KICAgIDxkaXYgY2xhc3M9IndoZW4tZGF0ZXMiPgogICAgICAke2koImluIixTLmNoZWNrSW4sYygiQ2hlY2staW4iLCLlhaXkvY8iKSl9CiAgICAgIDxzcGFuIGNsYXNzPSJ3aGVuLW4iJHtlPT09ImNpIj8nIGlkPSJuaWdodHMiJzoiIn0+JHtuLnBlbmRpbmc/IuKGkiI6bChwZShyKSl9PC9zcGFuPgogICAgICAke2koIm91dCIsUy5jaGVja091dCxjKCJDaGVjay1vdXQiLCLnprvlupciKSl9CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IndoZW4tc2lkZSI+JHtuLnJvb21zfSR7bi5zaWRlPz8iIn08L2Rpdj4KICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iJHtvfSIgdmFsdWU9IiR7bChTLmNoZWNrSW4pfSIgbWluPSIke2wodCl9IiBoaWRkZW4+CiAgICA8aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9IiR7c30iIHZhbHVlPSIke2woUy5jaGVja091dCl9IiBtaW49IiR7bChFdChTLmNoZWNrSW4sMSkpfSIgaGlkZGVuPgogICAgJHtOPy5wYWlyPT09ZT9KdygpOiIifQogIDwvZGl2PmB9LEp3PSgpPT57aWYoIU4pcmV0dXJuIiI7Y29uc3QgZT1OLHQ9bHMoZS5taW4pLG49QWkodCxWdy0xKSxvPXA9PihWZShwKSxfZShwKSkscz1uZXcgTWFwKGUucGFpcj09PSJjaSImJmUucGlja2luZz09PSJpbiImJkFycmF5LmlzQXJyYXkoUD8uZGF0ZXMpP1AuZGF0ZXMuZmlsdGVyKHA9PnAuZnJvbSkubWFwKHA9PltTdHJpbmcocC5jaGVja0luKSxwXSk6W10pLHI9Wy4uLnMudmFsdWVzKCldLmZpbmQocD0+cC5sb3dlc3QpPz9bLi4ucy52YWx1ZXMoKV0uZmluZChwPT5wLmJlc3QpLGk9RWUoU3RyaW5nKFA/LnN0YXk/LmNoZWNrSW4/PyIiKSxTdHJpbmcoUD8uc3RheT8uY2hlY2tPdXQ/PyIiKSl8fDEsYT1lLnBpY2tpbmc9PT0iaW4iP2MoIkNob29zZSBjaGVjay1pbiIsIumAieaLqeWFpeS9j+aXpeacnyIpOmMoIkNob29zZSBjaGVjay1vdXQiLCLpgInmi6nnprvlupfml6XmnJ8iKSx1PWUuaW4mJmUub3V0P2Ake28oZS5pbil9IOKAkyAke28oZS5vdXQpfSDCtyAke3BlKEVlKGUuaW4sZS5vdXQpKX1gOmUuaW4/YCR7YygiQ2hlY2staW4iLCLlhaXkvY8iKX0gJHtvKGUuaW4pfWA6IiIsZD1wPT57Y29uc3QgaD1uZXcgRGF0ZShgJHtwfVQxMjowMDowMFpgKSxmPW9lPT09InpoIj9gJHtoLmdldFVUQ0Z1bGxZZWFyKCl95bm0JHtoLmdldFVUQ01vbnRoKCkrMX3mnIhgOmgudG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1HQiIse21vbnRoOiJsb25nIix5ZWFyOiJudW1lcmljIix0aW1lWm9uZToiVVRDIn0pLCQ9KGguZ2V0VVRDRGF5KCkrNiklNyxrPW5ldyBEYXRlKERhdGUuVVRDKGguZ2V0VVRDRnVsbFllYXIoKSxoLmdldFVUQ01vbnRoKCkrMSwwKSkuZ2V0VVRDRGF0ZSgpLHo9W107Zm9yKGxldCBBPTA7QTwkO0ErPTEpei5wdXNoKCc8c3BhbiBjbGFzcz0iY2QgYmxhbmsiPjwvc3Bhbj4nKTtmb3IobGV0IEE9MTtBPD1rO0ErPTEpe2NvbnN0IHg9YCR7cC5zbGljZSgwLDgpfSR7U3RyaW5nKEEpLnBhZFN0YXJ0KDIsIjAiKX1gLFQ9eDxlLm1pbixaPXg9PT1lLmluLHNlPXg9PT1lLm91dCxKPVsiY2QiLFo/ImluIjoiIixaJiZlLm91dD8iaGFzLW91dCI6IiIsc2U/Im91dCI6IiIsZS5pbiYmZS5vdXQmJng+ZS5pbiYmeDxlLm91dD8iYmV0d2VlbiI6IiIseD09PWUubWluPyJ0b2RheSI6IiIscy5oYXMoeCk/Imhhcy1wIjoiIixzLmdldCh4KT8ubG93ZXN0PyJsb3dlc3QiOiIiLGUucGlja2luZz09PSJvdXQiJiZlLmluJiZ4PGUuaW4/ImJlZm9yZSI6IiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIiksVj1zLmdldCh4KT8uZnJvbTt6LnB1c2goYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJHtKfSIgZGF0YS1kYXk9IiR7eH0iJHtUPyIgZGlzYWJsZWQiOiIifSBhcmlhLWxhYmVsPSIke2woVmUoeCkubG9uZyl9JHtaP2MoIiwgY2hlY2staW4iLCLvvIzlhaXkvY8iKTpzZT9jKCIsIGNoZWNrLW91dCIsIu+8jOemu+W6lyIpOiIifSR7Vj9sKGMoYCwgZnJvbSAke1Z9YCxg77yMJHtWfei1t2ApKToiIn0iJHtafHxzZT8nIGFyaWEtcHJlc3NlZD0idHJ1ZSInOiIifT48c3Bhbj48YiBjbGFzcz0iY2QtbiI+JHtBfTwvYj4ke1Y/YDxpIGNsYXNzPSJjZC1wIj4ke2woVil9PC9pPmA6IiJ9PC9zcGFuPjwvYnV0dG9uPmApfXJldHVybmA8ZGl2IGNsYXNzPSJjYWwtbW9udGgiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1tdCI+JHtsKGYpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1ncmlkIj4keyhvZT09PSJ6aCI/WyLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iLCLml6UiXTpbIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSIsIlN1Il0pLm1hcChBPT5gPHNwYW4gY2xhc3M9ImNhbC1kb3ciIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke0F9PC9zcGFuPmApLmpvaW4oIiIpfSR7ei5qb2luKCIiKX08L2Rpdj4KICAgICAgPC9kaXY+YH07cmV0dXJuYAogICAgPGRpdiBjbGFzcz0iY2FsIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHthfSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhbC10b3AiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1zYXkiIGFyaWEtbGl2ZT0icG9saXRlIj4ke2F9PHNtYWxsPiR7bCh1KX08L3NtYWxsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1uYXYiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLW5hdj0iLTEiIGFyaWEtbGFiZWw9IiR7YygiUHJldmlvdXMgbW9udGgiLCLkuIrkuKrmnIgiKX0iJHtlLm1vbnRoPD10PyIgZGlzYWJsZWQiOiIifT4ke0UuY2hldkx9PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtbmF2PSIxIiBhcmlhLWxhYmVsPSIke2MoIk5leHQgbW9udGgiLCLkuIvkuKrmnIgiKX0iJHtlLm1vbnRoPj1uPyIgZGlzYWJsZWQiOiIifT4ke0UuY2hldlJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWwtbW9udGhzIj4ke2QoZS5tb250aCl9JHtkKEFpKGUubW9udGgsMSkpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWwtZm9vdCI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNhbC1sZWdlbmQiPiR7cj9gPHNwYW4gY2xhc3M9ImNhbC1iZXN0Ij4ke2woYyhgTG93ZXN0OiBhcnJpdmUgJHtvKFN0cmluZyhyLmNoZWNrSW4pKX0sIGZyb20gJHtyLmZyb219YCxg5pyA5L2O77yaJHtvKFN0cmluZyhyLmNoZWNrSW4pKX3lhaXkvY/vvIwke3IuZnJvbX3otbdgKSl9PC9zcGFuPmA6ZS5waWNraW5nPT09ImluIj9jKCJUYXAgdGhlIG5pZ2h0IHlvdSBhcnJpdmUuIiwi54K56YCJ5YWl5L2P6YKj5aSp44CCIik6YygiVGFwIHRoZSBtb3JuaW5nIHlvdSBsZWF2ZS4iLCLngrnpgInnprvlupfpgqPlpKnjgIIiKX0ke3Muc2l6ZT9gPHNtYWxsPiR7bChjKGBQcmljZXM6ICR7cGUoaSl9IGZyb20gdGhhdCBkYXksIHRheGVzIGluLiBEYXlzIHdpdGhvdXQgb25lIHdlcmUgbm90IHF1b3RlZC5gLGDku7fmoLzkuLrlvZPlpKnlhaXkvY8gJHtwZShpKX3nmoTmgLvku7fvvIzlkKvnqI7vvJvmsqHmnInku7fmoLznmoTml6XlrZDmnKrmiqXku7fjgIJgKSl9PC9zbWFsbD5gOiIifTwvc3Bhbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLWNsb3NlPiR7ZS5pbiYmZS5vdXQ/YygiRG9uZSIsIuWujOaIkCIpOmMoIkNsb3NlIiwi5YWz6ZetIil9PC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YH0sUHQ9KGUsdCk9Pntjb25zdCBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC53aGVuYmFyW2RhdGEtd2hlbj0iJHtlfSJdYCksbz1pdVtlXTshbnx8IW98fChuLm91dGVySFRNTD1RcihlLG8ubWluLHtyb29tczpvLnJvb21zLHNpZGU6by5zaWRlLHBlbmRpbmc6by5wZW5kaW5nfSksdCYmZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KT8uZm9jdXMoKSl9LEt3PShlLHQpPT57Y29uc3Qgbj1pdVtlXTtpZighbilyZXR1cm47aWYoTiYmTi5wYWlyPT09ZSYmTi5waWNraW5nPT09dCl7Tj1udWxsLFB0KGUsYFtkYXRhLWNhbD0iJHtlfToke3R9Il1gKTtyZXR1cm59Y29uc3Qgbz1TLmNoZWNrSW4scz1TLmNoZWNrT3V0O049e3BhaXI6ZSxwaWNraW5nOnQsbW9udGg6bHModD09PSJvdXQiJiZzP3M6b3x8bi5taW4pLGluOm8sb3V0OnMsbWluOm4ubWlufSxOLm1vbnRoPGxzKG4ubWluKSYmKE4ubW9udGg9bHMobi5taW4pKSxQdChlLGBbZGF0YS1jYWw9IiR7ZX06JHt0fSJdYCl9LHdnPSgpPT57aWYoIU4/LmluKXJldHVybjtjb25zdHtwYWlyOmV9PU4sdD1OLmluLG49Ti5vdXQmJk4ub3V0PnQ/Ti5vdXQ6RXQodCwxKTtOPW51bGw7Y29uc3RbbyxzXT1ydVtlXSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG8pLGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocyk7IXJ8fCFpfHwoaS52YWx1ZT1uLHIudmFsdWU9dCxyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSkpLFB0KGUsYFtkYXRhLWNhbD0iJHtlfTppbiJdYCkpfSxHdz1lPT57aWYoIU58fGU8Ti5taW4pcmV0dXJuO2NvbnN0e3BhaXI6dH09TjtpZihOLnBpY2tpbmc9PT0iaW4ifHwhTi5pbnx8ZTw9Ti5pbil7Ti5pbj1lLCghTi5vdXR8fE4ub3V0PD1lKSYmKE4ub3V0PSIiKSxOLnBpY2tpbmc9Im91dCIsUHQodCxgW2RhdGEtZGF5PSIke2V9Il1gKTtyZXR1cm59Ti5vdXQ9ZSx3ZygpfSxfZz0oKT0+cGUoUy5jaGVja0luJiZTLmNoZWNrT3V0P0VlKFMuY2hlY2tJbixTLmNoZWNrT3V0KTowKSxFdD0oZSx0KT0+bmV3IERhdGUoRGF0ZS5wYXJzZShgJHtlfVQxMjowMDowMFpgKSt0Kjg2NGU1KS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLFNnPSgpPT5uZXcgRGF0ZShEYXRlLm5vdygpLW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSo2ZTQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksVGc9ZT0+e2NvbnN0IHQ9Wy4uLmU/LnRvZGF5P1tlLnRvZGF5Lm1pbixlLnRvZGF5Lm1heF06W10sLi4uKGU/LmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby50b2RheVRoZXJlPz8iIikpXS5maWx0ZXIobz0+L15cZHs0fS1cZHsyfS1cZHsyfSQvLnRlc3QobykpLnNvcnQoKSxuPVNnKCk7cmV0dXJue21pbjpbdFswXT8/bixuXS5zb3J0KClbMF0/P24sc3RhcnQ6dC5hdCgtMSk/P259fSxZdz1lPT57Y29uc3R7bWluOnQsc3RhcnQ6bn09VGcoZSk7KCFTLmNoZWNrSW58fFMuY2hlY2tJbjx0KSYmKFMuY2hlY2tJbj1uKSwoIVMuY2hlY2tPdXR8fFMuY2hlY2tPdXQ8PVMuY2hlY2tJbikmJihTLmNoZWNrT3V0PUV0KFMuY2hlY2tJbiwxKSk7Y29uc3Qgbz1RcigiZGNpIix0LHtyb29tczphdSgiZGF0YS1yb29tcy1uIiwicm4iKSxzaWRlOmUuc2NvcGU/IiI6YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kIj4ke0Uuc2VhcmNofSR7YygiU2VhcmNoIiwi5pCc57SiIil9PC9idXR0b24+YH0pLHM9YDxkaXYgY2xhc3M9InNlYXJjaCI+CiAgICAgIDxsYWJlbCBjbGFzcz0id2hlcmUiPiR7RS5waW59PGlucHV0IGlkPSJ3aGVyZSIgdHlwZT0ic2VhcmNoIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbCIsIuWfjuW4guOAgeWbveWutuaIlumFkuW6l+WQjSIpfSIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSB0byIsIuebrueahOWcsCIpfSI+PC9sYWJlbD4KICAgICAgJHtvfQogICAgPC9kaXY+YCxyPWQ9PmA8ZGl2IGNsYXNzPSJwbGFjZXMiPiR7ZC5tYXAoKHAsaCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bChwLm5hbWUpfSIke2g+PWt0PyIgaGlkZGVuIjoiIn0+JHtsKHAubmFtZSl9IDxzbWFsbD4ke2wocC5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCIiKX0ke2QubGVuZ3RoPmt0P2A8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLXBsYWNlcyI+KyR7ZC5sZW5ndGgta3R9IG1vcmU8L2J1dHRvbj5gOiIifTwvZGl2PmAsaT1lLnNjb3BlO2lmKGkpcmV0dXJuW2A8ZGl2IGNsYXNzPSJoZWxsbyI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7bChpLm5hbWUpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGUudG90YWwpfSAke2woZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyIpfSBpbiAke2woKGkuY2l0aWVzPz9bXSkubGVuZ3RoKX0gY2l0aWVzPC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0ic2VhcmNoIj4ke299PC9kaXY+YCxyKGkuY2l0aWVzPz9bXSksYDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2UtYWxsPSIke2woaS5uYW1lKX0iPiR7bChjKGBBbGwgJHtlLnRvdGFsfSBpbiAke2kubmFtZX1gLGAke2kubmFtZX3lhajpg6ggJHtlLnRvdGFsfSDlrrZgKSl9PC9idXR0b24+PC9kaXY+YF0uam9pbigiIik7Y29uc3QgYT1lLnJlZ2lvbnM/P1tdLHU9YS5mbGF0TWFwKGQ9PmQuY291bnRyaWVzPz9bXSkuZmxhdE1hcChkPT5kLmNpdGllcz8/W10pLm1hcCgoZCxwKT0+KHtjOmQsaTpwfSkpLnNvcnQoKGQscCk9Pk51bWJlcihwLmMuY291bnQpLU51bWJlcihkLmMuY291bnQpfHxkLmktcC5pKS5zbGljZSgwLGt0KS5tYXAoKHtjOmR9KT0+ZCk7cmV0dXJuW2A8ZGl2IGNsYXNzPSJoZWxsbyI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7YygiV2hlcmUgdG8/Iiwi5oOz5L2P5ZOq6YeM77yfIil9PC9oMj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woYyhgJHtlLnRvdGFsfSAke2Uudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifSR7a2U/YCBmcm9tICR7a2Uuc3VwcGxpZXJzLmxlbmd0aH0gZ3JvdXBzYDoiIn0sIHByaWNlZCBmb3IgdGhlIG5pZ2h0cyB5b3UgY2hvb3NlLmAsYCR7ZS50b3RhbH0g5a626YWS5bqXJHtrZT9g77yM5p2l6IeqICR7a2Uuc3VwcGxpZXJzLmxlbmd0aH0g5Liq6ZuG5ZuiYDoiIn3vvIzmjInkvaDpgInnmoTml6XmnJ/miqXku7fjgIJgKSl9PC9kaXY+PC9kaXY+YCxzLGtlJiZrZS5zdXBwbGllcnMubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiSG90ZWwgZ3JvdXBzIiwi6YWS5bqX6ZuG5ZuiIil9PC9kaXY+PGRpdiBjbGFzcz0icGxhY2VzIGdyb3VwcyI+JHtrZS5zdXBwbGllcnMubWFwKGQ9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIGdyb3VwIiB0eXBlPSJidXR0b24iIGRhdGEtZ3JvdXAtaG9tZT0iJHtsKGQuaWQpfSI+JHtkLmxvZ29Vcmw/YDxpbWcgc3JjPSIke2woZC5sb2dvVXJsKX0iIGFsdD0iIj5gOiIifSR7bChkLm5hbWUpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PjwvZGl2PmA6IiIsdS5sZW5ndGg/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiVG9wIGNpdGllcyIsIueDremXqOWfjuW4giIpfTwvZGl2PiR7cih1KX08L2Rpdj5gOiIiLGEubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiQnkgcmVnaW9uIiwi5oyJ5Zyw5Yy6Iil9PC9kaXY+PGRpdiBjbGFzcz0icGxhY2VzIj4ke2EubWFwKChkLHApPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSB0YWIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1yZWdpb249IiR7cH0iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4ke2woZC5uYW1lKX0gPHNtYWxsPiR7bChkLmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PjwvZGl2PmA6IiIsLi4uYS5tYXAoKGQscCk9PmAKICAgICAgPGRpdiBjbGFzcz0icmVnaW9uIiBkYXRhLXJlZ2lvbi1ib2R5PSIke3B9IiBoaWRkZW4+CiAgICAgICAgJHsoZC5jb3VudHJpZXM/P1tdKS5tYXAoKGgsZik9Pntjb25zdCAkPWguY2l0aWVzPz9bXSxrPSQubGVuZ3RoPT09MT8kWzBdOnZvaWQgMDtyZXR1cm5gCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0IiR7Zj49dWk/IiBoaWRkZW4iOiIifT4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdC1jb3VudHJ5IiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bChoLm5hbWUpfSI+JHtsKGgubmFtZSl9JHtrJiZrLm5hbWUhPT1oLm5hbWU/YDxzbWFsbD4gwrcgJHtsKGsubmFtZSl9PC9zbWFsbD5gOiIifSA8c21hbGwgY2xhc3M9Im4iPiR7bChoLmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPgogICAgICAgICAgICAkeyQubGVuZ3RoPjE/cigkKToiIn0KICAgICAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX0KICAgICAgICAkeyhkLmNvdW50cmllcz8/W10pLmxlbmd0aD51aT9gPGRpdiBjbGFzcz0icGxhY2VzIj48YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLWNvdW50cmllcyI+KyR7KGQuY291bnRyaWVzPz9bXSkubGVuZ3RoLXVpfSBtb3JlIGNvdW50cmllczwvYnV0dG9uPjwvZGl2PmA6IiJ9CiAgICAgIDwvZGl2PmApLGA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhbGwtaG90ZWxzIj4ke2woYyhgQnJvd3NlIGFsbCAke2UudG90YWx9ICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9YCxg5rWP6KeI5YWo6YOoICR7ZS50b3RhbH0g5a626YWS5bqXYCkpfTwvYnV0dG9uPgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9ImhvbWUtbGlua3MiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+wrc8L3NwYW4+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIkZpbmQgYSBib29raW5nIGJ5IGl0cyBjb2RlIiwi55So56Gu6K6k56CB5p+l5om+6aKE6K6iIil9PC9idXR0b24+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LGt0PTgsdWk9Nix6Zz0oZSx0PSExKT0+e2NvbnN0IG49ZS5mb3JTdGF5O2lmKG4pcmV0dXJuYDxzcGFuIGNsYXNzPSJ0LWZyb20iPiR7bChuLnRvdGFsKX08c21hbGwgY2xhc3M9InQtc3ViIj48c3BhbiBjbGFzcz0ibmIiPiR7bChbTnVtYmVyKG4ucm9vbXMpPjE/YyhgJHtuLnJvb21zfSByb29tcyDDl2AsYCR7bi5yb29tc33pl7Qgw5dgKToiIixOdW1iZXIobi5ob3Vycyk+MD9jKGAke0N0KG4uaG91cnMpfSB0b2RheWAsYOS7iuWkqSR7Q3Qobi5ob3Vycyl9YCk6cGUoTnVtYmVyKG4ubmlnaHRzKSldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIikpfTwvc3Bhbj48c3BhbiBjbGFzcz0idC1zZXAiPiDCtyA8L3NwYW4+PHNwYW4gY2xhc3M9Im5iIj4ke2MoInRheGVzIGluIiwi5ZCr56iO6LS5Iil9PC9zcGFuPjwvc21hbGw+PC9zcGFuPmA7aWYoZS5ub1Jvb21zRm9yU3RheSl7Y29uc3Qgbz1lLm5vUm9vbXNGb3JTdGF5Q29kZSxzPWUubm9Sb29tc0ZvclN0YXlBcmdzPz97fTtyZXR1cm5gPHNwYW4gY2xhc3M9InQtZnJvbSB0LW5vbmUiPiR7KG8/bz09PSJwYXJ0eSI6L3NsZWVwcy8udGVzdChTdHJpbmcoZS5ub1Jvb21zRm9yU3RheSkpKT9sKGMoYE5vIHJvb20gc2xlZXBzICR7Uy5ndWVzdHN9YCxg5rKh5pyJ5Y+v5L2PICR7Uy5ndWVzdHN9IOS6uueahOaIv+Wei2ApKTpvPT09ImhvdXJseS1vdmVyIj9sKGMoIlRvZGF5J3MgaG91cnMgYXJlIG92ZXIiLCLku4rlpKnnmoTpkp/ngrnmiL/lt7Lnu5PmnZ8iKSk6bz09PSJob3VybHktbm90LXlldCImJnMub3BlbnNBdD9sKGMoYE9uIHNhbGUgdG9kYXkgZnJvbSAke3Mub3BlbnNBdH1gLGDku4rlpKkgJHtzLm9wZW5zQXR9IOW8gOWNlmApKTpvPT09ImhvdXJseS1ub25lIj9jKCJObyByb29tcyBieSB0aGUgaG91ciB0b2RheSIsIuS7iuWkqeayoeaciemSn+eCueaIvyIpOm89PT0ic29sZC1vdXQiJiZ0P2MoIlNvbGQgb3V0IGJ5IHRoZSBob3VyIHRvZGF5Iiwi5LuK5aSp55qE6ZKf54K55oi/5bey6K6i5ruhIik6YygiTm8gcm9vbSBmb3IgdGhlc2UgZGF0ZXMiLCLov5nkupvml6XmnJ/msqHmnInnqbrmiL8iKX08L3NwYW4+YH1yZXR1cm4gZS5mcm9tTmlnaHRseT9gPHNwYW4gY2xhc3M9InQtZnJvbSI+PHNwYW4gY2xhc3M9InQtcHJlIj4ke2MoIkZyb20gIiwiIil9PC9zcGFuPiR7bChlLmZyb21OaWdodGx5KX0ke2MoIiIsJzxzcGFuIGNsYXNzPSJ0LXByZSI+IOi1tzwvc3Bhbj4nKX08c21hbGw+JHtjKCIgLyBuaWdodCArIHRheCIsIuavj+aZmu+8jOacquWQq+eojui0uSIpfTwvc21hbGw+PC9zcGFuPmA6YDxzcGFuIGNsYXNzPSJ0LWZyb20gdC1ub25lIj4ke2MoIkFkZCBkYXRlcyBmb3IgcHJpY2VzIiwi6YCJ5aW95pel5pyf55yL5Lu35qC8Iil9PC9zcGFuPmB9O2xldCBDaT0hMTtjb25zdCBRdz1lPT57Y29uc3QgdD1lLmZvclN0YXk7aWYoIXQpcmV0dXJuIiI7Y29uc3Qgbj1bZS5sb3dlc3Q/YDxzcGFuIGNsYXNzPSJiYWRnZSBnb29kIj4ke2MoIkxvd2VzdCBwcmljZSIsIuacgOS9juS7tyIpfTwvc3Bhbj5gOiIiLC4uLihBcnJheS5pc0FycmF5KHQubGFiZWxzKT90LmxhYmVsczpbXSkubWFwKG89PkVnW29dKS5maWx0ZXIoQm9vbGVhbikubWFwKG89PmA8c3BhbiBjbGFzcz0iYmFkZ2Uke28/LnNhdmU/IiBnb29kIjoiIn0iPiR7bChjKG8/LnRleHQ/PyIiLG8/LnpoPz8iIikpfTwvc3Bhbj5gKSx0LmZyZWVDYW5jZWxsYXRpb24mJiFDaT9gPHNwYW4gY2xhc3M9InBlcmsiPiR7RS5jaGVja30ke2MoIkZyZWUgY2FuY2VsbGF0aW9uIiwi5YWN6LS55Y+W5raIIil9PC9zcGFuPmA6IiIsTnVtYmVyKHQucm9vbXNMZWZ0KTw9Mz9gPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4iPiR7RS5jbG9ja30ke2woYyhgJHt0LnJvb21zTGVmdH0gbGVmdGAsYOS7heWJqSAke3Qucm9vbXNMZWZ0fSDpl7RgKSl9PC9zcGFuPmA6IiJdLmZpbHRlcihCb29sZWFuKTtyZXR1cm4gbi5sZW5ndGg/YDxzcGFuIGNsYXNzPSJ0LXRhZ3MiPiR7bi5qb2luKCIiKX08L3NwYW4+YDoiIn0sRHQ9KCk9PlMuY2hlY2tJbiYmUy5jaGVja091dD97Y2hlY2tJbjpTLmNoZWNrSW4sY2hlY2tPdXQ6Uy5jaGVja091dCxndWVzdHM6Uy5ndWVzdHMsLi4uVT4xP3tyb29tczpVfTp7fX06e30sdXM9ZT0+e2NvbnN0e2NoZWNrSW46dCxjaGVja091dDpuLGd1ZXN0czpvLHJvb21zOnMsLi4ucn09ZT8/e307cmV0dXJuIHJ9LFh3PShlLHQpPT57Y29uc3R7bWluOm4sc3RhcnQ6b309VGcodCk7cmV0dXJuKCFTLmNoZWNrSW58fFMuY2hlY2tJbjxuKSYmKFMuY2hlY2tJbj1vKSwoIVMuY2hlY2tPdXR8fFMuY2hlY2tPdXQ8PVMuY2hlY2tJbikmJihTLmNoZWNrT3V0PUV0KFMuY2hlY2tJbiwxKSksUXIoImxjaSIsbix7cm9vbXM6YXUoImRhdGEtbGlzdC1yb29tcyIsImxybiIpLHNpZGU6ZT8iIjpgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InByaWNlLWxpc3QiPiR7YygiU2hvdyBwcmljZXMiLCLmn6XnnIvku7fmoLwiKX08L2J1dHRvbj5gLHBlbmRpbmc6IWV9KX07bGV0IEplPSJkYXRlcyI7Y29uc3QgeGc9ImRhdGVzIixkcz1lPT57Y29uc3QgdD1lPz97fTtyZXR1cm57Li4udC5ncm91cHx8dC5zdXBwbGllcj97Z3JvdXA6dC5ncm91cHx8dC5zdXBwbGllcn06e30sLi4udC5icmFuZD97YnJhbmQ6dC5icmFuZH06e30sLi4uQXJyYXkuaXNBcnJheSh0LmZhY2lsaXRpZXMpJiZ0LmZhY2lsaXRpZXMubGVuZ3RoP3tmYWNpbGl0aWVzOnQuZmFjaWxpdGllc306e30sLi4udC5mcmVlQ2FuY2VsbGF0aW9uP3tmcmVlQ2FuY2VsbGF0aW9uOiEwfTp7fSwuLi50LmJyZWFrZmFzdD97YnJlYWtmYXN0OiEwfTp7fX19LGhkPWU9Pntjb25zdHtncm91cDp0LHN1cHBsaWVyOm4sYnJhbmQ6byxmYWNpbGl0aWVzOnMsZnJlZUNhbmNlbGxhdGlvbjpyLGJyZWFrZmFzdDppLC4uLmF9PWU/P3t9O3JldHVybiBhfSxlXz1lPT57Y29uc3QgdD1kcyhlKTtyZXR1cm4odC5ncm91cD8xOjApKyh0LmJyYW5kPzE6MCkrKHQuZmFjaWxpdGllcz8ubGVuZ3RoPz8wKSsodC5mcmVlQ2FuY2VsbGF0aW9uPzE6MCkrKHQuYnJlYWtmYXN0PzE6MCkrKGU/LmhvdXJseT8xOjApfSx0Xz1lPT57aWYoIWUucmVmaW5lJiYhZS5ob3VybHkpcmV0dXJuIiI7Y29uc3QgdD1lLnJlZmluZT8/e30sbj0ocyxyLGksYSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHNvcnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1maWx0ZXI9IiR7bChzKX0iIGFyaWEtcHJlc3NlZD0iJHthPyJ0cnVlIjoiZmFsc2UifSI+JHtsKHIpfSR7aT09PXZvaWQgMD8iIjpgIDxzbWFsbD4ke2woaSl9PC9zbWFsbD5gfTwvYnV0dG9uPmAsbz0ocyxyKT0+ci5sZW5ndGg/YDxkaXYgY2xhc3M9ImZncm91cCI+PHNwYW4gY2xhc3M9InNvcnRzLWsiPiR7bChzKX08L3NwYW4+JHtyLmpvaW4oIiIpfTwvZGl2PmA6IiI7cmV0dXJuW28oYygiR3JvdXAiLCLpm4blm6IiKSwodC5ncm91cHM/P1tdKS5tYXAocz0+bihgZ3JvdXA6JHtzLmlkfWAsU3RyaW5nKEF0KHMuaWQpPy5uYW1lPz9zLmlkKSxzLmNvdW50LHMub24pKSksbyhjKCJCcmFuZCIsIuWTgeeJjCIpLCh0LmJyYW5kcz8/W10pLm1hcChzPT5uKGBicmFuZDoke3MubmFtZX1gLHMubmFtZSxzLmNvdW50LHMub24pKSksbyhjKCJIYXMiLCLorr7mlr0iKSwodC5mYWNpbGl0aWVzPz9bXSkubWFwKHM9Pm4oYGZhY2lsaXR5OiR7cy5rZXl9YCxzLmxhYmVsLHMuY291bnQscy5vbikpKSxvKGMoIlJvb20iLCLmiL/lnosiKSxbLi4uKHQucm9vbT8/W10pLm1hcChzPT5uKHMua2V5LHMubGFiZWwscy5jb3VudCxzLm9uKSksLi4uZS5ob3VybHk/W24oImhvdXJseSIsYygiQnkgdGhlIGhvdXIgdG9kYXkiLCLmnInpkp/ngrnmiL8iKSx2b2lkIDAsISFlLmFzaz8uaG91cmx5KV06W11dKV0uam9pbigiIil9LFBpPWU9PiEhZT8uYXNrPy5ob3VybHl8fChlPy5ob3RlbHM/P1tdKS5zb21lKHQ9Pk51bWJlcih0LmZvclN0YXk/LmhvdXJzKT4wKSxJZz0oZSx0LG4pPT57Y29uc3Qgbz0hIWUuc3RheT8uY2hlY2tJbixzPWVfKGUuYXNrKSxyPXRfKGUpLGk9QWcuZmluZCgoW2RdKT0+ZD09PW4pLGE9aT9jKGlbMV0saVsyXSk6YygiUmVjb21tZW5kZWQiLCLmjqjojZAiKSx1PShkLHApPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSB0b29sIiB0eXBlPSJidXR0b24iIGRhdGEtcGFuZWw9IiR7ZH0iIGFyaWEtZXhwYW5kZWQ9IiR7SmU9PT1kPyJ0cnVlIjoiZmFsc2UifSI+JHtwfTwvYnV0dG9uPmA7cmV0dXJuYAogICAgJHtQaShlKT9gPGRpdiBjbGFzcz0iaG91ci1ub3RlIj4ke0UuY2xvY2t9PHNwYW4+JHtjKCJSb29tcyBieSB0aGUgaG91ciwgdG9kYXkuIFBpY2sgYSBob3RlbCB0byBjaG9vc2Ugd2hlbiB5b3UgYXJyaXZlLiIsIuS7iuWkqeeahOmSn+eCueaIv++8jOmAieS4gOWutuWGjeaMkeWIsOW6l+aXtumXtOOAgiIpfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibmlnaHRseS1saXN0Ij4ke2MoIlN0YXkgdGhlIG5pZ2h0IGluc3RlYWQiLCLmlLnnnIvmjInmmZrlhaXkvY8iKX08L2J1dHRvbj48L2Rpdj5gOlh3KG8sZSl9CiAgICAke3R8fHJ8fHM/YDxkaXYgY2xhc3M9InBsYWNlcyB0b29sYmFyIj4KICAgICAgJHt0P3UoInNvcnQiLGAke0Uuc29ydH08c3Bhbj4ke2MoIlNvcnQiLCLmjpLluo8iKX0ke2MoIjogIiwi77yaIil9JHtsKGEpfTwvc3Bhbj5gKToiIn0KICAgICAgJHtyfHxzP3UoImZpbHRlcnMiLGAke0Uuc2xpZGVyc308c3Bhbj4ke2MoIkZpbHRlcnMiLCLnrZvpgIkiKX0ke3M/YCDCtyAke3N9YDoiIn08L3NwYW4+YCk6IiJ9CiAgICAgICR7cz9gPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImNsZWFyLWZpbHRlcnMiPiR7YygiQ2xlYXIiLCLmuIXpmaQiKX08L2J1dHRvbj5gOiIifQogICAgPC9kaXY+YDoiIn0KICAgICR7dD9gPGRpdiBjbGFzcz0iZmlsdGVyLXBhbmVsIiBkYXRhLXBhbmVsLWJvZHk9InNvcnQiJHtKZT09PSJzb3J0Ij8iIjoiIGhpZGRlbiJ9PiR7dH08L2Rpdj5gOiIifQogICAgJHtyP2A8ZGl2IGNsYXNzPSJmaWx0ZXItcGFuZWwiIGRhdGEtcGFuZWwtYm9keT0iZmlsdGVycyIke0plPT09ImZpbHRlcnMiPyIiOiIgaGlkZGVuIn0+JHtyfTwvZGl2PmA6IiJ9YH0sQWc9W1siZ3JvdXAiLCJSZWNvbW1lbmRlZCIsIuaOqOiNkCJdLFsicHJpY2UtbG93IiwiTG93ZXN0IHByaWNlIiwi5Lu35qC85LuO5L2O5Yiw6auYIl0sWyJwcmljZS1oaWdoIiwiSGlnaGVzdCBwcmljZSIsIuS7t+agvOS7jumrmOWIsOS9jiJdLFsicmF0aW5nIiwiUmF0aW5nIiwi6K+E5YiGIl1dLG5fPTM7bGV0IERuPSJpbmxpbmUiLENnPVtdO2NvbnN0IEJuPSgpPT5Ebj09PSJmdWxsc2NyZWVuIixjdT0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnQgLnRpbGVzIik7aWYoZT8ub2Zmc2V0V2lkdGgpe2NvbnN0IG89Z2V0Q29tcHV0ZWRTdHlsZShlKS5ncmlkVGVtcGxhdGVDb2x1bW5zLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtpZihvPjApcmV0dXJuIG99Y29uc3QgdD13aW5kb3cuaW5uZXJXaWR0aHx8RygiY29udGVudCIpLmNsaWVudFdpZHRofHwwO2lmKHQ8PTUyMClyZXR1cm4gMTtjb25zdCBuPUcoImNvbnRlbnQiKS5jbGllbnRXaWR0aHx8dC00MDtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmZsb29yKChuKzE0KS8yMzQpKXx8Mn07bGV0IGx1PTA7Y29uc3Qgb189NSxYcj0oZT0wKT0+e2NvbnN0IHQ9bHV8fGN1KCksbj10PT09MT9vXzpNYXRoLm1heCgyLHQqbl8pO3JldHVybiBlPm4mJmU8PW4rTWF0aC5tYXgoMix0KT9lOm59O2xldCB4cz0wO2NvbnN0IHNfPWU9Pm9lPT09InpoIj9lLnJlcGxhY2UoLz5QcmV2aW91czwvZywiPuS4iuS4gOmhtTwiKS5yZXBsYWNlKC8+TmV4dDwvZywiPuS4i+S4gOmhtTwiKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJQcmV2aW91c1teIl0qIi9nLCdhcmlhLWxhYmVsPSLkuIrkuIDpobUiJykucmVwbGFjZSgvYXJpYS1sYWJlbD0iTmV4dFteIl0qIi9nLCdhcmlhLWxhYmVsPSLkuIvkuIDpobUiJykucmVwbGFjZSgvYXJpYS1sYWJlbD0iUGFnZXMiL2csJ2FyaWEtbGFiZWw9Iue/u+mhtSInKS5yZXBsYWNlKC8oXGQrKeKAkyhcZCspIG9mIChcZCspL2csIuesrCAkMeKAkyQyIOWutu+8jOWFsSAkMyDlrrYiKS5yZXBsYWNlKC8wIG9mIChcZCspL2csIuWFsSAkMSDlrrYiKS5yZXBsYWNlKC9WaWV3IGFsbCAoXGQrKS9nLCLmn6XnnIvlhajpg6ggJDEg5a62Iik6ZSxyXz1lPT57eHM9WHIoTnVtYmVyKGUudG90YWw/PyhlLmhvdGVscz8/W10pLmxlbmd0aCktTnVtYmVyKGUub2Zmc2V0Pz8wKSk7Y29uc3QgdD1CbigpP2UuaG90ZWxzPz9bXTooZS5ob3RlbHM/P1tdKS5zbGljZSgwLHhzKTtDaT10Lmxlbmd0aD4xJiZ0LmV2ZXJ5KHg9PnguZm9yU3RheT8uZnJlZUNhbmNlbGxhdGlvbik7Y29uc3Qgbj1bLi4ubmV3IFNldCh0Lm1hcCh4PT5TdHJpbmcoeC5jaXR5KSkpXSxvPXg9Pntjb25zdCBUPXQuZmluZChaPT5aLmNpdHk9PT14KT8uY291bnRyeTtyZXR1cm4gVCYmIVN0cmluZyhUKS5zdGFydHNXaXRoKHgpP1N0cmluZyhUKToiIn0scz1bLi4ubmV3IFNldCh0Lm1hcCh4PT5TdHJpbmcoeC5jb3VudHJ5Pz8iIikpKV0scj1zLmxlbmd0aD4xLGk9eD0+YAogICAgPGRpdiBjbGFzcz0iY2l0eWdyb3VwIj4KICAgICAgJHtuLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJjaXR5bmFtZSI+JHtsKHgpfSR7IXImJm8oeCk/YDxzbWFsbD4gwrcgJHtsKG8oeCkpfTwvc21hbGw+YDoiIn08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJ0aWxlcyI+CiAgICAgICAgJHt0LmZpbHRlcihUPT5ULmNpdHk9PT14KS5tYXAoVD0+YAogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSR7VC5sb3dlc3Q/IiBsb3dlc3QiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woVC5pZCl9Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtc2hvdCIgc3R5bGU9IiR7Z3QoU3RyaW5nKFQuaWQpKX0iPgogICAgICAgICAgICAgICR7VC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChULmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChidChTdHJpbmcoVC5uYW1lKSkpfTwvc3Bhbj4KICAgICAgICAgICAgICAke0VuKFQpP2A8c3BhbiBjbGFzcz0idC1icmFuZCI+JHtsKEVuKFQpKX08L3NwYW4+YDoiIn0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1ib2R5Ij4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1uYW1lIj4ke1p0KFQubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1ldGEiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtd2hlcmUiPiR7bChbVC5hcmVhLG4ubGVuZ3RoPjF8fFN0cmluZyhULm5hbWUpLmluY2x1ZGVzKFN0cmluZyhULmNpdHkpKT8iIjpULmNpdHldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICR7RHcoVC5yYXRpbmcpfQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAke1F3KFQpfQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWZvb3QiPiR7emcoVCxQaShlKSl9PHNwYW4gY2xhc3M9InQtZ28iIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke0UuY2hldlJ9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9idXR0b24+YCkuam9pbigiIil9CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YCxhPU51bWJlcihlLnRvdGFsPz90Lmxlbmd0aCksdT1OdW1iZXIoZS5vZmZzZXQ/PzApLGQ9YS11LXQubGVuZ3RoLHA9ZS5wbGFjZXM/P1tdO2UuYXNrPy5jaXR5O2NvbnN0IGg9cC5sZW5ndGg/YDxkaXYgY2xhc3M9InBsYWNlcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUiLCLlnLDngrkiKX0iPgogICAgICAgICAgICR7cC5tYXAoKHgsVCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bCh4LnBsYWNlKX0iJHtUPj1rdD8iIGhpZGRlbiI6IiJ9PiR7bCh4LmxhYmVsKX0gPHNtYWxsPiR7bCh4LmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfQogICAgICAgICAgICR7cC5sZW5ndGg+a3Q/YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im1vcmUtcGxhY2VzIj4rJHtwLmxlbmd0aC1rdH0gbW9yZTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgIDwvZGl2PmA6IiIsZj1TdHJpbmcoZS5zb3J0Pz8iZ3JvdXAiKSwkPSEoKGUuY3VycmVuY2llcz8/W10pLmxlbmd0aD4xKSxrPXQubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InBsYWNlcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiT3JkZXIiLCLmjpLluo8iKX0iPiR7QWcuZmlsdGVyKChbeF0pPT4kfHwheC5zdGFydHNXaXRoKCJwcmljZSIpKS5tYXAoKFt4LFQsWl0pPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSBzb3J0IiB0eXBlPSJidXR0b24iIGRhdGEtc29ydD0iJHt4fSIgYXJpYS1wcmVzc2VkPSIke3g9PT1mPyJ0cnVlIjoiZmFsc2UifSI+JHtjKFQsWil9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIix6PWUuYXNrPy5jaXR5P1N0cmluZyhlLmFzay5jaXR5KTplLmFzaz8ucXVlcnk/YOKAnCR7U3RyaW5nKGUuYXNrLnF1ZXJ5KX3igJ1gOm4ubGVuZ3RoPT09MT9TdHJpbmcoblswXSk6YyhgQWxsICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9YCwi5YWo6YOo6YWS5bqXIiksQT0hIWUuc3RheT8uY2hlY2tJbjtyZXR1cm5bYDxkaXYgY2xhc3M9Imxpc3QtaCI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7bCh6KX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChQaShlKT9jKGAke2F9ICR7YT09PTE/ZS52b2NhYj8ubm91bj8/ImhvdGVsIjplLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn0gwrcgYnkgdGhlIGhvdXIgdG9kYXksIHRheGVzIGluYCxgJHthfSDlrrYgwrcg5LuK5aSp55qE6ZKf54K55oi/77yM5ZCr56iO5Lu3YCk6b2U9PT0iemgiP2Ake2F9IOWutiR7QT9gIMK3ICR7cGUoRWUoZS5zdGF5LmNoZWNrSW4sZS5zdGF5LmNoZWNrT3V0KSl9JHtVPjE/YOOAgSR7VX3pl7RgOiIifeeahOWQq+eojuaAu+S7t2A6IiDCtyDpgInlpb3ml6XmnJ/nnIvkvY/lrr/mgLvku7cifWA6YCR7YX0gJHthPT09MT9lLnZvY2FiPy5ub3VuPz8iaG90ZWwiOmUudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifSR7QT9gIMK3IHByaWNlcyBmb3IgJHtwZShFZShlLnN0YXkuY2hlY2tJbixlLnN0YXkuY2hlY2tPdXQpKX0ke1U+MT9gLCAke1V9IHJvb21zYDoiIn0sIHRheGVzIGluYDoiIMK3IGFkZCBkYXRlcyB0byBzZWUgd2hhdCBhIHN0YXkgY29zdHMifWApfSR7Q2k/YDwvZGl2PjxkaXYgY2xhc3M9ImgtZnJlZSI+JHtFLmNoZWNrfSR7YygiRXZlcnkgaG90ZWwgaGVyZSBpcyBmcmVlIHRvIGNhbmNlbCIsIui/memHjOavj+WutumDveWPr+S7peWFjei0ueWPlua2iCIpfWA6IiJ9PC9kaXY+PC9kaXY+YCxoLElnKGUsayxmKSxlLndpZGVuZWQ/YDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2woYyhgTm90aGluZyBtYXRjaGVkICR7ZS53aWRlbmVkLmZyb219LiBUaGVzZSBhcmUgJHtlLndpZGVuZWQudG99LmAsYOayoeacieaJvuWIsOS4juKAnCR7ZS53aWRlbmVkLmZyb2194oCd55u456ym55qE57uT5p6c77yM5Lul5LiL5pivJHtlLndpZGVuZWQudG9944CCYCkpfTwvZGl2PmA6IiIsYDxkaXY+JHtyP3MubWFwKHg9PmA8ZGl2IGNsYXNzPSJjb3VudHJ5bmFtZSI+JHtsKHgpfTwvZGl2PiR7bi5maWx0ZXIoVD0+dC5zb21lKFo9PlouY2l0eT09PVQmJlN0cmluZyhaLmNvdW50cnk/PyIiKT09PXgpKS5tYXAoaSkuam9pbigiIil9YCkuam9pbigiIik6bi5tYXAoaSkuam9pbigiIil9PC9kaXY+YCwoZS5jdXJyZW5jaWVzPz9bXSkubGVuZ3RoPjE/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBRdW90ZWQgaW4gJHtlLmN1cnJlbmNpZXMuam9pbigiLCAiKX0g4oCUIG5vIHJhdGUgaXMgYXBwbGllZCBoZXJlLCBzbyB0aGlzIGlzIG5vdCBhIHByaWNlIG9yZGVyLiBPbmUgY2l0eSBvciBvbmUgY291bnRyeSBnaXZlcyBvbmUgY3VycmVuY3kuYCxg5Lu35qC85YiG5Yir5LulICR7ZS5jdXJyZW5jaWVzLmpvaW4oIuOAgSIpfSDorqHvvIzov5nph4zkuI3lgZrmjaLnrpfvvIzmiYDku6XkuI3mjInku7fmoLzmjpLluo/jgILlj6rnnIvkuIDkuKrln47luILmiJblm73lrrbvvIzlsLHlj6rmnInkuIDnp43luIHnp43jgIJgKSl9PC9kaXY+YDoiIixlLm92ZXJCdWRnZXQ/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGAke2Uub3ZlckJ1ZGdldH0gbW9yZSBtYXRjaGVkIGFuZCBjYW1lIGluIG92ZXIgdGhlIHByaWNlIGNlaWxpbmcuYCxg5Y+m5pyJICR7ZS5vdmVyQnVkZ2V0fSDlrrbnrKblkIjmnaHku7bvvIzkvYbotoXlh7rkuobku7fmoLzkuIrpmZDjgIJgKSl9PC9kaXY+YDoiIixCbigpP2Q+MD9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFNob3dpbmcgJHt1P2Ake3UrMX3igJMke3UrdC5sZW5ndGh9YDp0Lmxlbmd0aH0gb2YgJHthfS5gLGDmmL7npLrnrKwgJHt1P2Ake3UrMX3igJMke3UrdC5sZW5ndGh9YDpgMeKAkyR7dC5sZW5ndGh9YH0g5a6277yM5YWxICR7YX0g5a6244CCYCkpfTwvZGl2PgogICAgICAgICAgICR7SXcoYyhgU2hvdyAke01hdGgubWluKDEyLGQpfSBtb3JlYCxg5YaN5pi+56S6ICR7TWF0aC5taW4oMTIsZCl9IOWutmApLCdkYXRhLWFjdD0ibW9yZS1ob3RlbHMiJyl9YDoiIjpzXyh4dyh7ZnJvbTp1LGNvdW50OnQubGVuZ3RoLHRvdGFsOk51bWJlcihhKSxwcmV2OidkYXRhLWFjdD0icGFnZS1wcmV2IicsbmV4dDonZGF0YS1hY3Q9InBhZ2UtbmV4dCInLGFsbDpDZy5pbmNsdWRlcygiZnVsbHNjcmVlbiIpPydkYXRhLWFjdD0iZnVsbHNjcmVlbiInOm51bGwsbm91bjoiaG90ZWxzIn0pKV0uam9pbigiIil9LGlfPWU9Pntjb25zdCB0PWUubmVhcmVzdD8/W10sbj1lLndpZGVuZWQ/YDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2woYyhgTm90aGluZyBtYXRjaGVkICR7ZS53aWRlbmVkLmZyb219LCBzbyB0aGlzIGxvb2tlZCBpbiAke2Uud2lkZW5lZC50b30uYCxg5rKh5pyJ5om+5Yiw5LiO4oCcJHtlLndpZGVuZWQuZnJvbX3igJ3nm7jnrKbnmoTnu5PmnpzvvIzmlLnkuLrlnKgke2Uud2lkZW5lZC50b33ph4zmib7jgIJgKSl9PC9kaXY+YDoiIjtpZihlLmJlZm9yZUZpbHRlcnMpcmV0dXJuIEplPSJmaWx0ZXJzIixbbixgPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChvZT09PSJ6aCI/YOi/memHjOeahCAke2UuYmVmb3JlRmlsdGVyc30g5a626YWS5bqX77yM5rKh5pyJ5LiA5a625ZCM5pe25ruh6Laz6L+Z5Lqb5p2h5Lu244CCYDplLndoeT8/YE5vbmUgb2YgdGhlICR7ZS5iZWZvcmVGaWx0ZXJzfSBoZXJlIGhhcyBhbGwgb2YgdGhvc2UgdG9nZXRoZXIuYCl9PC9kaXY+YCxJZyhlLCIiLFN0cmluZyhlLmFzaz8uc29ydD8/Imdyb3VwIikpXS5qb2luKCIiKTtpZighdC5sZW5ndGgpe2NvbnN0IG89U3RyaW5nKGUuYXNrPy5jaXR5Pz9lLnF1ZXJ5Pz9lLndpZGVuZWQ/LmZyb20/PyIiKTtyZXR1cm5gJHtufQogICAgICA8ZGl2IGNsYXNzPSJzdGF0ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke0Uuc2VhcmNofTwvZGl2PgogICAgICAgIDxoMiBjbGFzcz0ic3RhdGUtdCI+JHtvP2woYyhgTm90aGluZyBpbiDigJwke2994oCdYCxg4oCcJHtvfeKAneayoeaciee7k+aenGApKTpjKCJObyBob3RlbHMgbWF0Y2giLCLmsqHmnInnrKblkIjmnaHku7bnmoTphZLlupciKX08L2gyPgogICAgICAgIDxwIGNsYXNzPSJzdGF0ZS1kIj4ke28/bChjKGBObyBob3RlbCBoZXJlIGlzIGluIG9yIG5lYXIg4oCcJHtvfeKAnS4gVHJ5IGEgY2l0eSBvciBhIGNvdW50cnkuYCxg6L+Z6YeM5rKh5pyJ5L2N5LqO4oCcJHtvfeKAneaIlumZhOi/keeahOmFkuW6l+OAguaNouS4quWfjuW4guaIluWbveWutuivleivleOAgmApKTpjKCJUcnkgYSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbCBuYW1lLiIsIuaNouS4quWfjuW4guOAgeWbveWutuaIlumFkuW6l+WQjeivleivleOAgiIpfTwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2ggcmV0cnkiPgogICAgICAgICAgPGxhYmVsIGNsYXNzPSJ3aGVyZSI+JHtFLnNlYXJjaH08aW5wdXQgaWQ9IndoZXJlIiB0eXBlPSJzZWFyY2giIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJDaXR5IG9yIGhvdGVsIiwi5Z+O5biC5oiW6YWS5bqX5ZCNIil9IiBhcmlhLWxhYmVsPSIke2MoIldoZXJlIHRvIiwi55uu55qE5ZywIil9Ij48L2xhYmVsPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZpbmQiPiR7YygiU2VhcmNoIiwi5pCc57SiIil9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7RS5waW59JHtjKCJTZWUgZXZlcnkgZGVzdGluYXRpb24iLCLmn6XnnIvlhajpg6jnm67nmoTlnLAiKX08L2J1dHRvbj48L2Rpdj4KICAgICAgPC9kaXY+YH1yZXR1cm5bbixgPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChjKGBOb3RoaW5nIGNhbWUgaW4gdW5kZXIgdGhlIHByaWNlIGNlaWxpbmcuICR7dC5sZW5ndGg9PT0xPyJUaGUgbmVhcmVzdCBpcyI6IlRoZSBuZWFyZXN0IGFyZSJ9IG92ZXIgaXQuYCwi5rKh5pyJ5L2O5LqO5Lu35qC85LiK6ZmQ55qE6YWS5bqX44CC5Lul5LiL5piv5pyA5o6l6L+R55qE5Yeg5a6277yM5Lu35qC855Wl6auY44CCIikpfTwvZGl2PmAsYDxkaXYgY2xhc3M9InRpbGVzIj4ke3QubWFwKG89PmAKICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSBvdmVyIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChvLmlkKX0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0LXNob3QiIHN0eWxlPSIke2d0KFN0cmluZyhvLmlkKSl9Ij4KICAgICAgICAgICR7by5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChvLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKGJ0KFN0cmluZyhvLm5hbWUpKSl9PC9zcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idC1ib2R5Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW5hbWUiPiR7bChvLm5hbWUpfTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LXdoZXJlIj4ke2woW28uYXJlYSxvLmNpdHldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWZvb3QiPgogICAgICAgICAgICAke3pnKG8pfQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiI+JHtjKCJPdmVyIiwi6LaF5Ye6Iil9PC9zcGFuPgogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YF0uam9pbigiIil9LFBnPWU9Pntjb25zdCB0PVtlLmFyZWEsZS5jaXR5LFN0cmluZyhlLmNvdW50cnk/PyIiKS5zdGFydHNXaXRoKFN0cmluZyhlLmNpdHkpKXx8b2U9PT0iemgiJiYhZW4oU3RyaW5nKGUuY291bnRyeT8/IiIpKT8iIjplLmNvdW50cnldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIik7cmV0dXJuYAogIDxkaXYgY2xhc3M9Imhlcm8iIHN0eWxlPSIke2d0KFN0cmluZyhlLmlkKSl9Ij4KICAgICR7ZS5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChlLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKGJ0KFN0cmluZyhlLm5hbWUpKSl9PC9zcGFuPgogICAgPGRpdiBjbGFzcz0iaGVyby10eHQiPgogICAgICAke0VuKGUpJiYhU3RyaW5nKGUubmFtZSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhFbihlKS50b0xvd2VyQ2FzZSgpKT9gPHNwYW4gY2xhc3M9InQtYnJhbmQiPiR7bChFbihlKSl9PC9zcGFuPmA6IiJ9CiAgICAgIDxoMiBjbGFzcz0iaG90ZWwtbmFtZSI+JHtadChlLm5hbWUpfTwvaDI+CiAgICAgIDxkaXYgY2xhc3M9Imhlcm8td2hlcmUiPjxzcGFuPiR7bCh0KX08L3NwYW4+JHtlLnJhdGluZz9gPHNwYW4gY2xhc3M9InJhdGUiPiR7Zmd9JHtsKGUucmF0aW5nLnZhbHVlKX08c21hbGw+KCR7bChOdW1iZXIoZS5yYXRpbmcuY291bnQpLnRvTG9jYWxlU3RyaW5nKCJlbi1HQiIpKX0pPC9zbWFsbD48L3NwYW4+YDoiIn08L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogICR7ZS5zdW1tYXJ5Py9eXHMqKOaooeaLn+aVsOaNrnxzaW11bGF0ZWR8dGVzdCBkYXRhKS9pLnRlc3QoU3RyaW5nKGUuc3VtbWFyeSkpP2A8ZGl2IGNsYXNzPSJoLXN1bSBzaW0tbm90ZSI+JHtFLmluZm99PHNwYW4+JHtsKGUuc3VtbWFyeSl9PC9zcGFuPjwvZGl2PmA6YDxkaXYgY2xhc3M9Imgtc3VtIj4ke2woZS5zdW1tYXJ5KX08L2Rpdj5gOiIifQogICR7KGUuYW1lbml0aWVzPz9bXSkubGVuZ3RoP2A8dWwgY2xhc3M9ImFtZW4iIGFyaWEtbGFiZWw9IiR7YygiV2hhdCB0aGUgaG90ZWwgaGFzIiwi6YWS5bqX6K6+5pa9Iil9Ij4ke2UuYW1lbml0aWVzLnNsaWNlKDAsOCkubWFwKG49PmA8bGk+JHtsKG4pfTwvbGk+YCkuam9pbigiIil9PC91bD5gOiIifWB9LEVnPXsicm9vbS1vbmx5Ijp7dGV4dDoiUm9vbSBvbmx5Iix6aDoi5LiN5ZCr5pepIn0sYnJlYWtmYXN0Ont0ZXh0OiJCcmVha2Zhc3QiLHpoOiLlkKvml6kifSwiYnJlYWtmYXN0LTEiOnt0ZXh0OiJCcmVha2Zhc3QgZm9yIDEiLHpoOiLljZXml6kifSwiYnJlYWtmYXN0LTIiOnt0ZXh0OiJCcmVha2Zhc3QgZm9yIDIiLHpoOiLlj4zml6kifSwiYnJlYWtmYXN0LTMiOnt0ZXh0OiJCcmVha2Zhc3QgZm9yIDMiLHpoOiLkuInml6kifSxwYWNrYWdlOnt0ZXh0OiJQYWNrYWdlIix6aDoi5aWX6aSQIn0sImZsYXNoLXNhbGUiOnt0ZXh0OiJGbGFzaCBzYWxlIix6aDoi6ZmQ5pe254m55Lu3IixzYXZlOiEwfSwibmlnaHQtc25hY2siOnt0ZXh0OiJMYXRlLW5pZ2h0IHJhdGUiLHpoOiLlpJzlrrXku7ciLHNhdmU6ITB9LCJlYXJseS1ib29raW5nIjp7dGV4dDoiQm9vay1haGVhZCByYXRlIix6aDoi5o+Q5YmN6K6i5LyY5oOgIixzYXZlOiEwfSxwcm9tb3Rpb246e3RleHQ6IlByb21vdGlvbiIsemg6IuS/g+mUgCIsc2F2ZTohMH19LHV1PShlLHQ9bmV3IFNldCk9PltlLmJlZHMmJiF0LmhhcygiYmVkcyIpP2A8bGk+JHtFLmJlZH0ke2woZS5iZWRzKX08L2xpPmA6IiIsdC5oYXMoInNsZWVwcyIpPyIiOmA8bGk+JHtFLnVzZXJzfSR7bChjKGBTbGVlcHMgJHtlLnNsZWVwc31gLGDlj6/kvY8gJHtlLnNsZWVwc30g5Lq6YCkpfSR7TnVtYmVyKGUubWF4Q2hpbGRyZW4pPjA/bChjKGAgwrcgJHtlLm1heENoaWxkcmVufSAke051bWJlcihlLm1heENoaWxkcmVuKT09PTE/ImNoaWxkIjoiY2hpbGRyZW4ifWAsYCDCtyDlj6/luKYgJHtlLm1heENoaWxkcmVufSDlkI3lhL/nq6VgKSk6IiJ9PC9saT5gLGUuc2l6ZVNxbT9gPGxpPiR7RS5zaXplfSR7bChlLnNpemVTcW0pfSBtwrI8L2xpPmA6IiIsZS52aWV3JiYhdC5oYXMoInZpZXciKT9gPGxpPiR7L3dpbmRvd3znqpcvaS50ZXN0KFN0cmluZyhlLnZpZXcpKT9FLndpbmRvdzpFLnZpZXd9JHtsKFh0KGUudmlldykpfTwvbGk+YDoiIl0uam9pbigiIiksZHU9ZT0+e2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLmxhYmVscyk/ZS5sYWJlbHM6W107cmV0dXJuW2UuYnJlYWtmYXN0JiYhdC5zb21lKG49Pm4uc3RhcnRzV2l0aCgiYnJlYWtmYXN0IikpP2A8bGkgY2xhc3M9InBlcmsiPiR7RS5jdXB9PHNwYW4+JHtjKCI8Yj5CcmVha2Zhc3Q8L2I+IGluY2x1ZGVkIiwiPGI+5ZCr5pep6aSQPC9iPiIpfTwvc3Bhbj48L2xpPmA6IiIsZS5ob3VybHk/IiI6ZS5yZWZ1bmRhYmxlP2A8bGkgY2xhc3M9InBlcmsiPiR7RS5jaGVja308c3Bhbj48Yj4ke2MoIkZyZWUgY2FuY2VsbGF0aW9uIiwi5YWN6LS55Y+W5raIIil9PC9iPiR7ZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWw/bChjKGAgdW50aWwgJHtTdHJpbmcoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpLnJlcGxhY2UoLyAvZywiwqAiKX1gLGDvvIwke1h0KGUuZnJlZUNhbmNlbGxhdGlvbkxvY2FsKX0g5YmNYCkpOiIifTwvc3Bhbj48L2xpPmA6YDxsaSBjbGFzcz0icGVyayB3YXJuIj4ke0UuYWxlcnR9PHNwYW4+PGI+JHtjKCJOb24tcmVmdW5kYWJsZSIsIuS4jeWPr+WPlua2iCIpfTwvYj4ke2MoIiDigJQgdGhpcyByYXRlIGNhbm5vdCBiZSBjYW5jZWxsZWQiLCLvvIzmraTku7fmoLzorqLlkI7kuI3og73pgIDmlLkiKX08L3NwYW4+PC9saT5gLGUubWVtYmVyUmF0ZT9gPGxpIGNsYXNzPSJwZXJrIHNhdmUiPiR7RS50YWd9PHNwYW4+PGI+JHtsKGMoYCR7ZS5tZW1iZXJSYXRlLnRpZXJ9IG1lbWJlciByYXRlYCxgJHtlLm1lbWJlclJhdGUudGllcn3kvJrlkZjku7dgKSl9PC9iPiR7YygiIGFwcGxpZWQiLCLlt7LnlJ/mlYgiKX08L3NwYW4+PC9saT5gOiIiLGUucGF5bWVudD09PSJwcmVwYWlkIj9gPGxpIGNsYXNzPSJwZXJrIj4ke0UubG9ja308c3Bhbj48Yj4ke2MoIlBhaWQgaW4gYWR2YW5jZSIsIumcgOmihOS7mCIpfTwvYj48L3NwYW4+PC9saT5gOiIiXS5qb2luKCIiKX0scHU9ZT0+e2NvbnN0IG49KEFycmF5LmlzQXJyYXkoZS5sYWJlbHMpP2UubGFiZWxzOltdKS5tYXAobz0+RWdbb10pLmZpbHRlcihCb29sZWFuKS5tYXAobz0+YDxzcGFuIGNsYXNzPSJiYWRnZSR7bz8uc2F2ZT8iIGdvb2QiOiIifSI+JHtsKGMobz8udGV4dD8/IiIsbz8uemg/PyIiKSl9PC9zcGFuPmApO3JldHVybiBuLmxlbmd0aD9gPGRpdiBjbGFzcz0iYmFkZ2VzIj4ke24uam9pbigiIil9PC9kaXY+YDoiIn0sYV89e1dpbmRvdzoi5pyJ56qXIiwiTm8gd2luZG93Ijoi5peg56qXIiwiUm9vbSBvbmx5Ijoi5LiN5ZCr5pepIiwiQnJlYWtmYXN0IGluY2x1ZGVkIjoi5ZCr5pepIixDaXR5OiLln47mma8ifSxtZD1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGZkPVsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWHQ9ZT0+e2NvbnN0IHQ9U3RyaW5nKGU/PyIiKTtyZXR1cm4gb2UhPT0iemgiP3Q6dC5zcGxpdCgiIMK3ICIpLm1hcChuPT57Y29uc3Qgbz0vXihcd3szfSkgKFxkezEsMn0pIChcd3szfSksPyAoXGR7MSwyfTpcZHsyfSkkLy5leGVjKG4udHJpbSgpKTtyZXR1cm4gbyYmbWQuaW5jbHVkZXMob1szXT8/IiIpJiZmZC5pbmNsdWRlcyhvWzFdPz8iIik/YCR7bWQuaW5kZXhPZihvWzNdPz8iIikrMX3mnIgke29bMl195pelICR7Z2dbZmQuaW5kZXhPZihvWzFdPz8iIildfSAke29bNF19YDphX1tuLnRyaW0oKV0/P259KS5qb2luKCIgwrcgIil9LGNfPShlLHQsbik9Pntjb25zdFtvLHNdPXQuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKSxyPShvPz8wKSo2MCsocz8/MCkrbio2MCxpPWAke1N0cmluZyhNYXRoLmZsb29yKHIvNjApJTI0KS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKHIlNjApLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmAke19lKGUpfSDCtyAke3R94oCTJHtpfSDCtyAke259ICR7bj09PTE/ImhvdXIiOiJob3VycyJ9YH0sZWk9KGUsdCk9PnQ/LnN0YXJ0JiZlPy5jaGVja0luP2NfKFN0cmluZyhlLmNoZWNrSW4pLFN0cmluZyh0LnN0YXJ0KSxOdW1iZXIodC5ob3VycykpOktvKGUpLHRpPShlLHQpPT57aWYoIWU/LmNoZWNrSW58fCFlPy5jaGVja091dClyZXR1cm4iIjtjb25zdCBuPShzLHIsaT0iIik9Pntjb25zdCBhPVZlKHIpO3JldHVybmA8ZGl2IGNsYXNzPSJiYW5kLWQiPjxzcGFuIGNsYXNzPSJ3bCI+JHtzfTwvc3Bhbj48c3BhbiBjbGFzcz0id3YiPiR7bChhLm1kKX08c21hbGw+JHtsKGEuZG93KX0ke2l9PC9zbWFsbD48L3NwYW4+PC9kaXY+YH07aWYodD8uc3RhcnQpe2NvbnN0W3Mscl09U3RyaW5nKHQuc3RhcnQpLnNwbGl0KCI6IikubWFwKE51bWJlciksaT0ocz8/MCkqNjArKHI/PzApK051bWJlcih0LmhvdXJzKSo2MCxhPWAke1N0cmluZyhNYXRoLmZsb29yKGkvNjApJTI0KS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKGklNjApLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmA8ZGl2IGNsYXNzPSJiYW5kIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtsKGVpKGUsdCkpfSI+JHtuKGMoIkFycml2ZSIsIuWIsOW6lyIpLGUuY2hlY2tJbixgICR7bCh0LnN0YXJ0KX1gKX08c3BhbiBjbGFzcz0id2hlbi1uIj4ke2woQ3QodC5ob3VycykpfTwvc3Bhbj48ZGl2IGNsYXNzPSJiYW5kLWQiPjxzcGFuIGNsYXNzPSJ3bCI+JHtjKCJMZWF2ZSBieSIsIuacgOaZmuemu+W6lyIpfTwvc3Bhbj48c3BhbiBjbGFzcz0id3YiPiR7bChhKX08L3NwYW4+PC9kaXY+PC9kaXY+YH1jb25zdCBvPU51bWJlcihlLmd1ZXN0cyk+MD9sXyhOdW1iZXIoZS5ndWVzdHMpKToiIjtyZXR1cm5gPGRpdiBjbGFzcz0iYmFuZCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7bChbS28oZSksb10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiwgIikpfSI+JHtuKGMoIkNoZWNrLWluIiwi5YWl5L2PIiksZS5jaGVja0luKX08c3BhbiBjbGFzcz0id2hlbi1uIj4ke2wocGUoRWUoZS5jaGVja0luLGUuY2hlY2tPdXQpKSl9JHtvP2A8c21hbGw+JHtsKG8pfTwvc21hbGw+YDoiIn08L3NwYW4+JHtuKGMoIkNoZWNrLW91dCIsIuemu+W6lyIpLGUuY2hlY2tPdXQpfTwvZGl2PmB9LGxfPWU9PmMoYCR7ZX0gJHtlPT09MT8iZ3Vlc3QiOiJndWVzdHMifWAsYCR7ZX3kvY1gKSxSZz1lPT57Y29uc3QgdD11PT57Y29uc3QgZD0vXihcZHsxLDJ9KTooXGR7Mn0pJC8uZXhlYyhTdHJpbmcodT8/IiIpKTtyZXR1cm4gZD9OdW1iZXIoZFsxXSkqNjArTnVtYmVyKGRbMl0pOnZvaWQgMH0sbj10KGU/LmVhcmxpZXN0U3RhcnQpLG89dChlPy5sYXRlc3RTdGFydCkscz10KGU/LmxhdGVzdEVuZCk/PzE0NDAscj1OdW1iZXIoZT8uaG91cnMpfHwwO2lmKG49PT12b2lkIDB8fG89PT12b2lkIDApcmV0dXJuW107Y29uc3QgaT1NYXRoLmNlaWwobi81KSo1LGE9aTw9bz9baV06W107Zm9yKGxldCB1PU1hdGguY2VpbCgoaSsxKS82MCkqNjA7dTw9bzt1Kz02MClhLnB1c2godSk7cmV0dXJuIGEuZmlsdGVyKHU9PnU8PW8mJnUrcio2MDw9cykubWFwKHU9PmAke1N0cmluZyhNYXRoLmZsb29yKHUvNjApKS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKHUlNjApLnBhZFN0YXJ0KDIsIjAiKX1gKX0scnM9KGUsdCk9Pntjb25zdCBuPS9eKFxkezEsMn0pOihcZHsyfSkkLy5leGVjKGUpO2lmKCFuKXJldHVybiBTdHJpbmcodD8ubGF0ZXN0RW5kPz8iIik7Y29uc3Qgbz1OdW1iZXIoblsxXSkqNjArTnVtYmVyKG5bMl0pKyhOdW1iZXIodD8uaG91cnMpfHwwKSo2MCxzPS9eKFxkezEsMn0pOihcZHsyfSkkLy5leGVjKFN0cmluZyh0Py5sYXRlc3RFbmQ/PyIiKSkscj1zP051bWJlcihzWzFdKSo2MCtOdW1iZXIoc1syXSk6byxpPU1hdGgubWluKG8scik7cmV0dXJuYCR7U3RyaW5nKE1hdGguZmxvb3IoaS82MCklMjQpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcoaSU2MCkucGFkU3RhcnQoMiwiMCIpfWB9LGh1PW5ldyBNYXAsbXU9KGUsdCxuLG8pPT57Y29uc3Qgcz10LmhvdXJseT9SZyh0LmhvdXJseSk6W10scj10LmhvdXJseT9odS5nZXQoU3RyaW5nKHQuaWQpKT8/c1swXT8/IiI6IiI7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJyb29tLWJ1eSI+CiAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPgogICAgICAgICAgJHt0LnB1YmxpY1N0YXlUb3RhbD9gPGRpdiBjbGFzcz0icC13YXMiPiR7bCh0LnB1YmxpY1Jvb21zVG90YWw/P3QucHVibGljU3RheVRvdGFsKX08L2Rpdj5gOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0icC10b3RhbCI+JHtsKHQucm9vbXNUb3RhbD8/dC5zdGF5VG90YWwpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke3QuaG91cmx5P2woYyhgRm9yICR7Q3QodC5ob3VybHkuaG91cnMpfSR7VT4xP2AsICR7VX0gcm9vbXNgOiIifSwgdGF4ZXMgaW5gLGAke0N0KHQuaG91cmx5LmhvdXJzKX0ke1U+MT9g44CBJHtVfemXtGA6IiJ977yM5ZCr56iO6LS5YCkpOmwoYyhgVG90YWwgZm9yICR7cGUoRWUobi5jaGVja0luLG4uY2hlY2tPdXQpKX0ke1U+MT9gLCAke1V9IHJvb21zYDoiIn0sIHRheGVzIGluYCxgJHtwZShFZShuLmNoZWNrSW4sbi5jaGVja091dCkpfSR7VT4xP2DjgIEke1V96Ze0YDoiIn3mgLvku7fvvIzlkKvnqI7otLlgKSl9PC9kaXY+CiAgICAgICAgICAke3QuaG91cmx5PyIiOmA8ZGl2IGNsYXNzPSJwLW5pZ2h0Ij4ke2woYyhgUm9vbSByYXRlICR7dC5uaWdodGx5fSBhIG5pZ2h0YCxg5oi/5Lu35q+P5pmaICR7dC5uaWdodGx5fWApKX08L2Rpdj5gfQogICAgICAgICAgJHt0Lm1lbWJlclJhdGU/YDxkaXYgY2xhc3M9InAtbWVtYmVyIj4ke2woYyhgJHt0Lm1lbWJlclJhdGUudGllcn0gcmF0ZWAsYCR7dC5tZW1iZXJSYXRlLnRpZXJ95Lu3YCkpfTwvZGl2PmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke28/YCR7VHMoYGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iYCxvLFN0cmluZyh0Lm5hbWUpLFUpfTxidXR0b24gY2xhc3M9ImdvIHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJ0cmlwIj4ke2MoIlJldmlldyIsIuWOu+aguOWvuSIpfSR7RS5hcnJvd308L2J1dHRvbj5gOnQuaG91cmx5P2A8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImdvIGFkZCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woVSl9IiBkYXRhLXN0YXJ0PSIke2wocil9IiR7cj8iIjoiIGRpc2FibGVkIn0gYXJpYS1sYWJlbD0iJHtsKGMoYFJlc2VydmUgJHt0Lm5hbWV9IGZyb20gJHtyfWAsYOmihOiuoiR7dC5uYW1lfe+8jCR7cn3liLDlupdgKSl9Ij4ke2MoIlJlc2VydmUiLCLpooTorqIiKX0ke3I/YCDCtyAke2wocil9YDoiIn08L2J1dHRvbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImdvIGFkZCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woVSl9IiBhcmlhLWxhYmVsPSIke2woYyhgUmVzZXJ2ZSAke3QubmFtZX1gLGDpooTorqIke3QubmFtZX1gKSl9Ij4ke2MoIlJlc2VydmUiLCLpooTorqIiKX08L2J1dHRvbj5gfTwvZGl2PgogICAgICA8L2Rpdj5gfSxPZz1lPT5OdW1iZXIoZS5yb29tc0xlZnQpPD0zP2A8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiBsZWZ0Ij4ke0UuY2xvY2t9JHtsKGMoYCR7ZS5yb29tc0xlZnR9IGxlZnQgYXQgdGhpcyByYXRlYCxg5q2k5Lu35qC85LuF5YmpICR7ZS5yb29tc0xlZnR9IOmXtGApKX08L3NwYW4+YDoiIix1Xz0oZSx0KT0+e2NvbnN0IG49bmV3IFNldDtpZighdClyZXR1cm57bGVhZDoiIixzYWlkOm59O2NvbnN0IG89W107ZS52aWV3JiZlLnZpZXchPT10LnZpZXcmJihvLnB1c2goWHQoZS52aWV3KSksbi5hZGQoInZpZXciKSksZS5iZWRzJiZlLmJlZHMhPT10LmJlZHMmJihvLnB1c2goU3RyaW5nKGUuYmVkcykpLG4uYWRkKCJiZWRzIikpO2NvbnN0IHM9TnVtYmVyKGUuc2l6ZVNxbSkscj1OdW1iZXIodC5zaXplU3FtKTtzJiZyJiZzIT09ciYmby5wdXNoKHM+cj9jKGAke3Mtcn0gbcKyIGxhcmdlcmAsYOmdouenr+WkpyAke3Mtcn0gbcKyYCk6YyhgJHtyLXN9IG3CsiBzbWFsbGVyYCxg6Z2i56ev5bCPICR7ci1zfSBtwrJgKSksTnVtYmVyKGUuc2xlZXBzKT5OdW1iZXIodC5zbGVlcHMpJiYoby5wdXNoKGMoYHNsZWVwcyAke2Uuc2xlZXBzfWAsYOWPr+S9jyAke2Uuc2xlZXBzfSDkurpgKSksbi5hZGQoInNsZWVwcyIpKTtjb25zdCBpPVN0cmluZyh0LnJvb21UeXBlPy5uYW1lPz90Lm5hbWU/PyIiKTtyZXR1cm57bGVhZDpvLmxlbmd0aD9gPHAgY2xhc3M9InJvb20tbGVhZCI+PHNwYW4gY2xhc3M9ImxlYWQtayI+JHtsKGMoYFVubGlrZSAke2l9YCxg55u45q+UJHtpfWApKX08L3NwYW4+JHtsKG8uc2xpY2UoMCwzKS5qb2luKCIgwrcgIikpfTwvcD5gOiIiLHNhaWQ6bn19LGRfPShlLHQsbixvKT0+e2NvbnN0IHM9U3MoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKTtyZXR1cm5gCiAgICA8YXJ0aWNsZSBjbGFzcz0icm9vbSR7cz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2d0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwoYnQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5uYW1lKX08L2gzPgogICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgPHVsIGNsYXNzPSJmYWN0cyI+JHt1dSh0LG8/LnNhaWQpfTwvdWw+CiAgICAgICAgJHtwdSh0KX0KICAgICAgICA8dWwgY2xhc3M9InBlcmtzIj4ke2R1KHQpfTwvdWw+CiAgICAgICAgJHtPZyh0KX0KICAgICAgPC9kaXY+CiAgICAgICR7bXUoZSx0LG4scyl9CiAgICA8L2FydGljbGU+YH0scF89KGUsdCxuLG8pPT57Y29uc3Qgcz10WzBdPz97fSxyPVN0cmluZyhzLnJvb21UeXBlPy5uYW1lPz9zLm5hbWUpO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJydHlwZSR7dC5zb21lKGE9PlNzKFN0cmluZyhlLmlkKSxTdHJpbmcoYS5pZCksbik+MCk/IiBoZWxkIjoiIn0iPgogICAgICA8ZGl2IGNsYXNzPSJydHlwZS1oZWFkIj4KICAgICAgICA8c3BhbiBjbGFzcz0icm9vbS1zaG90IiBzdHlsZT0iJHtndChgJHtlLmlkfToke3Mucm9vbVR5cGU/LmlkPz9zLmlkfWApfSI+CiAgICAgICAgICAke3MuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2wocy5pbWFnZVVybCl9IiBhbHQ9IiI+YDpsKGJ0KHIpKX0KICAgICAgICA8L3NwYW4+CiAgICAgICAgPGRpdiBjbGFzcz0icm9vbS1tYWluIj4KICAgICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wocil9PC9oMz4KICAgICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgICA8dWwgY2xhc3M9ImZhY3RzIj4ke3V1KHMsbz8uc2FpZCl9PC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9InJ0eXBlLW4iPiR7bChjKGAke3QubGVuZ3RofSAke3QubGVuZ3RoPT09MT8icmF0ZSI6InJhdGVzIn1gLGAke3QubGVuZ3RofSDnp43ku7fmoLxgKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJyYXRlcyI+JHt0Lm1hcChhPT57Y29uc3QgdT1TcyhTdHJpbmcoZS5pZCksU3RyaW5nKGEuaWQpLG4pO3JldHVybmAKICAgICAgICA8ZGl2IGNsYXNzPSJycmF0ZSR7dT8iIGhlbGQiOiIifSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW1haW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW5hbWUiPiR7bChhLnJhdGU/Lm5hbWU/P2EubmFtZSl9PC9kaXY+CiAgICAgICAgICAgICR7cHUoYSl9CiAgICAgICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7ZHUoYSl9PC91bD4KICAgICAgICAgICAgJHtPZyhhKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHttdShlLGEsbix1KX0KICAgICAgICA8L2Rpdj5gfSkuam9pbigiIil9PC9kaXY+CiAgICA8L2FydGljbGU+YH0saF89KGUsdCxuKT0+e2NvbnN0IG89U3MoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKSxzPVJnKHQuaG91cmx5KSxyPWh1LmdldChTdHJpbmcodC5pZCkpPz9zWzBdO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJyb29tIGhvdXJseSR7bz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2d0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwoYnQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5yb29tVHlwZT8ubmFtZT8/dC5uYW1lKX08c3BhbiBjbGFzcz0icm9vbS1ob3VycyI+IMK3ICR7bChDdCh0LmhvdXJseS5ob3VycykpfTwvc3Bhbj48L2gzPgogICAgICAgIDx1bCBjbGFzcz0iZmFjdHMiPiR7dXUodCl9PC91bD4KICAgICAgICAke3B1KHQpfQogICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7ZHUodCl9PC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGFydHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIlN0YXJ0IHRpbWUiLCLliLDlupfml7bpl7QiKX0iPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkFycml2ZSBhdCIsIuWIsOW6l+aXtumXtCIpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3MubWFwKGk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdXItc3RhcnQ9IiR7bChpKX0iIGRhdGEtcm9vbT0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke2k9PT1yPyJ0cnVlIjoiZmFsc2UifSI+JHtsKGkpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKHI/YyhgJHtyfeKAkyR7cnMocix0LmhvdXJseSl9IMK3IGxlYXZlIGJ5ICR7cnMocix0LmhvdXJseSl9YCxgJHtyfeKAkyR7cnMocix0LmhvdXJseSl9IMK3ICR7cnMocix0LmhvdXJseSl9IOWJjeemu+W6l2ApOmMoYE91dCBieSAke3QuaG91cmx5LmxhdGVzdEVuZH0gYXQgdGhlIGxhdGVzdC5gLGDmnIDmmZogJHt0LmhvdXJseS5sYXRlc3RFbmR9IOemu+W6l+OAgmApKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7bXUoZSx0LG4sbyl9CiAgICA8L2FydGljbGU+YH0sbV89KGUsdCxuKT0+e2NvbnN0IG89dC5maWx0ZXIoYT0+YS5ob3VybHkpLHM9dC5maWx0ZXIoYT0+IWEuaG91cmx5KSxyPVtdLGk9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBzKXtjb25zdCB1PWEucm9vbVR5cGU/LmlkP1N0cmluZyhhLnJvb21UeXBlLmlkKToiIjtpZighdSl7ci5wdXNoKFthXSk7Y29udGludWV9Y29uc3QgZD1pLmdldCh1KTtpZihkKWQucHVzaChhKTtlbHNle2NvbnN0IHA9W2FdO2kuc2V0KHUscCksci5wdXNoKHApfX1yZXR1cm5bci5sZW5ndGg/YDxkaXYgY2xhc3M9InJvb21zIj4ke3IubWFwKChhLHUpPT57Y29uc3QgZD11XyhhWzBdLHJbdS0xXT8uWzBdKTtyZXR1cm4gYS5sZW5ndGg+MXx8YVswXT8ucm9vbVR5cGU/cF8oZSxhLG4sZCk6ZF8oZSxhWzBdLG4sZCl9KS5qb2luKCIiKX08L2Rpdj5gOiIiLG8ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyb29tcyI+JHtvLm1hcChhPT5oXyhlLGEsbikpLmpvaW4oIiIpfTwvZGl2PmA6IiJdLmpvaW4oIiIpfSxOZz17ImhvdXJseS1ub25lIjooKT0+Iui/meWutuS7iuWkqeS4jeWNlumSn+eCueaIv+OAgiIsImhvdXJseS1vdmVyIjplPT5lLmxhc3RTdGFydD9g5LuK5aSp55qE6ZKf54K55oi/5bey57uP57uT5p2f5LqG77yM5pyA5pmaICR7ZS5sYXN0U3RhcnR9IOW8gOWni+OAgmA6IuS7iuWkqeeahOmSn+eCueaIv+W3sue7j+e7k+adn+S6huOAgiIsImhvdXJseS1ub3QteWV0IjplPT5lLm9wZW5zQXQ/YOS7iuWkqeeahOmSn+eCueaIvyAke2Uub3BlbnNBdH0g5byA5Y2W44CCYDoi5LuK5aSp55qE6ZKf54K55oi/6L+Y5rKh5byA5Y2W44CCIixwYXJ0eTplPT5OdW1iZXIoZS5sYXJnZXN0KT4wP051bWJlcihlLnJvb21zKT4wP2DmsqHmnInog73kvY/ov5nkuYjlpJrkurrnmoTmiL/lnovvvJrmnIDlpKfnmoTlj6/kvY8gJHtlLmxhcmdlc3R9IOS6uu+8jOmcgOimgeiuoiAke2Uucm9vbXN9IOmXtOOAgmA6YOS4gOmXtOacgOWkmuS9jyAke2UubGFyZ2VzdH0g5Lq677yM5Lq65pu05aSa6K+355u05o6l6IGU57O76YWS5bqX44CCYDoi5rKh5pyJ6IO95L2P6L+Z5LmI5aSa5Lq655qE5oi/5Z6L44CCIiwic29sZC1vdXQiOmU9PmUuaG91cmx5PyLku4rlpKnnmoTpkp/ngrnmiL/pg73orqLmu6HkuobjgIIiOk51bWJlcihlLnJvb21zKT4xP2Dov5nkupvml6XmnJ/msqHmnInlk6rkuKrmiL/lnovov5jliakgJHtlLnJvb21zfSDpl7TjgIJgOiLov5nkupvml6XmnJ/nmoTmiL/pl7Tpg73orqLmu6HkuobjgIIiLCJwcmVwYWlkLW9ubHkiOigpPT4i6L+Z6YeM5Y+q5pyJ6ZyA6KaB6aKE5LuY55qE5oi/5Lu377yM6L+Z6YeM5Y+q6IO96K6i5Yiw5bqX5LuY5qy+55qE5oi/6Ze044CCIiwidG9vLW1hbnktcm9vbXMiOmU9Pk51bWJlcihlLnJvb21zKT4wP2DmsqHmnInmiL/ku7fog73kuIDmrKHorqIgJHtlLnJvb21zfSDpl7TvvIzor7flsJHorqLlh6Dpl7TjgIJgOiLkuIDmrKHorqLkuI3kuobov5nkuYjlpJrpl7TvvIzor7flsJHorqLlh6Dpl7TjgIIiLCJ0b28tZmFyIjplPT5OdW1iZXIoZS5kYXlzKT4wP2Dov5jmsqHlvIDljZbvvJrlj6rog73orqIgJHtlLmRheXN9IOWkqeS7peWGheeahOaIv+mXtOOAgmA6Iui/mOayoeW8gOWNlu+8muaXpeacn+Wkqui/nOS6huOAgiIsInN0YXktcnVsZSI6ZT0+e2NvbnN0IHQ9ZS5kYXRlP19lKFN0cmluZyhlLmRhdGUpKToi6L+Z5aSpIjtyZXR1cm4gZS5ydWxlPT09Im5vLWFycml2YWwiP2Ake3R95LiN6IO95YWl5L2P44CCYDplLnJ1bGU9PT0ibm8tZGVwYXJ0dXJlIj9gJHt0feS4jeiDvemAgOaIv+OAgmA6ZS5ydWxlPT09Im1pbi1zdGF5Ij9OdW1iZXIoZS5uaWdodHMpPjA/YOiHs+WwkeimgeS9jyAke2UubmlnaHRzfSDmmZrjgIJgOiLkvY/nmoTmmZrmlbDlpKrlsJHkuobjgIIiOmUucnVsZT09PSJtYXgtc3RheSI/TnVtYmVyKGUubmlnaHRzKT4wP2DmnIDlpJrlj6rog73kvY8gJHtlLm5pZ2h0c30g5pma44CCYDoi5L2P55qE5pma5pWw5aSq5aSa5LqG44CCIjoi6L+Z5Lqb5pel5pyf5pyJ5YWl5L2P6ZmQ5Yi277yM5o2i5Liq5pel5pyf6K+V6K+V44CCIn0sY2xvc2VkOigpPT4i6L+Z5Lqb5pel5pyf5LiN5byA5pS+6aKE6K6i44CCIiwibm9uZS1vbi1zYWxlIjooKT0+Iui/meWutumFkuW6l+eahOaIv+mXtOS4jeWcqOi/memHjOWHuuWUruOAgiIsdW5yZWFjaGFibGU6KCk9PiLov5nmrKHmsqHog73mn6XliLDov5nlrrbphZLlupfnmoTmiL/pl7TvvIznqI3lkI7lho3or5XkuIDmrKHjgIIiLCJwcmljZS1jaGFuZ2VkIjooKT0+IuS7t+agvOaIluadoeasvuWSjOS9oOeci+WIsOeahOS4jeS4gOagt+S6hu+8jOaJgOS7peayoeacieaMieaWsOS7t+agvOmihOiuouOAgiIsbGltaXRlZDooKT0+Iui/meS4gOauteaaguaXtuiiq+mihOiuouS4iumZkOaMoeS4i+S6hu+8jOWwkeiuouS4gOS6m+aIlueojeWQjuWGjeivleOAgiIsImRhdGVzLXBhc3QiOmU9PmUudG9kYXk/YOWFpeS9j+aXpeacn+W3sue7j+i/h+WOu+S6hu+8jOS7iuWkqeaYryAke19lKFN0cmluZyhlLnRvZGF5KSl944CCYDoi5YWl5L2P5pel5pyf5bey57uP6L+H5Y675LqG44CCIiwiZGF0ZXMtb3JkZXIiOigpPT4i56a75bqX6KaB5pma5LqO5YWl5L2P77ya5L2P5LiA5pma5bCx5piv56ys5LqM5aSp56a75bqX44CCIiwic3RheS10b28tbG9uZyI6ZT0+TnVtYmVyKGUubmlnaHRzKT4wP2DkuIDmrKHmnIDlpJrorqIgJHtlLm5pZ2h0c30g5pma44CCYDoi5LiA5qyh6K6i5LiN5LqG6L+Z5LmI5aSa5pma44CCIiwic3RheS1pbnZhbGlkIjooKT0+Iuivt+mHjeaWsOmAieWlveWFpeS9j+aXpeacn+WSjOS6uuaVsOOAgiIsdW5hdmFpbGFibGU6KCk9PiLov5nkupvml6XmnJ/ov5nph4zorqLkuI3kuobjgIIifSxJcz0oZSx0LG4pPT57Y29uc3Qgbz1vZT09PSJ6aCImJnR5cGVvZiB0PT0ic3RyaW5nIj9OZ1t0XTp2b2lkIDA7cmV0dXJuIG8/byhuJiZ0eXBlb2Ygbj09Im9iamVjdCI/bjp7fSk6U3RyaW5nKGU/PyIiKX0sZ2Q9KGUsdCxuKT0+e2lmKHQ/dCE9PSJwYXJ0eSI6IS9cYnNsZWVwc1xifGNhbiB0YWtlIFxkKyBndWVzdHMvLnRlc3QoZSkpcmV0dXJuIiI7Y29uc3Qgbz1OdW1iZXIoKHQ9PT0icGFydHkiP24/Lmxhcmdlc3Q6dm9pZCAwKT8/L2xhcmdlc3Qgc2xlZXBzIChcZCspLy5leGVjKGUpPy5bMV0/PzApLHM9Uy5ndWVzdHMqVSxyPW8+MD9NYXRoLm1pbihCdCxNYXRoLmNlaWwocy9vKSk6MCxpPXI/TWF0aC5jZWlsKHMvcik6MDtyZXR1cm5gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke0UudXNlcnN9PC9kaXY+CiAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7bChjKGBObyByb29tIGhlcmUgc2xlZXBzICR7Uy5ndWVzdHN9YCxg6L+Z6YeM5rKh5pyJ5Y+v5L2PICR7Uy5ndWVzdHN9IOS6uueahOaIv+Wei2ApKX08L2gzPgogICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChyJiZpPD1vP2MoYFRoZSBsYXJnZXN0IHNsZWVwcyAke299LiBCb29rICR7cn0gcm9vbXMsIGVhY2ggZm9yIHVwIHRvICR7aX0sIGFuZCB0aGUgJHtzfSBvZiB5b3UgZml0LmAsYOacgOWkp+eahOaIv+Wei+WPr+S9jyAke299IOS6uuOAguiuoiAke3J9IOmXtOOAgeavj+mXtOaMiSAke2l9IOS6uuiuou+8jCR7c30g5Liq5Lq65bCx6IO95L2P5LiL44CCYCk6YygiVHJ5IGZld2VyIGd1ZXN0cyBpbiBlYWNoIHJvb20uIiwi6K+V6K+V5oqK5q+P6Ze05Lq65pWw5pS55bCR44CCIikpfTwvcD4KICAgICR7ciYmaTw9bz9gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1zcGxpdD0iJHtyfToke2l9Ij4ke2woYyhgQm9vayAke3J9IHJvb21zLCAke2l9IGluIGVhY2hgLGDorqIgJHtyfSDpl7TvvIzmr4/pl7TmjIkgJHtpfSDkurpgKSl9PC9idXR0b24+PC9kaXY+YDoiIn0KICA8L2Rpdj5gfSxmXz0oZSx0LG49MCk9PiFBcnJheS5pc0FycmF5KHQpfHx0Lmxlbmd0aDwyPyIiOmAKICA8ZGl2IGNsYXNzPSJzdHJpcC1oIj4ke2woYyhgQXJyaXZlIGFub3RoZXIgZGF5IMK3ICR7cGUobil9IGZyb21gLGDmjaLkuKrml6XlrZDlhaXkvY8gwrcgJHtwZShuKX3otbfku7dgKSl9JHt0LmZpbHRlcihvPT5vLmxvd2VzdCkubGVuZ3RoPjE/YDxzbWFsbCBjbGFzcz0ic3RyaXAta2V5Ij4ke2MoIkdyZWVuOiB0aGUgbG93ZXN0Iiwi57u/6Imy5Li65pyA5L2O5Lu3Iil9PC9zbWFsbD5gOiIifTwvZGl2PgogIDxkaXYgY2xhc3M9ImZsZXgtZGF0ZXMiIHJvbGU9Imdyb3VwIiBzdHlsZT0iLS1uOiR7dC5sZW5ndGh9IiBhcmlhLWxhYmVsPSIke2MoIk5lYXJieSBhcnJpdmFsIGRhdGVzIiwi6ZmE6L+R55qE5YWl5L2P5pel5pyfIil9Ij4KICAgICR7dC5tYXAoKG8scyk9PmA8YnV0dG9uIGNsYXNzPSJmZCR7by5jaG9zZW4/IiBvbiI6IiJ9JHtvLmZyb20/IiI6IiBvdXQifSR7by5iZXN0PyIgYmVzdCI6IiJ9JHtvLmxvd2VzdD8iIGxvd2VzdCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlKX0iIGRhdGEtY2k9IiR7bChvLmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKG8uY2hlY2tPdXQpfSIgYXJpYS1sYWJlbD0iJHtsKGMoYEFycml2ZSAke19lKFN0cmluZyhvLmNoZWNrSW4pKX0ke28uZnJvbT9gLCBmcm9tICR7by5mcm9tfWA6Iiwgbm90aGluZyBsZWZ0In0ke28ubG93ZXN0PyIsIHRoZSBsb3dlc3QiOiIifWAsYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfeWFpeS9jyR7by5mcm9tP2DvvIwke28uZnJvbX3otbdgOiLvvIzlt7Lmu6EifSR7by5sb3dlc3Q/Iu+8jOacgOS9juS7tyI6IiJ9YCkpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZkLWRheSI+JHtzPT09MHx8VmUoU3RyaW5nKG8uY2hlY2tJbikpLm1vbiE9PVZlKFN0cmluZyh0W3MtMV0/LmNoZWNrSW4pKS5tb24/YDxzcGFuIGNsYXNzPSJmZC1tb24iPiR7bChWZShTdHJpbmcoby5jaGVja0luKSkubW9uKX08L3NwYW4+YDonPHNwYW4gY2xhc3M9ImZkLW1vbiIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvc3Bhbj4nfTxzcGFuIGNsYXNzPSJmZC1kb3ciPiR7bChWZShTdHJpbmcoby5jaGVja0luKSkuZG93KX08L3NwYW4+PHNwYW4gY2xhc3M9ImZkLWRuIj4ke2woVmUoU3RyaW5nKG8uY2hlY2tJbikpLmRheSl9PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iZmQtcHJpY2UiPiR7by5mcm9tP2woby5mcm9tKTpjKCJGdWxsIiwi5bey5ruhIil9PC9zcGFuPiR7by5sb3dlc3QmJnQuZmlsdGVyKHI9PnIubG93ZXN0KS5sZW5ndGg9PT0xP2A8c3BhbiBjbGFzcz0iZmQtbG93Ij4ke2MoIkxvd2VzdCIsIuacgOS9jiIpfTwvc3Bhbj5gOiIifQogICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gLGJkPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5yb29tcz8/W10sbz1lLnN0YXk/P1Mscz1uLmxlbmd0aD4wJiZuLmV2ZXJ5KGk9PmkuaG91cmx5KXx8ISFlLmhvdXJseSYmISFvPy5jaGVja0luJiZvLmNoZWNrSW49PT1vLmNoZWNrT3V0LHI9bmV3IFNldChuLm1hcChpPT5TdHJpbmcoaS5yb29tVHlwZT8uaWQ/P2kuaWQpKSkuc2l6ZTtyZXR1cm5bUGcodCksZS5ob3VybHkmJnQuc2VsbHNIb3VybHkhPT0hMT9gPGRpdiBjbGFzcz0ic2VnIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJIb3cgbG9uZyIsIuWFpeS9j+aWueW8jyIpfSI+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9Im5pZ2h0bHkiIGFyaWEtcHJlc3NlZD0iJHtzPyJmYWxzZSI6InRydWUifSI+JHtFLmNhbGVuZGFyfSR7YygiT3Zlcm5pZ2h0Iiwi5oyJ5pmaIil9PC9idXR0b24+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9ImhvdXJseSIgZGF0YS1ob3RlbC1pZD0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke3M/InRydWUiOiJmYWxzZSJ9Ij4ke0UuY2xvY2t9JHtjKCJCeSB0aGUgaG91ciDCtyB0b2RheSIsIumSn+eCueaIvyDCtyDku4rlpKkiKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YDoiIixzPyIiOiRnKFN0cmluZyh0LmlkKSx0LnRvZGF5VGhlcmUpLHN8fGUubm9Sb29tcyYmZ2QoU3RyaW5nKGUubm9Sb29tcyksZS5ub1Jvb21zQ29kZSxlLm5vUm9vbXNBcmdzKT8iIjpmXyhTdHJpbmcodC5pZCksZS5kYXRlcyxFZShvLmNoZWNrSW4sby5jaGVja091dCkpLGUubmVlZHNEYXRlcz9gPGRpdiBjbGFzcz0ic2tlbCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxhYmVsPSIke2MoIkxvb2tpbmcgdXAgcm9vbXMiLCLmraPlnKjmn6Xor6LmiL/pl7QiKX0iPjxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj48L2Rpdj5gOmUubm9Sb29tcyYmcz9gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke0UuY2xvY2t9PC9kaXY+CiAgICAgICAgICAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7YygiTm8gcm9vbXMgYnkgdGhlIGhvdXIgdG9kYXkiLCLku4rlpKnmsqHmnInpkp/ngrnmiL8iKX08L2gzPgogICAgICAgICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChJcyhlLm5vUm9vbXMsZS5ub1Jvb21zQ29kZSx7Li4uZS5ub1Jvb21zQXJncz8/e30saG91cmx5OiEwfSkpfTwvcD4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im5pZ2h0bHkiPiR7RS5jYWxlbmRhcn0ke2MoIlNlZSByb29tcyBmb3IgYSBuaWdodCIsIueci+aMieaZmuWFpeS9j+eahOaIv+mXtCIpfTwvYnV0dG9uPjwvZGl2PgogICAgICAgICAgIDwvZGl2PmA6ZS5ub1Jvb21zP2dkKFN0cmluZyhlLm5vUm9vbXMpLGUubm9Sb29tc0NvZGUsZS5ub1Jvb21zQXJncyl8fGA8ZGl2IGNsYXNzPSJlcnIiPiR7bChJcyhlLm5vUm9vbXMsZS5ub1Jvb21zQ29kZSxlLm5vUm9vbXNBcmdzKSl9PC9kaXY+YDpgPGgzIGNsYXNzPSJzZWMiPiR7cz9jKCJCeSB0aGUgaG91ciwgdG9kYXkiLCLku4rml6Xpkp/ngrnmiL8iKTpjKCJDaG9vc2UgeW91ciByb29tIiwi6YCJ5oup5oi/5Z6LIil9IDxzbWFsbCBjbGFzcz0ic2VjLW4iPiR7bChzP2MoYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyBwaWNrIHdoZW4geW91IGFycml2ZSDCtyB0YXhlcyBpbmAsYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyDpgInlpb3liLDlupfml7bpl7Qgwrcg5ZCr56iO6LS5YCk6YyhgJHtyfSByb29tICR7cj09PTE/InR5cGUiOiJ0eXBlcyJ9JHtOdW1iZXIoby5ndWVzdHMpIT09Mj9gIHRoYXQgJHtyPT09MT8ic2xlZXBzIjoic2xlZXAifSAke28uZ3Vlc3RzfWA6IiJ9JHtuLmxlbmd0aD5yP2AsICR7bi5sZW5ndGh9IHJhdGVzYDoiIn0gwrcgcHJpY2VzIGZvciAke3BlKEVlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl9LCB0YXhlcyBpbmAsYCR7cn0g56eNJHtOdW1iZXIoby5ndWVzdHMpIT09Mj9g5Y+v5L2PICR7by5ndWVzdHN9IOS6uueahGA6IiJ95oi/5Z6LJHtuLmxlbmd0aD5yP2DjgIEke24ubGVuZ3RofSDnp43ku7fmoLxgOiIifSDCtyAke3BlKEVlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl95ZCr56iO5oC75Lu3YCkpfTwvc21hbGw+PC9oMz4KICAgICAgICAgICAke21fKHQsbixvKX1gLChlLmV4dHJhcz8/W10pLmxlbmd0aHx8KGUucG9saWNpZXM/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9Imdvb2QtdG8ta25vdyI+CiAgICAgICAgICAgPGgzIGNsYXNzPSJzZWMiPiR7YygiR29vZCB0byBrbm93Iiwi5YWl5L2P6aG755+lIil9PC9oMz4KICAgICAgICAgICAkeyhlLnBvbGljaWVzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJsaW5rcyI+JHtlLnBvbGljaWVzLm1hcChpPT5gPGJ1dHRvbiBjbGFzcz0ibGluay1yb3ciIHR5cGU9ImJ1dHRvbiIgZGF0YS1wb2xpY3k9IiR7bChpLnRvcGljKX0iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPjxzcGFuPiR7bChpLnRpdGxlKX08L3NwYW4+JHtFLmNoZXZSfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgJHsoZS5leHRyYXM/P1tdKS5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1leHRyYXM9IiR7bCh0LmlkKX0iPiR7YygiQWRkLW9ucyBhbmQgZXhwZXJpZW5jZXMiLCLpmYTliqDmnI3liqHlkozkvZPpqowiKX0ke0UuYXJyb3d9PC9idXR0b24+YDoiIn0KICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LGdfPXsicGVyc29uLW5pZ2h0IjpbInBlciBwZXJzb24gcGVyIG5pZ2h0Iiwi5q+P5Lq65q+P5pmaIl0sbmlnaHQ6WyJwZXIgbmlnaHQiLCLmr4/mmZoiXSxzdGF5OlsicGVyIHN0YXkiLCLmr4/mrKHlhaXkvY8iXSxwZXJzb246WyJwZXIgcGVyc29uIiwi5q+P5Lq6Il0saXRlbTpbImVhY2giLCLmr4/ku70iXSx0cmlwOlsicGVyIHRyaXAiLCLmr4/otp8iXX0sdmQ9ZT0+e2NvbnN0IHQ9Z19bU3RyaW5nKGUpXTtyZXR1cm4gdD9jKHRbMF0sdFsxXSk6YyhgcGVyICR7ZX1gLGDmr48ke2V9YCl9LGJfPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5leHRyYXM/P1tdLG89ZS5mb3JCb29raW5nO3JldHVybiBvP1tgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChjKGBBZGQtb25zIGZvciAke28uY29uZmlybWF0aW9uQ29kZX1gLGAke28uY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCkpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bCh0Lm5hbWUpfSDCtyAke2woS28oby5zdGF5KSl9PC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0icm93cyI+JHtuLm1hcChzPT5gCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2wocy5uYW1lKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke2wodmQocy5wZXIpKX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke1RzKGBkYXRhLWJvb2tpbmctZXh0cmE9IiR7bChzLmlkKX0iIGRhdGEtYm9va2luZz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9ImAsTnVtYmVyKG8uaGVsZD8uW3MuaWRdPz8wKSxTdHJpbmcocy5uYW1lKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJFYWNoIGNoYW5nZSBpcyBzaG93biB3aXRoIGl0cyBuZXcgdG90YWwgYmVmb3JlIGFueXRoaW5nIG1vdmVzLiBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4iLCLmr4/mrKHmlLnliqjpg73kvJrlhYjmmL7npLrmlrDnmoTmgLvku7fvvIznoa7orqTlkI7miY3nlJ/mlYjjgILov5nph4zkuI3miaPmrL7jgIIiKX08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiQmFjayB0byB5b3VyIGJvb2tpbmdzIiwi6L+U5Zue5oiR55qE6aKE6K6iIil9PC9idXR0b24+YF0uam9pbigiIik6W2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKHQubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtjKCJXaGF0IGl0IG9mZmVycyBiZXNpZGUgdGhlIHJvb20iLCLmiL/pl7Tku6XlpJbnmoTpmYTliqDmnI3liqEiKX08L2Rpdj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJyb3dzIj4ke24ubWFwKHM9PmAKICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChzLm5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtsKHZkKHMucGVyKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke1RzKGBkYXRhLWFkZC1leHRyYT0iJHtsKHMuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSJgLFd3KFN0cmluZyh0LmlkKSxTdHJpbmcocy5pZCkpLFN0cmluZyhzLm5hbWUpKX08L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSI+JHtsKGMoYEJhY2sgdG8gJHt0Lm5hbWV9YCxg6L+U5ZueJHt0Lm5hbWV9YCkpfTwvYnV0dG9uPmBdLmpvaW4oIiIpfTtsZXQgbmk9ITE7Y29uc3Qgdl89KGUsdD0hMSxuPSExKT0+e2NvbnN0IG89ZS5raW5kPT09InJvb20iP2BkYXRhLWFkZC1yb29tPSIke2woZS5yb29tUmVmKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsSWQpfSIgZGF0YS1jaT0iJHtsKGUuc3RheT8uY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5Py5jaGVja091dCl9IiBkYXRhLWd1PSIke2woZS5zdGF5Py5ndWVzdHMpfSJgOmBkYXRhLWFkZC1leHRyYT0iJHtsKGUuZXh0cmFSZWY/P2UudGl0bGUpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWxJZCl9IiR7ZS5kYXk/YCBkYXRhLWRheT0iJHtsKGUuZGF5KX0iYDoiIn1gLHM9ZS5raW5kIT09InJvb20ifHxlLmhvdXJseT8iIjplLnJlZnVuZGFibGU9PT0hMT9gPGxpIGNsYXNzPSJwZXJrIHdhcm4iPiR7RS5hbGVydH08c3Bhbj48Yj4ke2MoIk5vbi1yZWZ1bmRhYmxlIiwi5LiN5Y+v5Y+W5raIIil9PC9iPiR7YygiIOKAlCB0aGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCIsIu+8jOatpOS7t+agvOiuouWQjuS4jeiDvemAgOaUuSIpfTwvc3Bhbj48L2xpPmA6YDxsaSBjbGFzcz0icGVyayI+JHtFLmNoZWNrfTxzcGFuPjxiPiR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L2I+JHtlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbD9sKGMoYCB1bnRpbCAke1N0cmluZyhlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCkucmVwbGFjZSgvIC9nLCLCoCIpfWAsYO+8jCR7WHQoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpfSDliY1gKSk6IiJ9PC9zcGFuPjwvbGk+YCxyPWUua2luZD09PSJyb29tIiYmZS5wYXltZW50PT09InByZXBhaWQiP2A8bGkgY2xhc3M9InBlcmsiPiR7RS5sb2NrfTxzcGFuPjxiPiR7YygiUGFpZCBpbiBhZHZhbmNlIiwi6ZyA6aKE5LuYIil9PC9iPiR7YygiIOKAlCBvbiB0aGUgbmV4dCBzdGVwIiwi77yM5LiL5LiA5q2l5LuY5qy+Iil9PC9zcGFuPjwvbGk+YDoiIjtyZXR1cm5gCiAgICA8ZGl2IGNsYXNzPSJyb3cgbGluZSI+CiAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke3QmJkF0KGUuc3VwcGxpZXIpP2A8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7bChBdChlLnN1cHBsaWVyKS5uYW1lKX08L3NwYW4+IGA6IiJ9JHtsKGUua2luZD09PSJyb29tIj9bbj8iIjplLmhvdGVsTmFtZSxuPyIiOmVpKGUuc3RheSxlLmhvdXJseSksZS5kZXRhaWw/WHQoZS5kZXRhaWwpOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpOmAke2UuaG90ZWxOYW1lfSR7ZS5kZXRhaWw/YCDCtyAke2UuZGV0YWlsfWA6IiJ9YCl9PC9kaXY+CiAgICAgICAgJHtzfHxyP2A8dWwgY2xhc3M9InBlcmtzIj4ke3N9JHtyfTwvdWw+YDoiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwLWxpbmUiPiR7bChlLnRvdGFsKX08L2Rpdj4KICAgICAgICAke2Uua2luZD09PSJyb29tIiYmbmk/YDxkaXYgY2xhc3M9InAtdW5pdCI+JHtjKCJiZWZvcmUgdGF4ZXMiLCLmnKrlkKvnqI7otLkiKX08L2Rpdj5gOiIifQogICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtlLmtpbmQ9PT0icm9vbSImJmUuaG91cmx5P2woQ3QoZS5ob3VybHkuaG91cnMpKTplLmtpbmQ9PT0icm9vbSI/bChjKGAke2UudW5pdH0gYSBuaWdodGAsYOavj+aZmiAke2UudW5pdH1gKSk6bChjKGAke2UudW5pdH0gZWFjaGAsYOavj+S7vSAke2UudW5pdH1gKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPjxzcGFuIGNsYXNzPSJ3bCI+JHtlLmtpbmQ9PT0icm9vbSI/YygiUm9vbXMiLCLpl7TmlbAiKTpjKCJRdWFudGl0eSIsIuaVsOmHjyIpfTwvc3Bhbj4ke1RzKG8sTnVtYmVyKGUua2luZD09PSJleHRyYSI/ZS5vcmRlcmVkPz9lLnF1YW50aXR5Pz8xOmUucXVhbnRpdHk/PzEpLFN0cmluZyhlLnRpdGxlKSl9PC9kaXY+CiAgICA8L2Rpdj5gfSxFaT0oZSx0KT0+YDxkaXYgY2xhc3M9InN1bXMiPgogICAgIDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHshQXJyYXkuaXNBcnJheShlLmxpbmVzKXx8ZS5saW5lcy5zb21lKG49Pm4ua2luZD09PSJleHRyYSIpP2MoIlJvb21zIGFuZCBhZGQtb25zIiwi5oi/6LS55ZKM6ZmE5Yqg6aG555uuIik6YygiUm9vbXMiLCLmiL/otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUuc3VidG90YWwpfTwvc3Bhbj48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7YygiVGF4ZXMgYW5kIGZlZXMiLCLnqI7otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUudGF4ZXNBbmRGZWVzPT09IkluY2x1ZGVkIj9jKCJJbmNsdWRlZCIsIuW3suWQqyIpOmUudGF4ZXNBbmRGZWVzKX08L3NwYW4+PC9kaXY+CiAgICAgJHtlLm1lbWJlclNhdmluZz9gPGRpdiBjbGFzcz0ic3VtIGdvb2QiPjxzcGFuPiR7bChjKGAke2UubWVtYmVyU2F2aW5nLnRpZXJ9IG1lbWJlciByYXRlYCxgJHtlLm1lbWJlclNhdmluZy50aWVyfeS8muWRmOS7t2ApKX08L3NwYW4+PHNwYW4+4oiSICR7bChlLm1lbWJlclNhdmluZy5zYXZlZCl9PC9zcGFuPjwvZGl2PmA6IiJ9CiAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2wodCl9PHNtYWxsPiR7YygiVGF4ZXMgYW5kIGZlZXMgaW4iLCLlkKvnqI7otLkiKX08L3NtYWxsPjwvc3Bhbj48c3Bhbj4ke2woZS50b3RhbCl9PC9zcGFuPjwvZGl2PgogICAgICR7ZS5tZW1iZXJTYXZpbmc/YDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtjKCJQb2ludHMgdGhpcyBlYXJucyIsIuWPr+W+l+enr+WIhiIpfTwvc3Bhbj48c3Bhbj4ke2woTnVtYmVyKGUubWVtYmVyU2F2aW5nLnBvaW50cykudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfTwvc3Bhbj48L2Rpdj5gOiIifQogICA8L2Rpdj5gLHlfPWU9PmA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5zYW5kYm94P2MoYFRoaXMgaXMgYSB0ZXN0IGVudmlyb25tZW50LiBCb29raW5nIGhlcmUgbWFrZXMgYSBzaW11bGF0ZWQgYm9va2luZywgbm90IGEgJHtlLm5hbWV9IHJlc2VydmF0aW9uLCBhbmQgbm90aGluZyBpcyBwYWlkLmAsYOi/meaYr+a1i+ivleeOr+Wig++8muWcqOi/memHjOmihOiuouWPquS8mueUn+aIkOaooeaLn+iuouWNle+8jOS4jeaYryR7dWUoZS5uYW1lKX3nmoTnnJ/lrp7pooTorqLvvIzkuZ/kuI3ku5jmrL7jgIJgKTplLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCI/YyhgTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIEJvb2tpbmcgbWFrZXMgYSByZXNlcnZhdGlvbiB3aXRoICR7ZS5uYW1lfSwgcGFpZCBhdCB0aGUgaG90ZWwsIGFuZCBnaXZlcyB5b3UgYSBjb25maXJtYXRpb24gY29kZS5gLGDov5nph4zkuI3miaPmrL7jgILpooTorqLkvJrlnKgke3VlKGUubmFtZSl955Sf5oiQ5LiA56yU5Yiw5bqX5LuY5qy+55qE6K6i5Y2V77yM5bm257uZ5L2g5LiA5Liq56Gu6K6k56CB44CCYCk6ZS5kZW1vP2MoYE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogcmVxdWVzdGluZyBhIGJvb2tpbmcgZ2l2ZXMgeW91IGEgY29uZmlybWF0aW9uIGNvZGUsIGJ1dCAke2UubmFtZX0gZG9lcyBub3QgcmVjZWl2ZSBpdCBhbmQgbm8gcm9vbSBpcyBoZWxkLmAsYOi/memHjOS4jeaJo+asvuOAgui/meaYr+a8lOekuu+8muaPkOS6pOWQjuS8muW+l+WIsOehruiupOegge+8jOS9hiR7dWUoZS5uYW1lKX3kuI3kvJrmlLbliLDvvIzkuZ/kuI3kvJrkuLrkvaDkv53nlZnmiL/pl7TjgIJgKTpjKGBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4gUmVxdWVzdGluZyBhIGJvb2tpbmcgYXNrcyAke2UubmFtZX0gdG8gaG9sZCB0aGUgcm9vbXMgYW5kIGdpdmVzIHlvdSBhIGNvbmZpcm1hdGlvbiBjb2RlLmAsYOi/memHjOS4jeaJo+asvuOAguaPkOS6pOWQjiR7dWUoZS5uYW1lKX3kvJrkuLrkvaDkv53nlZnmiL/pl7TvvIzlubbnu5nkvaDkuIDkuKrnoa7orqTnoIHjgIJgKSl9PC9kaXY+YCxSaT1lPT5lLmxlbmd0aDwyP2VbMF0/PyIiOmAke2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlW2UubGVuZ3RoLTFdfWAsJF89ZT0+e2NvbnN0IHQ9c3UoZSk7aWYodC5sZW5ndGg+MSl7Y29uc3Qgbj10LmluY2x1ZGVzKGN0KT9jdDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBUaGVzZSBzdGF5cyBhcmUgd2l0aCAke1JpKHQubWFwKG89PlVlKG8pLm5hbWUpKX0uIEVhY2ggZ3JvdXAncyBhcmUgYm9va2VkIG9uIHRoZWlyIG93bi5gLGDov5nkupvkvY/lrr/liIblsZ4ke1JpKHQubWFwKG89PlVlKG8pLm5hbWUpKX3vvIzmr4/kuKrpm4blm6LnmoTopoHliIblvIDpooTorqLjgIJgKSl9PC9kaXY+YCwuLi50Lm1hcChvPT57Y29uc3Qgcz1VZShvKTtyZXR1cm5gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28ke24mJm4hPT1vPyIgcXVpZXQiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLWJvb2siIGRhdGEtZ3JvdXA9IiR7bChvKX0iPiR7bChjKGBCb29rIHRoZSAke3MubmFtZX0gc3RheXNgLGDpooTorqIke3MubmFtZX3nmoTkvY/lrr9gKSl9PC9idXR0b24+PC9kaXY+JHt5XyhzKX1gfSksbj9PaSghMCxVZShuKSk6IiJdfXJldHVybltPaSghMCxVZSh0WzBdKSldfSxmdT0oKT0+VWUoY3R8fHN1KFA/LmxpbmVzPz9bXSlbMF0pLGtfPWU9Pntjb25zdCB0PWUubGluZXM/P1tdO2lmKG5pPSEhZS50YXhlc0FuZEZlZXMmJmUudGF4ZXNBbmRGZWVzIT09IkluY2x1ZGVkIix0Lmxlbmd0aD09PTApcmV0dXJuW2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGUgdHJpcCBpcyBlbXB0eS4iLCLooYznqIvph4zov5jmsqHmnInlhoXlrrnjgIIiKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtsKGMoYEJyb3dzZSAke2tlP2Bob3RlbHMgb24gJHtGZX1gOmAke0ZlfSBob3RlbHNgfWAsdWUoRmUpPT09IumFkuW6lyI/Iua1j+iniOWFqOmDqOmFkuW6lyI6YOa1j+iniCR7RmV955qE6YWS5bqXYCkpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpO2NvbnN0IG49Wy4uLm5ldyBTZXQodC5tYXAoaT0+U3RyaW5nKGkuZGF5Pz8iIikpKV0uc29ydCgpLG89dC5maWx0ZXIoaT0+aS5raW5kPT09InJvb20iKSxzPVsuLi5uZXcgU2V0KG8ubWFwKGk9PlN0cmluZyhpLmhvdGVsTmFtZT8/IiIpKSldLmZpbHRlcihCb29sZWFuKSxyPXMubGVuZ3RoPT09MSYmbmV3IFNldChvLm1hcChpPT5gJHtpLnN0YXk/LmNoZWNrSW59fCR7aS5zdGF5Py5jaGVja091dH18JHtpLmhvdXJseT8uc3RhcnQ/PyIifWApKS5zaXplPT09MTtyZXR1cm5bYDxkaXYgY2xhc3M9InJldmlldy1oIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtjKCJSZXZpZXcgYW5kIGJvb2siLCLmoLjlr7nlubbpooTorqIiKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7cy5sZW5ndGg9PT0xP1p0KHNbMF0pOmwocy5sZW5ndGg/YyhgJHtzLmxlbmd0aH0gaG90ZWxzYCxgJHtzLmxlbmd0aH0g5a626YWS5bqXYCk6YyhgJHt0Lmxlbmd0aH0gJHt0Lmxlbmd0aD09PTE/Iml0ZW0iOiJpdGVtcyJ9YCxgJHt0Lmxlbmd0aH0g6aG5YCkpfTwvZGl2PjwvZGl2PmAscj90aShvWzBdPy5zdGF5LG9bMF0/LmhvdXJseSk6IiIsbi5tYXAoaT0+YAogICAgICAke2kmJm4ubGVuZ3RoPjE/YDxkaXYgY2xhc3M9ImRheSI+JHtsKF9lKGkpKX08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJyb3dzIj4ke3QuZmlsdGVyKGE9PlN0cmluZyhhLmRheT8/IiIpPT09aSkubWFwKGE9PnZfKGEsc3UodCkubGVuZ3RoPjEscikpLmpvaW4oIiIpfTwvZGl2PmApLmpvaW4oIiIpLChlLmRyb3BwZWQ/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9ImVyciI+JHtlLmRyb3BwZWQubWFwKGk9PmAke2woaS50aXRsZSl9OiAke2woaS53aHkpfWApLmpvaW4oIjxicj4iKX08L2Rpdj5gOiIiLC4uLkFycmF5LmlzQXJyYXkoZS5ncm91cHMpJiZlLmdyb3Vwcy5sZW5ndGg+MT9bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBQcmljZWQgaW4gJHsoZS5jdXJyZW5jaWVzPz9bXSkuam9pbigiIGFuZCAiKX0sIHNlcGFyYXRlbHkuIE5vdGhpbmcgaGVyZSBjb252ZXJ0cyBvbmUgaW50byB0aGUgb3RoZXI7IGVhY2ggaG90ZWwgaXMgYm9va2VkIGFuZCBwYWlkIGluIGl0cyBvd24uYCxg5YiG5Yir5LulICR7KGUuY3VycmVuY2llcz8/W10pLmpvaW4oIuOAgSIpfSDorqHku7fvvIzov5nph4zkuI3lgZrmjaLnrpfvvJvmr4/lrrbphZLlupfmjInoh6rlt7HnmoTluIHnp43pooTorqLlkozku5jmrL7jgIJgKSl9PC9kaXY+YCwuLi5lLmdyb3Vwcy5tYXAoaT0+RWkoaSxpLmdvZXNXaXRoQVN0YXk/YyhgSW4gJHtpLmN1cnJlbmN5fSwgZ29lcyB3aXRoIGEgc3RheSAtIG5vdCBpbiB0aGUgdG90YWxgLGAke2kuY3VycmVuY3l977yM6ZqP5L2P5a6/5LiA6LW36K6i77yM5LiN6K6h5YWl5oC75Lu3YCk6YyhgVG90YWwgaW4gJHtpLmN1cnJlbmN5fWAsYCR7aS5jdXJyZW5jeX0g5oC75Lu3YCkpKV06W0VpKGUsYygiVG90YWwiLCLmgLvku7ciKSldLHJlfHwhSm8oInNpZ25JbiIpPyIiOmA8ZGl2IGNsYXNzPSJtZW1iZXItb2ZmZXIiPiR7RS50YWd9PHNwYW4+JHtsKGMoYEEgJHt6aXx8RmV9IG1lbWJlcj9gLGAke3ppfHxGZX3kvJrlkZjvvJ9gKSl9IDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stc2lnbi1pbiI+JHtjKCJTaWduIGluIGZvciB0aGUgbWVtYmVyIHJhdGUiLCLnmbvlvZXkuqvkvJrlkZjku7ciKX08L2J1dHRvbj48L3NwYW4+PC9kaXY+JHtDcygpfWAsLi4uQXJyYXkuaXNBcnJheShlLm5lZWRzUm9vbSkmJmUubmVlZHNSb29tLmxlbmd0aD9lLm5lZWRzUm9vbS5tYXAoaT0+YDxkaXYgY2xhc3M9ImFza2VkIj4KICAgICAgICAgICAgIDxiPiR7YygiR29lcyB3aXRoIGEgc3RheSIsIumcgOmaj+S9j+Wuv+S4gOi1t+iuoiIpfTwvYj4KICAgICAgICAgICAgIDxzcGFuPiR7bChjKGAkeyhpLmV4dHJhcz8/W10pLmpvaW4oIiBhbmQgIil9IGlzICR7aS5ob3RlbE5hbWV9J3Mgc2VydmljZSBmb3IgaXRzIGd1ZXN0cywgc28gaXQgaXMgYm9va2VkIHdpdGggYSByb29tIHRoZXJlIC0gb3IgYWRkZWQgdG8gYSBib29raW5nIHlvdSBhbHJlYWR5IGhhdmUuYCxgJHsoaS5leHRyYXM/P1tdKS5qb2luKCLjgIEiKX3mmK8ke2kuaG90ZWxOYW1lfeS4uuS9j+WuouaPkOS+m+eahOacjeWKoe+8jOimgeWSjOmCo+mHjOeahOaIv+mXtOS4gOi1t+iuou+8jOaIluWKoOWIsOS9oOW3suacieeahOmihOiuouS4iuOAgmApKX08L3NwYW4+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGkuaG90ZWxJZCl9Ij4ke2woYyhgUm9vbXMgYXQgJHtpLmhvdGVsTmFtZX1gLGAke2kuaG90ZWxOYW1lfeeahOaIv+mXtGApKX08L2J1dHRvbj4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj5gKTpbLi4uJF8odCldXS5qb2luKCIiKX0sd189W3tpZDoia2luZy1iZWQiLGxhYmVsOiJLaW5nIGJlZCIsemg6IuWkp+W6iiJ9LHtpZDoidHdpbi1iZWRzIixsYWJlbDoiVHdpbiBiZWRzIix6aDoi5Y+M5bqKIn0se2lkOiJoaWdoLWZsb29yIixsYWJlbDoiSGlnaCBmbG9vciIsemg6IumrmOalvOWxgiJ9LHtpZDoibG93LWZsb29yIixsYWJlbDoiTG93IGZsb29yIix6aDoi5L2O5qW85bGCIn0se2lkOiJxdWlldC1yb29tIixsYWJlbDoiUXVpZXQgcm9vbSIsemg6IuWuiemdmeaIv+mXtCJ9LHtpZDoiY29ubmVjdGluZy1yb29tcyIsbGFiZWw6IkNvbm5lY3Rpbmcgcm9vbXMiLHpoOiLov57pgJrmiL8ifSx7aWQ6ImVhcmx5LWNoZWNrLWluIixsYWJlbDoiRWFybHkgY2hlY2staW4iLHpoOiLmj5DliY3lhaXkvY8ifSx7aWQ6ImxhdGUtYXJyaXZhbCIsbGFiZWw6IkFycml2aW5nIGxhdGUiLHpoOiLmmZrliLAifSx7aWQ6ImFjY2Vzc2libGUtcm9vbSIsbGFiZWw6IkFjY2Vzc2libGUgcm9vbSIsemg6IuaXoOmanOeijeaIvyJ9XSxBcz1lPT57Y29uc3QgdD13Xy5maW5kKG49Pm4uaWQ9PT1lKTtyZXR1cm4gdD9jKHQubGFiZWwsdC56aCk6ZX0sX189eyJraW5nLWJlZCI6InR3aW4tYmVkcyIsInR3aW4tYmVkcyI6ImtpbmctYmVkIiwiaGlnaC1mbG9vciI6Imxvdy1mbG9vciIsImxvdy1mbG9vciI6ImhpZ2gtZmxvb3IifSxTXz1be2VuOiJCZWQiLHpoOiLluorlnosiLGlkczpbImtpbmctYmVkIiwidHdpbi1iZWRzIl19LHtlbjoiRmxvb3IiLHpoOiLmpbzlsYIiLGlkczpbImhpZ2gtZmxvb3IiLCJsb3ctZmxvb3IiXX0se2VuOiJBbHNvIix6aDoi5YW25LuWIixpZHM6WyJxdWlldC1yb29tIiwiY29ubmVjdGluZy1yb29tcyIsImVhcmx5LWNoZWNrLWluIiwiYWNjZXNzaWJsZS1yb29tIl19XSxUXz1bIjEyOjAwIiwiMTQ6MDAiLCIxNjowMCIsIjE4OjAwIiwiMjA6MDAiLCIyMjowMCIsIjIzOjMwIl07bGV0IFRlPW51bGw7Y29uc3QgT2k9KGU9ITEsdD1mdSgpKT0+e2NvbnN0IG49VGU/VGUucmVxdWVzdHM6cmU/LnByZWZlcmVuY2VzPz9bXSxvPVA/LnZpZXc9PT0idHJpcCImJiEoQXJyYXkuaXNBcnJheShQLmdyb3VwcykmJlAuZ3JvdXBzLmxlbmd0aD4xKT9TdHJpbmcoUC50b3RhbD8/IiIpOiIiLHM9KFA/LmxpbmVzPz9bXSkuZmlsdGVyKGY9PmYua2luZD09PSJyb29tIikscj1zLnJlZHVjZSgoZiwkKT0+ZitOdW1iZXIoJC5xdWFudGl0eT8/MSksMCksaT1zLnNvbWUoZj0+Zi5wYXltZW50PT09InByZXBhaWQiKSxhPW5ldyBTZXQocy5tYXAoZj0+YCR7Zi5ob3RlbElkfXwke2Yuc3RheT8uY2hlY2tJbn18JHtmLnN0YXk/LmNoZWNrT3V0fXwke2YuaG91cmx5Py5zdGFydD8/IiJ9YCkpLnNpemUsZD1uZXcgU2V0KHMubWFwKGY9PlN0cmluZyhmLmhvdGVsSWQpKSkuc2l6ZT09PWE/YyhgYWxsICR7YX0gaG90ZWxzYCxg5YWo6YOoICR7YX0g5a62YCk6YyhgYWxsICR7YX0gc3RheXNgLGDlhajpg6ggJHthfSDmrrXkvY/lrr9gKSxwPWk/YygiQ29udGludWUgdG8gcGF5bWVudCIsIuWOu+S7mOasviIpOmE+MT90LnNhbmRib3g/YyhgVGVzdC1ib29rICR7ZH1gLGDmtYvor5XpooTorqIke2R9YCk6YyhgQm9vayAke2R9YCxg6aKE6K6iJHtkfWApOnQuc2FuZGJveD9jKCJNYWtlIGEgdGVzdCBib29raW5nIiwi5o+Q5Lqk5rWL6K+V6aKE6K6iIik6dC5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwiP3I+MT9jKGBCb29rICR7cn0gcm9vbXNgLGDpooTorqIgJHtyfSDpl7RgKTpjKCJCb29rIHRoaXMgcm9vbSIsIumihOiuoui/memXtOaIvyIpOnQuZGVtbz9jKCJSZXF1ZXN0IGJvb2tpbmciLCLmj5DkuqTpooTorqIiKTpyPjE/YyhgSG9sZCAke3J9IHJvb21zYCxg5L+d55WZICR7cn0g6Ze0YCk6YygiSG9sZCB0aGlzIHJvb20iLCLkv53nlZnov5npl7TmiL8iKSxoPVRlPy5hcnJpdmluZ0F0Pz8iIjtyZXR1cm5gCiAgPGRpdiBjbGFzcz0iZm9ybSIgaWQ9Imd1ZXN0IiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGgzIGNsYXNzPSJmb3JtLWgiPiR7YygiV2hvIGlzIHN0YXlpbmciLCLlhaXkvY/kurrkv6Hmga8iKX08L2gzPgogICAgPGxhYmVsPiR7YygiRnVsbCBuYW1lIiwi5aeT5ZCNIil9PGlucHV0IGlkPSJnbmFtZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkFzIGl0IHNob3VsZCBhcHBlYXIgb24gdGhlIGJvb2tpbmciLCLkuI7or4Hku7bkuIDoh7QiKX0iIHZhbHVlPSIke2woVGU/Lm5hbWU/PyIiKX0iPjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSIke3QucGhvbmVSZXF1aXJlZD8idHdvIjoib25lIn0iPgogICAgICA8bGFiZWw+JHtjKCJFbWFpbCIsIumCrueusSIpfTxpbnB1dCBpZD0iZ21haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBjb25maXJtYXRpb24iLCLmjqXmlLbnoa7orqTkv6Hmga8iKX0iIHZhbHVlPSIke2woVGU/LmVtYWlsPz8iIil9Ij48L2xhYmVsPiR7dC5waG9uZVJlcXVpcmVkP2AKICAgICAgPGxhYmVsPiR7YygiUGhvbmUiLCLmiYvmnLrlj7ciKX08aW5wdXQgaWQ9ImdwaG9uZSIgdHlwZT0idGVsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBob3RlbCB0byByZWFjaCB5b3UiLCLmlrnkvr/phZLlupfogZTns7vkvaAiKX0iIHZhbHVlPSIke2woVGU/LnBob25lPz8iIil9Ij48L2xhYmVsPmA6IiJ9CiAgICA8L2Rpdj4KICAgIDxkZXRhaWxzIGNsYXNzPSJhc2tzIiR7bi5sZW5ndGh8fFRlPy5ub3Rlc3x8aD8iIG9wZW4iOiIifT4KICAgICAgPHN1bW1hcnk+JHtjKCJSZXF1ZXN0cyBmb3IgdGhlIGhvdGVsIiwi57uZ6YWS5bqX55qE6ZyA5rGCIil9IDxzbWFsbD4ke2MoIm9wdGlvbmFsIiwi6YCJ5aGrIil9PC9zbWFsbD48L3N1bW1hcnk+CiAgICAgIDxkaXYgY2xhc3M9ImFza3MtYm9keSI+CiAgICAgICAgJHtTXy5tYXAoZj0+YDxkaXYgY2xhc3M9ImFzay1ncm91cCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YyhmLmVuLGYuemgpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YyhmLmVuLGYuemgpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke2YuaWRzLm1hcCgkPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBhc2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hc2s9IiR7bCgkKX0iIGFyaWEtcHJlc3NlZD0iJHtuLmluY2x1ZGVzKCQpPyJ0cnVlIjoiZmFsc2UifSI+JHtsKEFzKCQpKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj4KICAgICAgICA8L2Rpdj5gKS5qb2luKCIiKX0KICAgICAgICA8ZGl2IGNsYXNzPSJhc2stZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkFycml2aW5nIGFyb3VuZCIsIumihOiuoeWIsOW6lyIpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiQXJyaXZpbmcgYXJvdW5kIiwi6aKE6K6h5Yiw5bqXIil9PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7VF8ubWFwKGY9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFycml2ZT0iJHtmfSIgYXJpYS1wcmVzc2VkPSIke2g9PT1mPyJ0cnVlIjoiZmFsc2UifSI+JHtmPT09IjIzOjMwIj9jKCJBZnRlciAyMjowMCIsIjIyOjAwIOS7peWQjiIpOmZ9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+CiAgICAgICAgICA8aW5wdXQgaWQ9Imd0aW1lIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIke2woaCl9Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8bGFiZWw+JHtjKCJBbnl0aGluZyBlbHNlIiwi5YW25LuW6ZyA5rGCIil9PGlucHV0IGlkPSJnbm90ZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkluIHlvdXIgb3duIHdvcmRzIiwi55So5L2g6Ieq5bex55qE6K+d5YaZIil9IiB2YWx1ZT0iJHtsKFRlPy5ub3Rlcz8/IiIpfSI+PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgVGhlc2UgZ28gdG8gdGhlIGRlc2sgYXMgcmVxdWVzdHMuICR7dC5uYW1lfSBtZWV0cyB3aGF0IGl0IGNhbiBvbiB0aGUgZGF5OyBub25lIG9mIGl0IGlzIGhlbGQuYCxg6L+Z5Lqb5Lya5L2c5Li66ZyA5rGC6L2s57uZ5YmN5Y+w77yMJHt1ZSh0Lm5hbWUpfeW9k+WkqeWwvemHj+a7oei2s++8jOS9huS4jeS9nOS/neivgeOAgmApKX08L2Rpdj4KICAgICAgICAke3JlP2A8bGFiZWwgY2xhc3M9InJlbWVtYmVyIj48aW5wdXQgaWQ9ImdyZW1lbWJlciIgdHlwZT0iY2hlY2tib3giJHtUZT8ucmVtZW1iZXI/IiBjaGVja2VkIjoiIn0+ICR7bChjKGBSZW1lbWJlciB0aGUgYmVkLCBmbG9vciBhbmQgcm9vbSByZXF1ZXN0cyBvbiBteSAke3JlLnByb2dyYW1tZT8/Im1lbWJlcnNoaXAifSBmb3IgbmV4dCB0aW1lYCxg5oqK5bqK5Z6L44CB5qW85bGC5ZKM5oi/6Ze06ZyA5rGC6K6w5Zyo5oiR55qEJHtyZS5wcm9ncmFtbWU/PyLkvJrlkZgifei0puaIt+mHjO+8jOS4i+asoeiHquWKqOW4puS4imApKX08L2xhYmVsPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgPC9kZXRhaWxzPgogICAgPGJ1dHRvbiBjbGFzcz0iZ28gYmlnIGJsb2NrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29rIj4ke3B9JHtvP2A8c3BhbiBjbGFzcz0icHJpY2UtaW4iPiR7bChvKX08L3NwYW4+YDoiIn08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9InRydXN0Ij4ke0UubG9ja308c3Bhbj4ke2woaT90LnNhbmRib3g/YygiTmV4dCwgYSBwYXltZW50IHBhZ2UgaW4gdGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzLiBDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgdGhlcmUsIGFuZCBub3RoaW5nIGlzIGJvb2tlZCB1bnRpbCBpdCBpcyBwYWlkLiIsIuS4i+S4gOatpeaYr+a1i+ivleaooeW8j+eahOS7mOasvumhte+8jOS4jeS8muecn+WunuaJo+asvuOAguWNoeWPt+WPquWcqOS7mOasvumhteWhq+WGme+8jOS7mOasvuaIkOWKn+WJjeS4jeS8mumihOiuouOAgiIpOmMoYE5leHQsIGEgc2VjdXJlIHBheW1lbnQgcGFnZTogY2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IHRoZXJlLiBOb3RoaW5nIGlzIGJvb2tlZCB3aXRoICR7dC5uYW1lfSB1bnRpbCBpdCBpcyBwYWlkLCBhbmQgaWYgaXQgY2Fubm90IGJlLCBhbGwgb2YgaXQgZ29lcyBiYWNrLmAsYOS4i+S4gOatpeaYr+WuieWFqOS7mOasvumhte+8jOWNoeWPt+WPquWcqOmCo+mHjOWhq+WGmeOAguS7mOasvuaIkOWKn+WJjeS4jeS8muWcqCR7dWUodC5uYW1lKX3pooTorqLvvJvorqLkuI3miJDkvJrlhajpop3pgIDlm57jgIJgKTp0LnNhbmRib3g/YygiQSB0ZXN0IGJvb2tpbmc6IG5vdGhpbmcgaXMgaGVsZCBhbmQgbm90aGluZyBpcyBwYWlkLiIsIua1i+ivlemihOiuou+8muS4jeS/neeVmeaIv+mXtO+8jOS5n+S4jeS7mOasvuOAgiIpOnQuYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsIj9jKGBObyBjYXJkIGlzIHRha2VuIGFuZCBub3RoaW5nIGlzIGNoYXJnZWQuIEEgcmVzZXJ2YXRpb24gd2l0aCAke3QubmFtZX0sIHBhaWQgYXQgdGhlIGhvdGVsLmAsYOS4jeeUqOe7keWNoe+8jOS5n+S4jeaJo+asvuOAgui/meaYr+WcqCR7dWUodC5uYW1lKX3nmoTpooTorqLvvIzliLDlupfku5jmrL7jgIJgKTp0LmRlbW8/YyhgTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogJHt0Lm5hbWV9IGRvZXMgbm90IHJlY2VpdmUgaXQgYW5kIG5vIHJvb20gaXMgaGVsZC5gLGDkuI3nlKjnu5HljaHvvIzkuZ/kuI3miaPmrL7jgILov5nmmK/mvJTnpLrvvIwke3VlKHQubmFtZSl95LiN5Lya5pS25Yiw77yM5Lmf5LiN5L+d55WZ5oi/6Ze044CCYCk6YygiTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBZb3UgcHJlc2VudCBhIGNhcmQgYXQgY2hlY2staW4uIiwi5LiN55So57uR5Y2h77yM5Lmf5LiN5omj5qy+44CC5YWl5L2P5pe25Zyo5YmN5Y+w5Ye656S66ZO26KGM5Y2h5Y2z5Y+v44CCIikpfTwvc3Bhbj48L2Rpdj4KICA8L2Rpdj5gfSxOaT1lPT5lLmxlbmd0aD4xP2Ake2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlLmF0KC0xKX1gOmVbMF0/PyIiLHpfPWU9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2wob2U9PT0iemgiPyLpooTorqLpnIDopoHloavlhpnlp5PlkI3lkozpgq7nrrHjgIIiOmBUaGUgYm9va2luZyBuZWVkcyAke05pKGUubWlzc2luZz8/W10pfHwiYSBuYW1lIGFuZCBhbiBlbWFpbCJ9LmApfTwvZGl2PmAsT2koITApXS5qb2luKCIiKSx4Xz1lPT57Y29uc3QgdD1lLm1lbWJlcj8/e307cmV0dXJuW2A8ZGl2IGNsYXNzPSJjb25mIj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bCh0LnByb2dyYW1tZSl9PC9kaXY+CiAgICAgICAke3QubmFtZT9gPGRpdiBjbGFzcz0id2hlcmUiPiR7bCh0Lm5hbWUpfTwvZGl2PmA6YDxkaXYgY2xhc3M9IndoZXJlIj4ke2MoIlNpZ25lZCBpbiIsIuW3sueZu+W9lSIpfTwvZGl2PmB9CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIiBzdHlsZT0iZm9udC1zaXplOjIwcHgiPiR7bCh0LnRpZXI/Lm5hbWUpfTwvZGl2PgogICAgICAgJHt0eXBlb2YgdC5wb2ludHM9PSJudW1iZXIiP2A8ZGl2IGNsYXNzPSJ3aGVuIj4ke2woYyhgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0gcG9pbnRzYCxgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0g56ev5YiGYCkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0idW5wYWlkIj48Yj4ke2woYyhgJHtNYXRoLnJvdW5kKCh0LnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSUgb2ZmYCxg5LyY5oOgICR7TWF0aC5yb3VuZCgodC50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCkpfTwvYj48c3Bhbj4ke2woYyhgUm9vbSByYXRlcyBhbmQgdHJpcCB0b3RhbHMgbm93IHNob3cgdGhlICR7dC50aWVyPy5uYW1lfSBtZW1iZXIgcmF0ZS4gTm90aGluZyBpcyBjaGFyZ2VkIGJ5IHNpZ25pbmcgaW4uYCxg5oi/5Lu35ZKM6KGM56iL5oC75Lu35bey5oyJJHt0LnRpZXI/Lm5hbWV95Lya5ZGY5Lu35pi+56S644CC55m75b2V5LiN5Lya5omj5qy+44CCYCkpfTwvc3Bhbj48L2Rpdj5gLCh0LnByZWZlcmVuY2VzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJhc2tlZCI+CiAgICAgICAgICAgPGI+JHtjKCJTYXZlZCBmb3IgeW91ciBuZXh0IHN0YXlzIiwi5bey5Li65LiL5qyh5YWl5L2P5L+d5a2YIil9PC9iPgogICAgICAgICAgIDxzcGFuPiR7bChjKGAke3QucHJlZmVyZW5jZXMubWFwKEFzKS5qb2luKCIsICIpfSAtIHRpY2tlZCBvbiB0aGUgYm9va2luZyBmb3JtLCBhbmQgYXNrZWQgZm9yIG9ubHkgd2hlbiB5b3UgYm9vayB3aXRoIHRoZW0uYCxgJHt0LnByZWZlcmVuY2VzLm1hcChBcykuam9pbigi44CBIil977yM6aKE6K6i5pe25Lya6Ieq5Yqo5Yu+6YCJ77yM5Y+q5Zyo5L2g55So5a6D5Lus6aKE6K6i5pe25omN5o+Q5Ye644CCYCkpfTwvc3Bhbj4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZm9yZ2V0LXByZWZzIj4ke2MoIkZvcmdldCB0aGVtIiwi5riF6Zmk6L+Z5Lqb5YGP5aW9Iil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiRmluZCBhIGhvdGVsIiwi5om+6YWS5bqXIil9PC9idXR0b24+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ic2lnbi1vdXQiPiR7YygiU2lnbiBvdXQiLCLpgIDlh7rnmbvlvZUiKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gXS5qb2luKCIiKX0sSV89KCk9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2MoIk5vIG1lbWJlcnNoaXAgbWF0Y2hlcyB0aGF0IG51bWJlciBhbmQgc3VybmFtZS4gQ2hlY2sgYm90aCBhcyB0aGV5IGFyZSBwcmludGVkIOKAlCBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCB0aGlzIGNvbm5lY3RvciBuZXZlciBhc2tzIGZvciBhIHBhc3N3b3JkLiIsIuS8muWRmOWPt+WSjOWnk+awj+WvueS4jeS4iuOAguivt+aMieWNoeS4iuWNsOeahOaguOWvueS4pOmhueWNs+WPr++8jOi/memHjOS7juS4jeimgeaxguWvhueggeOAgiIpfTwvZGl2PmAsQ3MoITApXS5qb2luKCIiKSxDcz0oZT0hMSk9PmAKICA8ZGl2IGNsYXNzPSJmb3JtIiBpZD0ic2lnbmluIiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGRpdiBjbGFzcz0idHdvIj4KICAgICAgPGxhYmVsPiR7YygiTWVtYmVyc2hpcCBudW1iZXIiLCLkvJrlkZjlj7ciKX08aW5wdXQgaWQ9Im1udW0iIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJBcyBpdCBpcyBwcmludGVkIiwi5oyJ5Y2h5LiK5Y2w55qE5aGr5YaZIil9Ij48L2xhYmVsPgogICAgICA8bGFiZWw+JHtjKCJTdXJuYW1lIiwi5aeT5rCPIil9PGlucHV0IGlkPSJtc3VyIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiVGhlIHN1cm5hbWUgb24gaXQiLCLljaHkuIrnmoTlp5PmsI8iKX0iPjwvbGFiZWw+CiAgICA8L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJzaWduLWluIj4ke2MoIlNpZ24gaW4iLCLnmbvlvZUiKX08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiTm8gcGFzc3dvcmQgaXMgYXNrZWQgZm9yIGFuZCBub25lIGlzIHN0b3JlZC4gU2lnbmluZyBpbiBzaG93cyB0aGUgbWVtYmVyIHJhdGU7IG5vdGhpbmcgaXMgY2hhcmdlZC4iLCLkuI3pnIDopoHlr4bnoIHvvIzkuZ/kuI3kvJrkv53lrZjku7vkvZXlr4bnoIHjgILnmbvlvZXlkI7mmL7npLrkvJrlkZjku7fvvIzkuI3kvJrmiaPmrL7jgIIiKX08L2Rpdj4KICA8L2Rpdj5gLEFfPWU9Pntjb25zdCB0PWUucmVxdWVzdGVkPz9bXTtyZXR1cm4gdC5sZW5ndGg/YDxkaXYgY2xhc3M9ImFza2VkJHtlLmFjY2Vzc2liaWxpdHk/IiBmbGFnIjoiIn0iPgogICAgPGI+JHtjKCJSZXF1ZXN0ZWQsIG5vdCBoZWxkIiwi5bey5o+Q5Ye655qE6ZyA5rGC77yI5LiN5L2c5L+d6K+B77yJIil9PC9iPgogICAgJHt0Lm1hcChuPT5gPHNwYW4+JHtsKG4pfTwvc3Bhbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gOiIifSx5ZD1lPT5lLmhvbGRVbnRpbExvY2FsP2MoYCR7ZS5ob2xkVW50aWxMb2NhbH0gKGhvdGVsIHRpbWUpYCxgJHtlLmhvbGRVbnRpbExvY2Fsfe+8iOmFkuW6l+W9k+WcsOaXtumXtO+8iWApOmAke1N0cmluZyhlLmhvbGRVbnRpbD8/IiIpLnNsaWNlKDAsMTYpLnJlcGxhY2UoIlQiLCIgIil9IFVUQ2AsQ189KGUsdCk9Pntjb25zdCBuPXQucGF5bWVudD8/e30se25hbWU6byxzYW5kYm94OnN9PVVlKHQuc3VwcGxpZXIpLHI9U3RyaW5nKG4ucGF5QnlMb2NhbD8/IiIpO3JldHVybltgPGRpdiBjbGFzcz0iYm9va2VkIHBheSIgcm9sZT0ic3RhdHVzIj4KICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIHBheSI+JHtFLmxvY2t9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2MoIlBheSB0byBmaW5pc2ggYm9va2luZyIsIuS7mOasvuWQjuWujOaIkOmihOiuoiIpfTwvaDI+CiAgICAgICA8cCBjbGFzcz0iYm9va2VkLXMiPiR7bChjKGBOb3RoaW5nIGlzIGJvb2tlZCB5ZXQuIE9uY2UgdGhlIHBheW1lbnQgZ29lcyB0aHJvdWdoLCB0aGUgcm9vbSBpcyBib29rZWQgd2l0aCAke299LmAsYOeOsOWcqOi/mOayoeaciemihOiuouOAguS7mOasvuaIkOWKn+WQju+8jOaIv+mXtOaJjeS8muWcqCR7dWUobyl96K6i5aW944CCYCkpfTwvcD4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXlib3giPgogICAgICAgPGRpdiBjbGFzcz0id2wiPiR7YygiVG8gcGF5IG5vdyIsIumcgOS7mOasviIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0icGF5LWFtb3VudCI+JHtsKG4uYW1vdW50Pz8iIil9PC9kaXY+CiAgICAgICAke24ucGF5Qnk/YDxkaXYgY2xhc3M9InBheS1ieSI+JHtFLmNsb2NrfTxzcGFuPiR7bChyP2MoYFBheSBieSAke3J9YCxg6K+35ZyoICR7cn0g5YmN5LuY5qy+YCk6YygiUGF5IHdpdGhpbiIsIuWJqeS9meaXtumXtCIpKX08YnI+PGIgY2xhc3M9ImNvdW50ZG93biBuYiIgZGF0YS11bnRpbD0iJHtsKG4ucGF5QnkpfSI+JHtsKFpnKFN0cmluZyhuLnBheUJ5KSkpfTwvYj48L3NwYW4+PC9kaXY+YDoiIn0KICAgICAgICR7bi51cmw/YDxidXR0b24gY2xhc3M9ImdvIGJpZyBibG9jayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icGF5IiBkYXRhLXVybD0iJHtsKG4udXJsKX0iIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9IiBkYXRhLXVudGlsPSIke2wobi5wYXlCeT8/IiIpfSI+JHtFLmxvY2t9JHtsKGMoYFBheSAke24uYW1vdW50Pz8iIn0gb24gdGhlIHNlY3VyZSBwYWdlYCxg5Y675a6J5YWo6aG16Z2i5LuY5qy+ICR7bi5hbW91bnQ/PyIifWApKX08L2J1dHRvbj5gOiIifQogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kgcGF5LWNoZWNrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXktY2hlY2siIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIlBhaWQgYWxyZWFkeT8gQ2hlY2sgbm93Iiwi5bey57uP5LuY6L+H5LqG77yf546w5Zyo5Yi35pawIil9PC9idXR0b24+CiAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdCI+JHtFLmxvY2t9PHNwYW4+JHtsKHM/YygiVGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzIC0gdXNlIGEgdGVzdCBjYXJkIG9uIHRoZSBwYXltZW50IHBhZ2UuIENhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSB0aGVyZSwgbmV2ZXIgaGVyZS4iLCLmtYvor5XmqKHlvI/vvJrkuI3kvJrnnJ/lrp7miaPmrL7vvIzor7flnKjku5jmrL7pobXnlKjmtYvor5XljaHjgILljaHlj7flj6rlnKjku5jmrL7pobXloavlhpnvvIzov5nph4zkuI3mlLbpm4bjgIIiKTpjKCJDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgb24gdGhlIHBheW1lbnQgcGFnZSwgbmV2ZXIgaGVyZS4gSWYgdGhlIGhvdGVsIGRvZXMgbm90IGNvbmZpcm0sIGFsbCBvZiBpdCBnb2VzIGJhY2suIiwi5Y2h5Y+35Y+q5Zyo5LuY5qy+6aG15aGr5YaZ77yM6L+Z6YeM5LiN5pS26ZuG44CC5aaC5p6c6YWS5bqX5rKh5pyJ56Gu6K6k77yM5qy+6aG55Lya5YWo6aKd6YCA5Zue44CCIikpfTwvc3Bhbj48L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXktZm9yIj4KICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke1p0KHQuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICR7dGkodC5zdGF5LHQuaG91cmx5KX0KICAgICAgIDxkaXYgY2xhc3M9InJvd3MiPiR7KHQucXVvdGU/LmxpbmVzPz9bXSkubWFwKHFnKS5qb2luKCIiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBSZWZlcmVuY2UgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3IGZvciAke1t0Lmd1ZXN0Py5uYW1lLHQuZ3Vlc3Q/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKX1gLGDnvJblj7cgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3ICR7W3QuZ3Vlc3Q/Lm5hbWUsdC5ndWVzdD8uZW1haWxdLmZpbHRlcihCb29sZWFuKS5qb2luKCLvvIwiKX1gKSl9PC9kaXY+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LFBfPWU9PltlPy5uYW1lLGU/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikubWFwKHQ9PmA8c3BhbiBjbGFzcz0ibmIiPiR7bCh0KX08L3NwYW4+YCkuam9pbignPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiDCtyA8L3NwYW4+JyksWmc9ZT0+e2NvbnN0IHQ9TWF0aC5tYXgoMCxEYXRlLnBhcnNlKGUpLURhdGUubm93KCkpO2lmKCF0KXJldHVybiBjKCJ0aW1lIGlzIHVwIiwi5bey6LaF5pe2Iik7Y29uc3Qgbj1hPT5TdHJpbmcoYSkucGFkU3RhcnQoMiwiMCIpLG89TWF0aC5mbG9vcih0LzM2ZTUpLHM9TWF0aC5mbG9vcih0JTM2ZTUvNmU0KSxyPU1hdGguZmxvb3IodCU2ZTQvMWUzKSxpPW8/YCR7b306JHtuKHMpfToke24ocil9YDpgJHtzfToke24ocil9YDtyZXR1cm4gYyhgJHtpfSBsZWZ0YCxg6L+Y5YmpICR7aX1gKX07c2V0SW50ZXJ2YWwoKCk9Pntmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY291bnRkb3duW2RhdGEtdW50aWxdIikpZS50ZXh0Q29udGVudD1aZyhlLmRhdGFzZXQudW50aWw/PyIiKX0sMWUzKTtsZXQgemU9bnVsbDtjb25zdCBaaT04ZTMsZ3U9KCk9Pnt6ZT8udGltZXImJmNsZWFyVGltZW91dCh6ZS50aW1lciksemU9bnVsbH0sRV89ZT0+dD0+e2NvbnN0IG49KHQ/LmJvb2tpbmdzPz9bXSkuZmluZChvPT5TdHJpbmcoby5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtyZXR1cm4hbnx8IVsiYXdhaXRpbmctcGF5bWVudCIsInJlcXVlc3RlZCIsImNvbmZpcm1lZCJdLmluY2x1ZGVzKFN0cmluZyhuLnN0YXR1cykpP3Q6ey4uLnQsdmlldzoiYm9va2luZyIsYm9va2luZzpuLGJvb2tpbmdzOnZvaWQgMCx0b3RhbDpuLnF1b3RlPy50b3RhbH19LGpnPWU9PntndSgpLGooImxpc3RCb29raW5ncyIsaXQoZSkse3B1c2g6ITEsZm9sZDpFXyhlKX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBjaGVjayB0aGUgcGF5bWVudCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73mn6XliLDku5jmrL7nirbmgIHjgIIiKSkpfSwkZD1lPT4hIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb250ZW50IFtkYXRhLWFjdD0icGF5Il1bZGF0YS1jb2RlPSIke0NTUy5lc2NhcGUoZSl9Il1gKSxidT1lPT57Y29uc3QgdD11ZygibGlzdEJvb2tpbmdzIik7aWYoIXR8fCF6ZXx8emUuY29kZSE9PWUpcmV0dXJuO2lmKCEkZChlKXx8RGF0ZS5ub3coKT56ZS51bnRpbCs2ZTQpe2d1KCk7cmV0dXJufWNvbnN0IG49bz0+e3plPy5jb2RlPT09ZSYmKHplLnRpbWVyPXNldFRpbWVvdXQoKCk9PmJ1KGUpLG8pKX07QWUuY2FsbFNlcnZlclRvb2woe25hbWU6dCxhcmd1bWVudHM6Y2coaXQoZSkpfSkudGhlbihvPT57Y29uc3Qgcz0obz8uc3RydWN0dXJlZENvbnRlbnQ/LmJvb2tpbmdzPz9bXSkuZmluZChyPT5TdHJpbmcoci5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtzJiZzLnN0YXR1cyE9PSJhd2FpdGluZy1wYXltZW50IiYmJGQoZSk/amcoZSk6bihaaSl9KS5jYXRjaCgoKT0+bihaaSoyKSl9LE1nPSgpPT57emUmJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSE9PSJoaWRkZW4iJiYoemUudGltZXImJmNsZWFyVGltZW91dCh6ZS50aW1lciksYnUoemUuY29kZSkpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixNZyk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixNZyk7Y29uc3Qga2Q9ZT0+ZS5sZW5ndGg/YDxzZWN0aW9uIGNsYXNzPSJmYWlsZWQiIGFyaWEtbGFiZWw9IiR7bChjKCJOb3QgYm9va2VkIiwi5pyq6K6i5oiQIikpfSI+CiAgICAgICAgIDxoMyBjbGFzcz0ic2VjIj4ke2woYyhgTm90IGJvb2tlZCAoJHtlLmxlbmd0aH0pYCxg5pyq6K6i5oiQ77yIJHtlLmxlbmd0aH3vvIlgKSl9PC9oMz4KICAgICAgICAgJHtlLm1hcCgodCxuKT0+e2NvbnN0IG89QXJyYXkuaXNBcnJheSh0LmFsdGVybmF0aXZlcyk/dC5hbHRlcm5hdGl2ZXM6W107cmV0dXJuYDxkaXYgY2xhc3M9ImZhaWwiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmYWlsLWgiPiR7RS5lcnJvcn08ZGl2PjxkaXYgY2xhc3M9IndoZXJlIj4ke1p0KFN0cmluZyh0LmhvdGVsTmFtZT8/IiIpKX08L2Rpdj4ke3RpKHQuc3RheSx0LmhvdXJseSl9PC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJmYWlsLXdoeSI+JHtsKElzKHQud2h5LHQuY29kZSx0LmFyZ3MpKX08L3A+CiAgICAgICAgICAgICAgICR7by5sZW5ndGg/YDxkaXYgY2xhc3M9ImZhaWwtYWx0cyI+PGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoIkJvb2thYmxlIGluc3RlYWQsIHRoZSBzYW1lIG5pZ2h0cyIsIuWQjOaXpeacn+i/mOWPr+S7peiuoiIpKX08L2Rpdj4ke28ubWFwKChzLHIpPT5gPGRpdiBjbGFzcz0iYWx0Ij48ZGl2IGNsYXNzPSJhbHQtdCI+PGI+JHtsKHMubmFtZSl9PC9iPjxzbWFsbD4ke2woW3Mucm9vbSxzLnRvdGFsP2MoYCR7cy50b3RhbH0gZm9yIHRoZSBzdGF5YCxg5YWxICR7cy50b3RhbH1gKToiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zbWFsbD48L2Rpdj48YnV0dG9uIGNsYXNzPSJnbyBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLXN3YXA9IiR7bn06JHtyfSI+JHtsKGMoIlRha2UgdGhpcyBpbnN0ZWFkIiwi5o2i5oiQ6L+Z5a62IikpfTwvYnV0dG9uPjwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZhaWwtZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQgc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InJldHJ5LXRyaXAiPiR7bChjKCJUcnkgYWdhaW4iLCLph43or5UiKSl9PC9idXR0b24+JHt0LmNpdHk/YDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtcmVzZWFyY2g9IiR7bn0iPiR7bChjKCJGaW5kIGFub3RoZXIgaG90ZWwiLCLmjaLkuIDlrrYiKSl9PC9idXR0b24+YDoiIn08L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX0KICAgICAgIDwvc2VjdGlvbj5gOiIiLHdkPSgpPT57aWYoVGUpcmV0dXJuO2NvbnN0IGU9UD8/e30sdD1BcnJheS5pc0FycmF5KGUuYm9va2luZ3MpJiZlLmJvb2tpbmdzWzBdPy5ndWVzdHx8ZS5ib29raW5nPy5ndWVzdDshdD8ubmFtZXx8IXQ/LmVtYWlsfHwoVGU9e25hbWU6U3RyaW5nKHQubmFtZSksZW1haWw6U3RyaW5nKHQuZW1haWwpLC4uLnQucGhvbmU/e3Bob25lOlN0cmluZyh0LnBob25lKX06e30sbm90ZXM6IiIsYXJyaXZpbmdBdDoiIixyZXF1ZXN0czpbXSxyZW1lbWJlcjohMX0pfSxSXz1lPT57Y29uc3QgdD1BcnJheS5pc0FycmF5KGUuZmFpbGVkKT9lLmZhaWxlZDpbXTtpZighZS5ib29raW5nJiYhKEFycmF5LmlzQXJyYXkoZS5ib29raW5ncykmJmUuYm9va2luZ3MubGVuZ3RoKSYmdC5sZW5ndGgpcmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQgZW5kZWQiIHJvbGU9InN0YXR1cyI+CiAgICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIj4ke0UuZXJyb3J9PC9kaXY+CiAgICAgICAgIDxoMiBjbGFzcz0iYm9va2VkLXQiPiR7bChjKCJOb3QgYm9va2VkIiwi5rKh6IO96aKE6K6iIikpfTwvaDI+CiAgICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKHQubGVuZ3RoPT09MT9jKCJUaGF0IHN0YXkgY291bGQgbm90IGJlIGJvb2tlZC4gTm90aGluZyB3YXMgY2hhcmdlZC4iLCLov5nkuIDmrrXmsqHog73pooTorqLvvIzmsqHmnInmiaPmrL7jgIIiKTpjKGBOb25lIG9mIHRoZSAke3QubGVuZ3RofSBzdGF5cyBjb3VsZCBiZSBib29rZWQuIE5vdGhpbmcgd2FzIGNoYXJnZWQuYCxgJHt0Lmxlbmd0aH0g5q616YO95rKh6IO96aKE6K6i77yM5rKh5pyJ5omj5qy+44CCYCkpfTwvcD4KICAgICAgIDwvZGl2PmAsa2QodCldLmpvaW4oIiIpO2NvbnN0IG49QXJyYXkuaXNBcnJheShlLmJvb2tpbmdzKSYmZS5ib29raW5ncy5sZW5ndGg/ZS5ib29raW5nczpbZS5ib29raW5nPz97fV0sbz1uLmZpbmQoQz0+Qz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiJiZDPy5wYXltZW50KTtpZihvJiZuLmxlbmd0aD09PTEpcmV0dXJuIENfKGUsbyk7Y29uc3Qgcz1uLmxlbmd0aD4xLHI9bi5maWx0ZXIoQz0+Qz8ucGVuZGluZykubGVuZ3RoLHtuYW1lOmksYm9va2luZ01vZGU6YSxkZW1vOnUsc2FuZGJveDpkLC4uLnB9PVVlKG5bMF0/LnN1cHBsaWVyKSxoPUM9Pmp3KEMpJiYoQz09PSJsaXN0RXh0cmFzIj9wLmV4dHJhczpDPT09ImNoYW5nZUJvb2tpbmciP3AuY2hhbmdlczohMCksZj1DPT5hPT09ImhvbGQiJiYhdSYmKEMuaG9sZFVudGlsTG9jYWx8fEMuaG9sZFVudGlsKT9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke0UuY2xvY2t9PHNwYW4+JHtsKGMoYFRoZSByb29tIGlzIGhlbGQgZm9yIHlvdSB1bnRpbCAke3lkKEMpfS5gLGDmiL/pl7TkuLrkvaDkv53nlZnliLAgJHt5ZChDKX3jgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsJD0oQyxHZSx2dCk9PihuaT0hIUMucXVvdGU/LnRheGVzQW5kRmVlcyYmQy5xdW90ZS50YXhlc0FuZEZlZXMhPT0iSW5jbHVkZWQiLFtDLnBlbmRpbmc/YDxkaXYgY2xhc3M9ImNvbmYgdGlja2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJCZWluZyBjb25maXJtZWQiLCLnoa7orqTkuK0iKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29kZSBwZW5kaW5nIj4ke2MoIkNvZGUgb25jZSBjb25maXJtZWQiLCLnoa7orqTlkI7nu5nlh7rnoa7orqTnoIEiKX08L2Rpdj5gOmA8ZGl2IGNsYXNzPSJjb25mIHRpY2tldCI+CiAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKEMuY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+YCxgCiAgICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke1p0KEMuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICAgJHt0aShDLnN0YXksQy5ob3VybHkpfQogICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVuIj4ke1BfKEMuZ3Vlc3QpfTwvZGl2PgogICAgICAgPC9kaXY+YCxmKEMpLGE9PT0icGF5LWF0LWhvdGVsIiYmQy5zdGF0dXM9PT0icmVxdWVzdGVkIj9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke0UuY2xvY2t9PHNwYW4+JHtsKGMoYFdhaXRpbmcgZm9yICR7aX0gdG8gY29uZmlybSB0aGlzIGJvb2tpbmcg4oCUIHRoYXQgdGFrZXMgdXAgdG8gZWlnaHQgbWludXRlcy4gTXkgYm9va2luZ3Mgc2hvd3Mgd2hlbiBpdCBoYXMuYCxg5q2j5Zyo562JJHt1ZShpKX3noa7orqTov5nnrJTpooTorqLvvIzmnIDlpJrnuqblhavliIbpkp/jgILnoa7orqTlkI7lj6/lnKjigJzmiJHnmoTpooTorqLigJ3ph4znnIvliLDjgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9InJvd3MiPiR7KEMucXVvdGU/LmxpbmVzPz9bXSkubWFwKHFnKS5qb2luKCIiKX08L2Rpdj5gLEMucXVvdGU/LnN1YnRvdGFsJiZDLnF1b3RlPy50YXhlc0FuZEZlZXM/RWkoe3N1YnRvdGFsOkMucXVvdGUuc3VidG90YWwsdGF4ZXNBbmRGZWVzOkMucXVvdGUudGF4ZXNBbmRGZWVzLHRvdGFsOkdlLGxpbmVzOkMucXVvdGUubGluZXM/P1tdfSxjKCJUb3RhbCIsIuaAu+S7tyIpKTpgPGRpdiBjbGFzcz0ibW9uZXktb3V0Ij48c3Bhbj4ke2MoIlRvdGFsIiwi5oC75Lu3Iil9PC9zcGFuPjxzcGFuPiR7bChHZSl9PC9zcGFuPjwvZGl2PmAsQV8odnQpLHM/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgJHtoKCJsaXN0RXh0cmFzIik/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bChDLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJBZGQtb25zIiwi6ZmE5Yqg5pyN5YqhIil9PC9idXR0b24+YDoiIn0KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woQy5jb25maXJtYXRpb25Db2RlKX0iPiR7bChjKGBDYW5jZWwgJHtDLmhvdGVsTmFtZX1gLGDlj5bmtogke0MuaG90ZWxOYW1lfWApKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOiIiXS5qb2luKCIiKSksaz1hPT09InBheS1hdC1ob3RlbCImJm4uc29tZShDPT5DLnN0YXR1cz09PSJyZXF1ZXN0ZWQiKSx6PXM/IiI6blswXT8ucGF5bWVudD8uc3RhdHVzPT09InBhaWQiP1N0cmluZyhuWzBdLnBheW1lbnQuYW1vdW50Pz8iIik6IiIsQT0hcyYmblswXT8ucGF5bWVudD8uc3RhdHVzPT09InBhaWQiLHg9QT9uWzBdPy5zdGF0dXM9PT0iY29uZmlybWVkIj9kP2MoIlRlc3QgYm9va2luZyBwYWlkIGFuZCBib29rZWQiLCLmtYvor5XpooTorqLlt7Lku5jmrL7lubborqLlpb0iKTpjKGBQYWlkIGFuZCBib29rZWQgd2l0aCAke2l9YCxg5bey5LuY5qy+77yMJHt1ZShpKX3lt7Lnoa7orqRgKTpjKGBQYWlkIOKAlCB3YWl0aW5nIGZvciAke2l9IHRvIGNvbmZpcm1gLGDlt7Lku5jmrL7vvIznrYnlvoUke3VlKGkpfeehruiupGApOmQ/YygiVGVzdCBib29raW5nIG1hZGUiLCLmtYvor5XpooTorqLlt7Lmj5DkuqQiKTphPT09InBheS1hdC1ob3RlbCI/az9jKGBTZW50IHRvICR7aX1gLGDlt7Lmj5DkuqTnu5kke3VlKGkpfWApOmMoYEJvb2tlZCB3aXRoICR7aX1gLGDlt7LlnKgke3VlKGkpfemihOiuouaIkOWKn2ApOnU/YygiRGVtbyBib29raW5nIG1hZGUiLCLmvJTnpLrpooTorqLlt7Lmj5DkuqQiKTpjKHM/IlJvb21zIGhlbGQiOiJSb29tIGhlbGQiLCLmiL/pl7Tlt7Lkv53nlZkiKSxUPVN0cmluZyhuWzBdPy5zdGF0dXM/PyIiKSxaPSFzJiZbImNhbmNlbGxlZCIsImV4cGlyZWQiLCJmYWlsZWQiXS5pbmNsdWRlcyhUKSxzZT0hcyYmKFQ9PT0idW5jb25maXJtZWQifHxUPT09InJlcXVlc3RlZCImJmE9PT0icGF5LWF0LWhvdGVsIiksSj0hIWUub3BlbmVkJiYhcyxWPUo/Wj9jKFJuW1RdPy5bMF0/PyJFbmRlZCIsUm5bVF0/LlsxXT8/IuW3sue7k+adnyIpOkE/eDpzZT9jKCJXYWl0aW5nIGZvciBjb25maXJtYXRpb24iLCLnrYnlvoXnoa7orqQiKTpUPT09InJlcXVlc3RlZCI/dT9jKCJEZW1vIGJvb2tpbmciLCLmvJTnpLrpooTorqIiKTpjKCJSb29tIGhlbGQiLCLmiL/pl7Tlt7Lkv53nlZkiKTpkP2MoIlRlc3QgYm9va2luZyBjb25maXJtZWQiLCLmtYvor5XpooTorqLlt7Lnoa7orqQiKTpjKCJCb29raW5nIGNvbmZpcm1lZCIsIumihOiuouW3suehruiupCIpOng7cmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQke0omJlo/IiBlbmRlZCI6SiYmc2U/IiB3YWl0aW5nIjoiIn0iIHJvbGU9InN0YXR1cyI+CiAgICAgICA8ZGl2IGNsYXNzPSJib29rZWQtbWFyayI+JHtKJiZaP0UuZXJyb3I6SiYmc2U/RS5jbG9jazpFLmRvbmV9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2woVil9PC9oMj4KICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKEomJlo/YygiVGhpcyBib29raW5nIG5vIGxvbmdlciBob2xkcyBhIHJvb20uIiwi6L+Z56yU6aKE6K6i5bey5LiN5YaN5Y2g55So5oi/6Ze044CCIik6dC5sZW5ndGh8fHMmJnI/YyhgJHtuLmxlbmd0aC1yfSBvZiAke24ubGVuZ3RoK3QubGVuZ3RofSBzdGF5cyBib29rZWQsIG9uZSBjb2RlIGVhY2gke3I/YCwgJHtyfSBiZWluZyBjb25maXJtZWRgOiIifSR7dC5sZW5ndGg/YCAtICR7dC5sZW5ndGg9PT0xPyJvbmUiOnQubGVuZ3RofSBjb3VsZCBub3QgYmUsIGJlbG93YDoiIn0uYCxgJHtuLmxlbmd0aCt0Lmxlbmd0aH0g5q616YeM6K6i5oiQICR7bi5sZW5ndGgtcn0g5q6177yM5q+P5q615LiA5Liq56Gu6K6k56CBJHtyP2DvvIwke3J9IOauteehruiupOS4rWA6IiJ9JHt0Lmxlbmd0aD9g77yb5Y+m5pyJICR7dC5sZW5ndGh9IOauteayoeiuouaIkO+8jOingeS4i+aWuWA6IiJ944CCYCk6cz9jKGAke24ubGVuZ3RofSBjb25maXJtYXRpb24gY29kZXMsIG9uZSBmb3IgZWFjaCBob3RlbC5gLGDlhbEgJHtuLmxlbmd0aH0g5Liq56Gu6K6k56CB77yM5q+P5a626YWS5bqX5LiA5Liq44CCYCk6YygiS2VlcCB0aGlzIGNvZGU6IHdpdGggaXQgYW5kIHlvdXIgZW1haWwsIHlvdSBjYW4gZmluZCB0aGlzIGJvb2tpbmcgYWdhaW4gZnJvbSBhbnkgY2hhdC4iLCLor7fkv53lrZjov5nkuKrnoa7orqTnoIHjgILlh63lroPlkozkvaDnmoTpgq7nrrHvvIzlnKjku7vkvZXlr7nor53ph4zpg73og73mib7lm57ov5nnrJTpooTorqLjgIIiKSl9PC9wPgogICAgIDwvZGl2PmAsLi4ubi5tYXAoQz0+cz8kKEMsU3RyaW5nKEMudG90YWw/PyIiKSxDKTokKEMsU3RyaW5nKGUudG90YWw/PyIiKSxlKSksa2QodCkscz9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYCR7bi5sZW5ndGh9IGJvb2tpbmdzLCBvbmUgZm9yIGVhY2ggc3RheS4gRWFjaCBob3RlbCBrZWVwcyBpdHMgb3duIG5pZ2h0cyB1bmRlciBpdHMgb3duIGNvZGUsIGFuZCBlYWNoIGlzICR7aCgiY2hhbmdlQm9va2luZyIpPyJjaGFuZ2VkIG9yIGNhbmNlbGxlZCI6ImNhbmNlbGxlZCJ9IG9uIGl0cyBvd24uYCxg5YWxICR7bi5sZW5ndGh9IOeslOmihOiuou+8jOavj+auteS9j+Wuv+S4gOeslO+8jOWQhOacieiHquW3seeahOehruiupOegge+8jCR7aCgiY2hhbmdlQm9va2luZyIpPyLkv67mlLnmiJblj5bmtogiOiLlj5bmtogifemDveimgeWIhuWIq+i/m+ihjOOAgmApKX08L2Rpdj5gOiIiLHo/YDxkaXYgY2xhc3M9InVucGFpZCBwYWlkIj4KICAgICAgIDxiPiR7bChjKGBQYWlkIGluIGFkdmFuY2U6ICR7en0uYCxg5bey6aKE5LuYICR7en3jgIJgKSl9PC9iPgogICAgICAgPHNwYW4+JHtsKGQ/YygiUGFpZCBpbiB0ZXN0IG1vZGUgLSBubyByZWFsIG1vbmV5IG1vdmVkLCBhbmQgdGhlIGJvb2tpbmcgaXMgaW4gYSBzaW11bGF0ZWQgc3lzdGVtLiIsIua1i+ivleaooeW8j+S7mOasvu+8jOayoeacieecn+WunuaJo+asvu+8m+iuouWNleWcqOaooeaLn+ezu+e7n+mHjOOAgiIpOmMoYE5vdGhpbmcgbW9yZSBpcyBwYWlkIGF0IHRoZSBob3RlbCBmb3IgdGhlIHJvb20uIElmICR7aX0gZG9lcyBub3QgY29uZmlybSBpdCwgYWxsIG9mIGl0IGdvZXMgYmFjayB0byB5b3VyIGNhcmQuYCxg5Yiw5bqX5LiN55So5YaN5LuY5oi/6LS544CC5aaC5p6cJHt1ZShpKX3msqHmnInnoa7orqTvvIzmrL7pobnkvJrlhajpop3pgIDlm57ljp/ljaHjgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6ZD9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiQSB0ZXN0IGJvb2tpbmcuIiwi6L+Z5piv5rWL6K+V6aKE6K6i44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtsKGMoYE1hZGUgaW4gYSBzaW11bGF0ZWQgY29weSBvZiAke2l9J3Mgc3lzdGVtOiBub3QgYSAke2l9IHJlc2VydmF0aW9uLCBubyByb29tIGlzIGhlbGQsIGFuZCBub3RoaW5nIGlzIHBhaWQuYCxg5ZyoJHt1ZShpKX3ns7vnu5/nmoTmqKHmi5/lia/mnKzph4znlJ/miJDvvIzkuI3mmK/nnJ/lrp7pooTorqLvvIzkuI3kv53nlZnmiL/pl7TvvIzkuZ/kuI3ku5jmrL7jgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6YT09PSJwYXktYXQtaG90ZWwiP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtsKGMoYCR7cz8iRWFjaCBpcyI6IlRoaXMgaXMifSAke2l9J3Mgb3duIHJlc2VydmF0aW9uLCBwYWlkIGF0IHRoZSBob3RlbC4gQSBjYXJkIGlzIHByZXNlbnRlZCBhdCBjaGVjay1pbiwgbm90IGhlcmUuYCxg6L+Z5pivJHt1ZShpKX3nmoTmraPlvI/pooTorqLvvIzliLDlupfku5jmrL7vvJvlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHvvIzov5nph4zkuI3mlLbmrL7jgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6dT9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiTm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkLiIsIuayoeacieaJo+asvuOAgiIpfTwvYj4KICAgICAgIDxzcGFuPiR7YyhgVGhpcyBpcyBhIGRlbW9uc3RyYXRpb24gYm9va2luZzogJHtsKGkpfSBoYXMgbm90IHJlY2VpdmVkIGl0LCBhbmQgbm8gcm9vbSBpcyBoZWxkIGF0IHRoZSBob3RlbC5gLGDov5nmmK/mvJTnpLrpooTorqLvvJoke2wodWUoaSkpfeayoeacieaUtuWIsO+8jOmFkuW6l+S5n+ayoeacieS4uuS9oOS/neeVmeaIv+mXtOOAgmApfTwvc3Bhbj4KICAgICA8L2Rpdj5gOmA8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtjKCJBIGNhcmQgaXMgcHJlc2VudGVkIGF0IGNoZWNrLWluLCBub3QgaGVyZS4iLCLlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHvvIzov5nph4zkuI3mlLbmrL7jgIIiKX08L3NwYW4+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTXkgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKX08L2J1dHRvbj4KICAgICAgICR7c3x8Wnx8cnx8IWgoImxpc3RFeHRyYXMiKT8iIjpgPGJ1dHRvbiBjbGFzcz0iZ28gc29mdCIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2woblswXT8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkFkZC1vbnMgZm9yIHRoaXMgc3RheSIsIuS4uui/measoeS9j+Wuv+WKoOi0rSIpfTwvYnV0dG9uPmB9CiAgICAgPC9kaXY+YCxzfHxafHxyPyIiOihuWzBdPy5xdW90ZT8ubGluZXM/P1tdKS5zb21lKEM9PkMua2luZD09PSJyb29tIikmJihuWzBdPy5xdW90ZT8ubGluZXM/P1tdKS5maWx0ZXIoQz0+Qy5raW5kPT09InJvb20iKS5ldmVyeShDPT5DLnJlZnVuZGFibGU9PT0hMSk/YDxwIGNsYXNzPSJxdWlldC1lbmQgbm90ZSI+JHtsKGMoIlRoaXMgcmF0ZSBjYW5ub3QgYmUgY2FuY2VsbGVkLCBhbmQgbm90aGluZyBvZiBpdCBpcyByZWZ1bmRlZC4iLCLmraTku7fmoLzkuI3lj6/lj5bmtojvvIzlt7Lku5jmrL7pobnkuI3pgIDjgIIiKSl9PC9wPmA6YDxkaXYgY2xhc3M9InF1aWV0LWVuZCI+PGJ1dHRvbiBjbGFzcz0ibGlua3kgZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woblswXT8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkNhbmNlbCB0aGlzIGJvb2tpbmciLCLlj5bmtojov5nnrJTpooTorqIiKX08L2J1dHRvbj48L2Rpdj5gXS5qb2luKCIiKX0sdnU9KGUsdCxuKT0+YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBNb3JlIHRoYW4gb25lICR7bj8/ImhvdGVsIn0gYW5zd2VycyB0byDigJwke2V94oCdOmAsYOKAnCR7ZX3igJ3lr7nlupTkuI3mraLkuIDlrrbphZLlupfvvJpgKSl9PC9kaXY+CiAgPGRpdiBjbGFzcz0icGxhY2VzIj4ke3QubWFwKG89PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChvLmlkKX0iPiR7bChvLm5hbWUpfSR7by5jaXR5P2AgPHNtYWxsPiR7bChvLmNpdHkpfTwvc21hbGw+YDoiIn08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gLHl1PWU9Pntjb25zdCB0PWUuZHJvcHBlZD8/W10sbj10LmZpbHRlcihvPT4hKG8uY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk7cmV0dXJuW24ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bi5tYXAobz0+YCR7bChvLm5hbWUpfTogJHtsKG9lPT09InpoIj8i6L+Z6YeM5rKh5pyJ5a+55bqU55qE6YWS5bqXIjpvLndoeSl9YCkuam9pbigiPGJyPiIpfTwvZGl2PmA6IiIsLi4udC5maWx0ZXIobz0+KG8uY2FuZGlkYXRlcz8/W10pLmxlbmd0aCkubWFwKG89PnZ1KG8ubmFtZSxvLmNhbmRpZGF0ZXMsZS52b2NhYj8ubm91bikpXS5qb2luKCIiKX0sT189L1xiKGF0IG9uY2V8dG9vIG1hbnl8YW4gaG91cnxwZXIgaG91cnxpbiB0aGUgbGFzdCBob3VyfGxpbWl0fHRyeSBhZ2FpbiAobGF0ZXJ8aW4pKVxiL2ksTl89eyJob3RlbC1ub3QtZm91bmQiOlsiVGhhdCBob3RlbCBpcyBub3QgaGVyZSIsIuayoeacieaJvuWIsOi/meWutumFkuW6lyJdLCJuby1zdWNoLXJvb20iOlsiVGhhdCByb29tIGlzIG5vdCBhdmFpbGFibGUiLCLor6XmiL/lnovmmoLkuI3lj6/orqIiXSwibm8tcm9vbS1uYW1lZCI6WyJUaGF0IHJvb20gaXMgbm90IGF2YWlsYWJsZSIsIuivpeaIv+Wei+aaguS4jeWPr+iuoiJdLCJuby1zdWNoLWV4dHJhIjpbIlRoYXQgYWRkLW9uIGlzIG5vdCBhdmFpbGFibGUiLCLov5npobnpmYTliqDmnI3liqHorqLkuI3kuoYiXSwibm8tc3VjaC1ncm91cCI6WyJUaGF0IGdyb3VwIGlzIG5vdCBpbiB0aGlzIG1hcmtldCIsIui/memHjOayoeaciei/meS4qumbhuWboiJdLCJ0cmlwLWdvbmUiOlsiVGhpcyB0cmlwIGhhcyBleHBpcmVkIiwi6L+Z5Liq6KGM56iL5bey6L+H5pyfIl0sImJvb2tpbmctZW5kZWQiOlsiVGhhdCBib29raW5nIGhhcyBlbmRlZCIsIui/meeslOmihOiuouW3sue7k+adnyJdLCJiYWQtY291bnQiOlsiVGhhdCBudW1iZXIgZG9lcyBub3Qgd29yayIsIuaVsOmHj+S4jeWvuSJdLCJzdGFydC10aW1lIjpbIlRoYXQgc3RhcnQgdGltZSBpcyBub3Qgb3BlbiIsIui/meS4quWIsOW6l+aXtumXtOS4jeWPr+mAiSJdLCJub3QtYm9va2FibGUiOlsiVGhpcyBjb3VsZCBub3QgYmUgYm9va2VkIiwi5pqC5pe25peg5rOV6aKE6K6iIl19LGVuPWU9Pi9b45CALem/v10vLnRlc3QoZSksdWU9ZT0+ZSYmIWVuKGUpPyLphZLlupciOmUsWl89ZT0+e2lmKChlLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGgpcmV0dXJuIHZ1KGUucXVlcnksZS5jYW5kaWRhdGVzLGUudm9jYWI/Lm5vdW4pO2NvbnN0IHQ9ZS5yb29tcz8/W10sbj1lLmVycm9yPT09InN0YXJ0LXRpbWUiP2Uud2luZG93OnZvaWQgMCxvPWUuZXJyb3I9PT0ibm8tc3VjaC1yb29tIiYmZS5ob3RlbD8uaWQmJmUuc3RheT8uY2hlY2tJbiYmdC5ldmVyeShoPT5oLmlkKT9gPGRpdiBjbGFzcz0ibGlua3MiPiR7dC5tYXAoaD0+YDxidXR0b24gY2xhc3M9Imxpbmstcm93IGFkZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFkZC1yb29tPSIke2woaC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5ob3RlbC5pZCl9IiBkYXRhLW49IjEiIGRhdGEtY2k9IiR7bChlLnN0YXkuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5LmNoZWNrT3V0KX0iIGRhdGEtZ3U9IiR7bChlLnN0YXkuZ3Vlc3RzPz9TLmd1ZXN0cyl9Ij48c3Bhbj4ke2woaC5uYW1lKX08L3NwYW4+PHNwYW4gY2xhc3M9ImxpbmstZ28iPiR7YygiUmVzZXJ2ZSIsIumihOiuoiIpfSR7RS5jaGV2Un08L3NwYW4+PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIixzPVN0cmluZyhlLmRldGFpbD8/ZS53aHk/PyIiKSxyPU9fLnRlc3QocyksaT1lLmVycm9yPT09InRyaXAtZ29uZSIsYT1pP2MoIlRyaXBzIGFyZSBrZXB0IGZvciA0IGhvdXJzIGFmdGVyIHRoZWlyIGxhc3QgY2hhbmdlLCBhbmQgdGhpcyBvbmUgaGFzIGdvbmUgLSB0cnlpbmcgYWdhaW4gd2lsbCBub3QgYnJpbmcgaXQgYmFjay4gQXNrIHRoZSBhc3Npc3RhbnQgdG8gc2hvdyB5b3VyIHRyaXAgYWdhaW4sIG9yIHNlYXJjaCBhZ2FpbiBoZXJlLiIsIuihjOeoi+WPquWcqOacgOWQjuS4gOasoeaUueWKqOWQjuS/neeVmSA0IOWwj+aXtu+8jOi/meS4quW3sue7j+i/h+acn++8jOWGjeivleS5n+S4jeS8muaBouWkjeOAguivt+iuqeWKqeaJi+mHjeaWsOaYvuekuuihjOeoi++8jOaIluWcqOi/memHjOmHjeaWsOaQnOe0ouOAgiIpOm4/YyhgJHtlLnF1ZXJ5P2Ake2UucXVlcnl9IGlzIG5vdCBhIHN0YXJ0IHRoaXMgcm9vbSB0YWtlcy4gYDoiIn1JdCBzdGFydHMgYmV0d2VlbiAke24uZWFybGllc3RTdGFydH0gYW5kICR7bi5sYXRlc3RTdGFydH0gdG9kYXksIGZvciAke24uaG91cnN9IGhvdXJzLCBhbmQgaXMgbGVmdCBieSAke24ubGF0ZXN0RW5kfS5gLGAke2UucXVlcnk/YCR7ZS5xdWVyeX0g5LiN6IO95L2c5Li65Yiw5bqX5pe26Ze044CCYDoiIn3ov5npl7Tpkp/ngrnmiL/ku4rlpKkgJHtuLmVhcmxpZXN0U3RhcnR94oCTJHtuLmxhdGVzdFN0YXJ0fSDkuYvpl7TliLDlupfvvIzkvY8gJHtuLmhvdXJzfSDlsI/ml7bvvIzmnIDmmZogJHtuLmxhdGVzdEVuZH0g56a75bqX44CCYCk6ZS5lcnJvcj09PSJuby1zdWNoLXJvb20iJiZ0Lmxlbmd0aD9vP2MoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gVGhlc2UgYXJlIG9wZW4g4oCUIHRhcCBvbmUgdG8gcmVzZXJ2ZSBpdDpgLGAke2UuaG90ZWw/Lm5hbWU/PyLov5nlrrbphZLlupcifeWcqOi/meS6m+aXpeacn+ayoeaciei/meS4quaIv+Wei+OAguS4i+mdoui/meS6m+WPr+S7peiuou+8jOeCueS4gOS4i+WNs+WPr+mihOiuou+8mmApOmMoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gSXQgaGFzICR7TmkodC5tYXAoaD0+U3RyaW5nKGgubmFtZSkpKX0uYCxgJHtlLmhvdGVsPy5uYW1lPz8i6L+Z5a626YWS5bqXIn3lnKjov5nkupvml6XmnJ/msqHmnInov5nkuKrmiL/lnovvvIzlj6/orqLnmoTmnInvvJoke05pKHQubWFwKGg9PlN0cmluZyhoLm5hbWUpKSl944CCYCk6ciYmb2U9PT0iemgiJiYhZW4ocyk/Iui/measoeayoeaciemihOiuouaIkOWKn++8jOS5n+ayoeacieaJo+asvuOAgui/meauteWvueivnemHjOeahOmihOiuouW3suWIsOS4iumZkO+8muivt+WFiOWcqOKAnOaIkeeahOmihOiuouKAnemHjOWPlua2iOS4jemcgOimgeeahO+8jOWGjeivleS4gOasoeOAgiI6cyYmKG9lIT09InpoInx8ZW4ocykpP3M6YygiVGhhdCBjb3VsZCBub3QgYmUgZG9uZS4iLCLov5nkuIDmraXmsqHog73lrozmiJDvvIzor7fnqI3lkI7lho3or5XjgIIiKSx1PU5fW1N0cmluZyhlLmVycm9yKV0sZD1yP2MoIkJvb2tpbmcgbGltaXQgcmVhY2hlZCIsIuW3sui+vumihOiuouS4iumZkCIpOnU/Yyh1WzBdLHVbMV0pOmMoIlRoYXQgZGlkIG5vdCB3b3JrIiwi5rKh6IO95a6M5oiQIikscD1bZS5ob3RlbD8uaWQ/YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsLmlkKX0iJHtlLnN0YXk/LmNoZWNrSW4/YCBkYXRhLWNpPSIke2woZS5zdGF5LmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGUuc3RheS5jaGVja091dCl9ImA6IiJ9PiR7bChvP2MoIlNlZSBhbGwgcm9vbXMiLCLmn6XnnIvlhajpg6jmiL/lnosiKTpjKCJTZWUgdGhlIHJvb21zIiwi5p+l55yL5oi/5Z6LIikpfTwvYnV0dG9uPmA6IiIsciYmSm8oImxpc3RCb29raW5ncyIpP2A8YnV0dG9uIGNsYXNzPSJnbyR7ZS5ob3RlbD8uaWQ/IiBxdWlldCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPmA6IiIsIWUuaG90ZWw/LmlkJiYhciYmdmUubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYmFjayI+JHtFLmNoZXZMfSR7bChjKGBCYWNrIHRvICR7dmUuYXQoLTEpPy5sYWJlbD8/IndoZXJlIHlvdSB3ZXJlIn1gLCLov5Tlm54iKSl9PC9idXR0b24+YDoiIixJdD4wP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCI+JHtjKCJWaWV3IHRoZSB0cmlwIiwi5p+l55yL6KGM56iLIil9PC9idXR0b24+YDoiIl0uZmlsdGVyKEJvb2xlYW4pO3JldHVybiBpJiZwLnNwbGljZSgwLHAubGVuZ3RoLGA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLXRyaXAtYWdhaW4iPiR7YygiQXNrIHRoZSBhc3Npc3RhbnQgdG8gc2hvdyBpdCBhZ2FpbiIsIuiuqeWKqeaJi+mHjeaWsOaYvuekuuihjOeoiyIpfTwvYnV0dG9uPmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIlNlYXJjaCBhZ2FpbiIsIumHjeaWsOaQnOe0oiIpfTwvYnV0dG9uPmApLHAubGVuZ3RofHxwLnB1c2goYDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPmApLGAKICAgIDxkaXYgY2xhc3M9InN0YXRlICR7cj8ibGltaXQiOiJlcnJvciJ9IiByb2xlPSJhbGVydCI+CiAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtyP0UuY2xvY2s6RS5lcnJvcn08L2Rpdj4KICAgICAgPGgyIGNsYXNzPSJzdGF0ZS10Ij4ke2woZCl9PC9oMj4KICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChhKX08L3A+CiAgICAgICR7b30KICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+JHtwLmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YH0scWc9ZT0+YAogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2woZS5kZXRhaWw/WHQoZS5kZXRhaWwpOmUua2luZD09PSJyb29tIj9laShlLnN0YXksZS5ob3VybHkpOiIiKX08L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtbGluZSI+JHtsKGUudG90YWwpfTwvZGl2PiR7ZS5raW5kPT09InJvb20iJiZuaT9gPGRpdiBjbGFzcz0icC11bml0Ij4ke2MoImJlZm9yZSB0YXhlcyIsIuacquWQq+eojui0uSIpfTwvZGl2PmA6IiJ9PC9kaXY+CiAgPC9kaXY+YCxqXz17ImF3YWl0aW5nLXBheW1lbnQiOiJ3YXJuIixyZXF1ZXN0ZWQ6Indhcm4iLGNvbmZpcm1lZDoiZ29vZCIsY2FuY2VsbGVkOiJiYWQiLGV4cGlyZWQ6ImJhZCIsZmFpbGVkOiJiYWQiLHVuY29uZmlybWVkOiJ3YXJuIn0sUm49eyJhd2FpdGluZy1wYXltZW50IjpbIkF3YWl0aW5nIHBheW1lbnQiLCLlvoXku5jmrL4iXSxyZXF1ZXN0ZWQ6WyJSZXF1ZXN0ZWQiLCLlvoXnoa7orqQiXSxjb25maXJtZWQ6WyJDb25maXJtZWQiLCLlt7Lnoa7orqQiXSxjYW5jZWxsZWQ6WyJDYW5jZWxsZWQiLCLlt7Llj5bmtogiXSxleHBpcmVkOlsiRXhwaXJlZCIsIuW3sui/h+acnyJdLGZhaWxlZDpbIk5vdCBtYWRlIiwi5pyq5oiQ5YqfIl0sdW5jb25maXJtZWQ6WyJCZWluZyBjaGVja2VkIiwi5qC45a6e5LitIl19LE1fPWU9Pntjb25zdCB0PWUucmVxdWVzdHM/LmtpbmRzPz9bXTtpZighdC5sZW5ndGgpcmV0dXJuIiI7Y29uc3Qgbj10Lm1hcChBcyk7cmV0dXJuYDxkaXYgY2xhc3M9Im1ldGEgYXNrZWQtbGluZSI+JHtsKGMoYEFza2VkIGZvciAke24uam9pbigiLCAiKS50b0xvd2VyQ2FzZSgpfWAsYOW3suaPkOWHuu+8miR7bi5qb2luKCLjgIEiKX1gKSl9PC9kaXY+YH0scV89e2F3YWl0aW5nOlsiVG8gYmUgcGFpZCIsIuW+heS7mOasviIsIndhcm4iXSxwYWlkOlsiUGFpZCBpbiBhZHZhbmNlIiwi5bey6aKE5LuYIiwiZ29vZCJdLGxhcHNlZDpbIk5vdCBwYWlkIGluIHRpbWUiLCLotoXml7bmnKrku5giLCIiXSxyZWZ1bmRpbmc6WyJSZWZ1bmQgdW5kZXIgd2F5Iiwi6YCA5qy+5LitIiwiIl0scmVmdW5kZWQ6WyJSZWZ1bmRlZCBpbiBmdWxsIiwi5bey5YWo6aKd6YCA5qy+IiwiIl19LExfPWU9Pntjb25zdCB0PXFfW1N0cmluZyhlPy5wYXltZW50Py5zdGF0dXM/PyIiKV07cmV0dXJuIHQ/YDxzcGFuIGNsYXNzPSJiYWRnZSAke3RbMl19Ij4ke2ModFswXSx0WzFdKX08L3NwYW4+YDoiIn0sRF89ZT0+e2NvbnN0IHQ9ZS5ib29raW5ncz8/W10sbj1lLm5vdEZvdW5kP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bChlLnRvb01hbnk/b2U9PT0iemgiJiYhZW4oU3RyaW5nKGUubm90Rm91bmRMaW5lPz8iIikpPyLlsJ3or5XmrKHmlbDov4flpJrvvIzor7fnqI3lkI7lho3or5XjgIIiOmUubm90Rm91bmRMaW5lOmMoYE5vIGJvb2tpbmcgbWF0Y2hlcyAke2Uubm90Rm91bmR9IHdpdGggdGhhdCBlbWFpbC4gQm90aCBoYXZlIHRvIGJlIGFzIHRoZXkgYXJlIG9uIHRoZSBjb25maXJtYXRpb24uYCxg5rKh5pyJ5om+5Yiw56Gu6K6k56CBICR7ZS5ub3RGb3VuZH0g5ZKM6L+Z5Liq6YKu566x5a+55bqU55qE6aKE6K6i44CC5Lik6aG56YO96KaB5ZKM56Gu6K6k5L+h5oGv5LiK55qE5LiA6Ie044CCYCkpfTwvZGl2PmA6IiI7cmV0dXJuIGUubm90Rm91bmQmJnQubGVuZ3RoPT09MD9gJHtufQogICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIlRyeSBhZ2FpbiIsIuWGjeivleS4gOasoSIpfTwvYnV0dG9uPjwvZGl2PmA6dC5sZW5ndGg9PT0wP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJObyBib29raW5ncyBpbiB0aGlzIGNvbnZlcnNhdGlvbiB5ZXQuIiwi6L+Z5qyh5a+56K+d6YeM6L+Y5rKh5pyJ6aKE6K6i44CCIil9PC9kaXY+YDpbbixgPGRpdiBjbGFzcz0icm93cyI+JHt0Lm1hcChvPT5gCiAgICAgIDxkaXYgY2xhc3M9InJvdyBib29raW5nLXJvdyIgZGF0YS1vcGVuLWJvb2tpbmc9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+CiAgICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke1p0KG8uaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSDCtyAke2woZWkoby5zdGF5LG8uaG91cmx5KSl9PC9kaXY+CiAgICAgICAgICAke01fKG8pfQogICAgICAgICAgPGRpdiBjbGFzcz0iYmFkZ2VzIj4ke0xfKG8pfTxzcGFuIGNsYXNzPSJiYWRnZSAke2pfW1N0cmluZyhvLnN0YXR1cyldPz8iIn0iPiR7bChSbltTdHJpbmcoby5zdGF0dXMpXT9jKFJuW1N0cmluZyhvLnN0YXR1cyldPy5bMF0/PyIiLFJuW1N0cmluZyhvLnN0YXR1cyldPy5bMV0/PyIiKTpvLnN0YXR1cyl9PC9zcGFuPjwvZGl2PgogICAgICAgICAgJHtvLnN0YXR1cz09PSJ1bmNvbmZpcm1lZCI/YDxkaXYgY2xhc3M9Im1ldGEiPiR7bChjKGBOb3Qga25vd24geWV0IHdoZXRoZXIgJHtVZShvLnN1cHBsaWVyKS5uYW1lfSBtYWRlIHRoaXMgYm9va2luZyDigJQgYSBwZXJzb24gaXMgY29uZmlybWluZyBpdC5gLGDov5jkuI3noa7lrpoke1VlKG8uc3VwcGxpZXIpLm5hbWV95piv5ZCm5bey55Sf5oiQ6L+Z56yU6aKE6K6i77yM5q2j5Zyo5Lq65bel5qC45a6e44CCYCkpfTwvZGl2PmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChvLnF1b3RlPy50b3RhbD8/IiIpfTwvZGl2PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtvLnN0YXR1cz09PSJhd2FpdGluZy1wYXltZW50IiYmby5wYXltZW50Py51cmw/YDxidXR0b24gY2xhc3M9ImdvIHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXkiIGRhdGEtdXJsPSIke2woby5wYXltZW50LnVybCl9IiBkYXRhLWNvZGU9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSIgZGF0YS11bnRpbD0iJHtsKG8ucGF5bWVudC5wYXlCeT8/IiIpfSI+JHtjKCJQYXkiLCLljrvku5jmrL4iKX0gJHtsKG8ucGF5bWVudC5hbW91bnQ/PyIiKX08L2J1dHRvbj5gOm8uc3RhdHVzPT09InJlcXVlc3RlZCJ8fG8uc3RhdHVzPT09ImNvbmZpcm1lZCI/YCR7Sm8oImxpc3RFeHRyYXMiKSYmVWUoby5zdXBwbGllcikuZXh0cmFzP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQWRkLW9ucyIsIumZhOWKoOacjeWKoSIpfTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIiwi5Y+W5raIIil9PC9idXR0b24+YDoiIn08YnV0dG9uIGNsYXNzPSJvcGVuLWdvIiB0eXBlPSJidXR0b24iIGRhdGEtb3Blbi1ib29raW5nPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iIGFyaWEtbGFiZWw9IiR7bChjKGBTZWUgYm9va2luZyAke28uY29uZmlybWF0aW9uQ29kZX1gLGDmn6XnnIvpooTorqIgJHtvLmNvbmZpcm1hdGlvbkNvZGV9IOeahOivpuaDhWApKX0iPiR7RS5jaGV2Un08L2J1dHRvbj48L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YF0uam9pbigiIil9LF9kPWU9Pntjb25zdCB0PWUudmlldz09PSJjYW5jZWxsZWQiLG49ZS5ib29raW5nPz97fTtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHt0P2MoIkNhbmNlbGxlZCIsIuW3suWPlua2iCIpOmMoIkNhbmNlbGxpbmciLCLmraPlnKjlj5bmtogiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9ImNvZGUiPiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfTwvZGl2PgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9InN1bXMiPgogICAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke3Q/YygiVGhlIGhvdGVsIGNoYXJnZXMiLCLphZLlupfmlLblj5YiKTpjKCJDYW5jZWxsaW5nIHdvdWxkIGNvc3QiLCLlj5bmtojpnIDmlK/ku5giKX08L3NwYW4+PHNwYW4+JHtsKGUuZmVlKX08L3NwYW4+PC9kaXY+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGUucnVsZSl9PC9kaXY+YCx0PyIiOmUuY2FuY2VsbGFibGU/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIktlZXAgaXQiLCLkuI3lj5bmtojkuoYiKX08L2J1dHRvbj4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIGRhbmdlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWNvbmZpcm0tY2FuY2VsPSIke2wobi5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIHRoZSBib29raW5nIiwi56Gu6K6k5Y+W5raIIil9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDpgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJUaGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gY2FuY2VsIG9uIHRoaXMgYm9va2luZy4iLCLov5nnrJTpooTorqLlt7LmsqHmnInlj6/lj5bmtojnmoTlhoXlrrnjgIIiKX08L2Rpdj5gXS5qb2luKCIiKX0sU2Q9ZT0+e2NvbnN0IHQ9ZS52aWV3PT09ImNoYW5nZWQiLG49ZS5ib29raW5nPz97fSxvPWUuZnJvbT8/e30scz1lLnRvLHI9ISFzJiYocy5jaGVja0luIT09by5jaGVja0lufHxzLmNoZWNrT3V0IT09by5jaGVja091dHx8TnVtYmVyKHMucm9vbXMpIT09TnVtYmVyKG8ucm9vbXMpfHxzLnJvb21OYW1lIT09by5yb29tTmFtZSksaT0oYSx1LGQpPT51P2A8ZGl2IGNsYXNzPSJsZWcke2Q/IiB3YXMiOiIifSI+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnayI+JHtsKGEpfTwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ3YiPiR7bChfZShTdHJpbmcodS5jaGVja0luKSkpfSDihpIgJHtsKF9lKFN0cmluZyh1LmNoZWNrT3V0KSkpfSDCtyAke2wocGUoTnVtYmVyKHUubmlnaHRzKSkpfTwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ20iPiR7bCh1LnJvb21OYW1lKX0ke051bWJlcih1LnJvb21zKT4xP2AgwrcgJHtsKEx3KE51bWJlcih1LnJvb21zKSkpfWA6IiJ9IMK3ICR7bCh1LnRvdGFsKX08L2Rpdj4KICAgICAgICAgPC9kaXY+YDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHt0P2MoIkNoYW5nZWQiLCLlt7Lkv67mlLkiKTpjKCJDaGFuZ2luZyIsIuS/ruaUuemihOiuoiIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKG4uY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+CiAgICAgPC9kaXY+YCxlLmhvdGVsTmFtZT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGUuaG90ZWxOYW1lKX08L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJsZWdzIj4ke2kodD9jKCJXYXMiLCLljp/mnaUiKTpjKCJOb3ciLCLnjrDlnKgiKSxlLmZyb20scil9JHtpKHQ/YygiTm93Iiwi546w5ZyoIik6YygiV291bGQgYmUiLCLmlLnkuLoiKSxlLnRvLCExKX08L2Rpdj5gLGUuYWRkT24/YDxkaXYgY2xhc3M9InN1bXMiPjxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtsKGUuYWRkT24ubmFtZSl9PC9zcGFuPjxzcGFuPiR7bChlLmFkZE9uLmZyb20pfSDihpIgJHtsKGUuYWRkT24udG8pfTwvc3Bhbj48L2Rpdj48L2Rpdj5gOiIiLGUuZGlmZmVyZW5jZT9gPGRpdiBjbGFzcz0ic3VtcyI+PGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2UucmVmdW5kRHVlP3Q/YygiVGhlIGRlc2sgb3dlcyIsIumFkuW6l+W6lOmAgCIpOmMoIldvdWxkIGNvbWUgYmFjayIsIuWwhumAgOWbniIpOmModD8iVGhlIGRlc2sgYXNrcyBmb3IiOiJXb3VsZCBjb3N0Iiwi6ZyA6KGl5beu5Lu3Iil9PC9zcGFuPjxzcGFuPiR7bChlLmRpZmZlcmVuY2UpfTwvc3Bhbj48L2Rpdj48L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5ydWxlKX08L2Rpdj5gLHQ/YDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPjwvZGl2PmA6ZS5jaGFuZ2VhYmxlP2A8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJMZWF2ZSBpdCIsIuS4jeaUueS6hiIpfTwvYnV0dG9uPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jb25maXJtLWNoYW5nZT0iJHtsKG4uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2UuYWRkT24mJmUuZnJvbT8uY2hlY2tJbj09PWUudG8/LmNoZWNrSW4mJmUuZnJvbT8uY2hlY2tPdXQ9PT1lLnRvPy5jaGVja091dD9jKCJVcGRhdGUgdGhlIGJvb2tpbmciLCLmm7TmlrDpooTorqIiKTpjKCJNb3ZlIHRoZSBib29raW5nIiwi56Gu6K6k5pS55pyfIil9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LGRpPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS52aWV3PT09InBvbGljeSI/YDxoND4ke2woZS50aXRsZSl9PC9oND4ke2woZS50ZXh0KX1gOihlLnRvcGljcz8/W10pLm1hcChvPT5gPGg0PiR7bChvLnRpdGxlKX08L2g0PiR7bChvLnRleHQpfWApLmpvaW4oIiIpO3JldHVybltgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bCh0Lm5hbWUpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7YygiV2hhdCB0aGUgaG90ZWwgcHVibGlzaGVzIiwi6YWS5bqX5YWs5biD55qE5pS/562WIil9PC9kaXY+PC9kaXY+YCxlLnZpZXc9PT0icG9saWN5LW1pc3NpbmciP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtsKGMoYCR7dC5uYW1lfSBkb2VzIG5vdCBwdWJsaXNoIGFueXRoaW5nIGFib3V0IHRoYXQgaGVyZS5gLGAke3QubmFtZX3msqHmnInlhazluIPov5nmlrnpnaLnmoTmlL/nrZbjgIJgKSl9PC9kaXY+YDpgPGRpdiBjbGFzcz0icHJvc2UiPiR7bn08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2wodC5pZCl9Ij4ke2woYyhgQmFjayB0byAke3QubmFtZX1gLGDov5Tlm54ke3QubmFtZX1gKSl9PC9idXR0b24+YF0uam9pbigiIil9LEJfPXtXaGVyZToi5L2N572uIixCcmFuZDoi5ZOB54mMIixSb29tOiLmiL/lnosiLCJQZXIgbmlnaHQiOiLmr4/mmZoiLCJXaG9sZSBzdGF5Ijoi5pW05q615L2P5a6/IiwiRnJlZSBjYW5jZWxsYXRpb24iOiLlhY3otLnlj5bmtogiLEJyZWFrZmFzdDoi5pep6aSQIixTbGVlcHM6IuWPr+S9j+S6uuaVsCIsIlJvb21zIGxlZnQiOiLliankvZnmiL/pl7QiLEZyb206Iui1t+S7tyIsUmF0aW5nOiLor4TliIYifSxGXz17WWVzOiLmmK8iLE5vOiLlkKYiLEluY2x1ZGVkOiLlkKsiLCJOb3QgaW5jbHVkZWQiOiLkuI3lkKsifSxVXz1lPT5vZT09PSJ6aCI/Ql9bZV0/P2U6ZSxIXz1lPT5vZT09PSJ6aCI/Rl9bZV0/P2UucmVwbGFjZSgvIGluY2xcLiB0YXgkLywiIOWQq+eojiIpLnJlcGxhY2UoLyBhIG5pZ2h0JC8sIiDmr4/mmZoiKTplLFdfPWU9Pntjb25zdCB0PWUuY29sdW1ucz8/W10sbj1lLnJvd0xhYmVscz8/W10sbz10LnNvbWUocj0+ci5yZWNvbW1lbmRlZCkscz1yPT5gCiAgICA8ZGl2IGNsYXNzPSJjbXAtaGVhZCR7ci5yZWNvbW1lbmRlZD8iIHBpY2siOiIifSR7bz8iIG1hcmtlZCI6IiJ9Ij4KICAgICAgJHtvP2A8ZGl2IGNsYXNzPSJwaWNrbWFyayR7ci5yZWNvbW1lbmRlZD8iIjoiIG5vbmUifSI+JHtyLnJlY29tbWVuZGVkP2MoIlJlY29tbWVuZGVkIiwi5o6o6I2QIik6IiJ9PC9kaXY+YDoiIn0KICAgICAgPGJ1dHRvbiBjbGFzcz0idC1zaG90IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChyLmhvdGVsLmlkKX0iIHN0eWxlPSIke2d0KFN0cmluZyhyLmhvdGVsLmlkKSl9Ij4KICAgICAgICAke3IuaG90ZWwuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woci5ob3RlbC5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2woYnQoU3RyaW5nKHIuaG90ZWwubmFtZSkpKX08L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtbmFtZSI+JHtsKHIuaG90ZWwubmFtZSl9JHtBdChyLmhvdGVsLnN1cHBsaWVyKT9gPHNtYWxsIGNsYXNzPSJjb2wtZ3JvdXAiPiR7bChBdChyLmhvdGVsLnN1cHBsaWVyKS5uYW1lKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1wcmljZSI+JHtyLnByaWNlP2Ake2woci5wcmljZS5zdGF5VG90YWwpfTxzbWFsbCBjbGFzcz0ic3ViIj4ke2woYyhgdG90YWwgwrcgJHtyLnByaWNlLm5pZ2h0bHl9L25pZ2h0YCxg5oC75Lu3IMK3IOavj+aZmiAke3IucHJpY2UubmlnaHRseX1gKSl9PC9zbWFsbD5gOnIuZnJvbT9gPHNtYWxsPiR7YygiRnJvbSAiLCIiKX08L3NtYWxsPiR7bChyLmZyb20pfTxzbWFsbD4ke2MoIiAvIG5pZ2h0IiwiIOi1ty/mmZoiKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9IndoeSR7ci5iZXN0Rm9yPyIiOiIgbm9uZSJ9Ij4ke3IuYmVzdEZvcj9sKHIuYmVzdEZvcik6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBjIj4ke1suLi4oci5wcm9zPz9bXSkubWFwKGk9PmA8ZGl2IGNsYXNzPSJwcm8iPjxzcGFuIGNsYXNzPSJtIj4rPC9zcGFuPjxzcGFuPiR7bChpKX08L3NwYW4+PC9kaXY+YCksLi4uKHIuY29ucz8/W10pLm1hcChpPT5gPGRpdiBjbGFzcz0iY29uIj48c3BhbiBjbGFzcz0ibSI+4oiSPC9zcGFuPjxzcGFuPiR7bChpKX08L3NwYW4+PC9kaXY+YCldLmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YDtyZXR1cm5bZS50aXRsZT9gPGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+YDoiIixlLnN0YXk/YDxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChLbyhlLnN0YXkpKX08L2Rpdj5gOiIiLEFycmF5LmlzQXJyYXkoZS5jdXJyZW5jaWVzKSYmZS5jdXJyZW5jaWVzLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUHJpY2VzIGFyZSBpbiBlYWNoIGhvdGVsJ3Mgb3duIGN1cnJlbmN5ICgke2UuY3VycmVuY2llcy5qb2luKCIsICIpfSkuIFRoZXkgYXJlIG5vdCBjb252ZXJ0ZWQsIHNvIHRoZSBjb2x1bW5zIGFyZSBub3QgYSBwcmljZSByYW5raW5nLmAsYOWQhOWutuS7t+agvOaMieWQhOiHquW4geenje+8iCR7ZS5jdXJyZW5jaWVzLmpvaW4oIuOAgSIpfe+8ieaYvuekuu+8jOS4jeWBmuaNoueul++8jOaJgOS7peS4jeiDveaMieWIl+avlOS7t+OAgmApKX08L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJjbXAtd3JhcCI+PGRpdiBjbGFzcz0iY21wJHt0Lmxlbmd0aD49ND8iIGZvdXIiOiIifSIgc3R5bGU9Ii0tY29sczoke3QubGVuZ3RofTstLWhlYWQtcm93czoke28/Njo1fSI+CiAgICAgICA8ZGl2IGNsYXNzPSJjbXAtY29ybmVyIj48L2Rpdj4KICAgICAgICR7dC5tYXAocykuam9pbigiIil9CiAgICAgICAke24ubWFwKChyLGkpPT5gPGRpdiBjbGFzcz0iayI+JHtsKFVfKHIpKX08L2Rpdj4ke3QubWFwKGE9PmA8ZGl2IGNsYXNzPSJ2JHtpJTI/IiBhbHQiOiIifSI+JHtsKEhfKGEucm93cz8uW2ldPy52YWx1ZT8/IuKAlCIpKX08L2Rpdj5gKS5qb2luKCIiKX1gKS5qb2luKCIiKX0KICAgICA8L2Rpdj48L2Rpdj5gLHl1KGUpLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgT3BlbiBhICR7ZS52b2NhYj8ubm91bj8/ImhvdGVsIn0gdG8gc2VlIGl0cyByb29tcyR7ZS5zdGF5Py5jaGVja0luPyIgZm9yIHRoZXNlIG5pZ2h0cyI6IiJ9LmAsYOaJk+W8gOS4gOWutumFkuW6l++8jOafpeeciyR7ZS5zdGF5Py5jaGVja0luPyLov5nkupvml6XmnJ/nmoQiOiIifeaIv+mXtOOAgmApKX08L2Rpdj5gXS5qb2luKCIiKX0sVl89ZT0+e2NvbnN0IHQ9ZS5kYXlzPz9bXSxuPWE9PmA8c3BhbiBjbGFzcz0iaW5zdGF0ZSAke2EuYm9va2VkfHxhLmluVHJpcD8ieWVzIjoibm8ifSI+JHthLmJvb2tlZD9jKGBCb29rZWQgwrcgJHtsKGEuYm9va2VkKX1gLGDlt7LorqIgwrcgJHtsKGEuYm9va2VkKX1gKTphLmluVHJpcD9jKCJJbiB0aGUgdHJpcCIsIuW3suWcqOihjOeoi+S4rSIpOmMoIlBsYW4gb25seSIsIuS7heiuoeWIkiIpfTwvc3Bhbj5gLG89YT0+YCBkYXRhLWhvdGVsPSIke2woYS5pZCl9IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiR7YS5jaGVja0luP2AgZGF0YS1jaT0iJHtsKGEuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woYS5jaGVja091dCl9ImA6IiJ9YCxzPWE9PmEuY2hlY2tvdXQ/YDxkaXYgY2xhc3M9InBsYW4tbmlnaHQiJHtvKGEpfT48c3Bhbj4ke2MoYENoZWNrIG91dCDCtyAke2woYS5uYW1lKX1gLGDnprvlupcgwrcgJHtsKGEubmFtZSl9YCl9PC9zcGFuPjwvZGl2PmA6TnVtYmVyKGEubmlnaHQ/PzEpPjE/YDxkaXYgY2xhc3M9InBsYW4tbmlnaHQiJHtvKGEpfT4KICAgICAgICAgICA8c3Bhbj4ke2woYyhgTmlnaHQgJHthLm5pZ2h0fSBvZiAke2EubmlnaHRzfSDCtyAke2EubmFtZX1gLGDnrKwgJHthLm5pZ2h0fS8ke2EubmlnaHRzfSDmmZogwrcgJHthLm5hbWV9YCkpfTwvc3Bhbj4ke24oYSl9CiAgICAgICAgIDwvZGl2PmA6YDxkaXYgY2xhc3M9InBsYW4tc3RheSIke28oYSl9PgogICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcy1zaG90IiBzdHlsZT0iJHtndChTdHJpbmcoYS5pZCkpfSI+JHthLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKGEuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6YDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChidChTdHJpbmcoYS5uYW1lKSkpfTwvc3Bhbj5gfTwvc3Bhbj4KICAgICAgICAgICA8c3BhbiBjbGFzcz0icHMtYm9keSI+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtsKGEubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldGEiPiR7bChbYS5kZXRhaWwsYS5uaWdodHM/YyhgJHtwZShhLm5pZ2h0cyl9IGhlcmVgLGDlnKjmraTkvY8ke3BlKGEubmlnaHRzKX1gKToiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgICAgJHthLnByaWNlP2A8c3BhbiBjbGFzcz0icHMtcHJpY2UiPiR7bChhLnByaWNlKX08L3NwYW4+YDoiIn0KICAgICAgICAgICAgICR7bihhKX0KICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgIDwvZGl2PmAscj1hPT5gCiAgICA8ZGl2IGNsYXNzPSJwbGFuLWl0ZW0iPgogICAgICA8ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChhLm5hbWUpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChbYS5kZXRhaWwsYS5wcmljZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke24oYSl9CiAgICA8L2Rpdj5gLGk9YT0+KGEucGxhbj8/W10pLmxlbmd0aD9gPG9sIGNsYXNzPSJtb21lbnRzIj4ke2EucGxhbi5tYXAodT0+YDxsaT4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hlbiI+JHtsKHUudGltZT8/IiIpfTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hhdCI+PGI+JHtsKHUud2hhdCl9PC9iPiR7dS5ub3RlP2A8c21hbGw+JHtsKHUubm90ZSl9PC9zbWFsbD5gOiIifTwvc3Bhbj4KICAgICAgICAgICAgPC9saT5gKS5qb2luKCIiKX08L29sPmA6IiI7cmV0dXJuW2A8ZGl2PgogICAgICAgPGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+CiAgICAgICAke2Uuc3RheT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKEtvKGUuc3RheSkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iZ2FwIj48Yj4ke2woTnVtYmVyKGUuaW5UcmlwPz8wKStOdW1iZXIoZS5ib29rZWQ/PzApKX0vJHtsKGUucGxhbm5lZCl9PC9iPjxzcGFuPiR7bChvZT09PSJ6aCI/YOiuoeWIkuS4reeahCAke2UucGxhbm5lZH0g6aG56YeM77yMJHtOdW1iZXIoZS5pblRyaXA/PzApK051bWJlcihlLmJvb2tlZD8/MCl9IOmhueW3suWcqOihjOeoi+S4reaIluW3sumihOiuou+8jOWFtuS9meWPquaYr+iuoeWIkuOAgmA6ZS5nYXA/PyIiKX08L3NwYW4+PC9kaXY+YCxgPGRpdiBjbGFzcz0iZGF5cyI+JHt0Lm1hcCgoYSx1KT0+YAogICAgICA8ZGl2IGNsYXNzPSJkYXlyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImRheW51bSI+PGI+JHt1KzF9PC9iPjxpPjwvaT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkYXlib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRheWxhYmVsIj4ke2woYS5sYWJlbCl9JHthLmRhdGU/YDxzbWFsbD4gwrcgJHtsKEpfKFN0cmluZyhhLmRhdGUpKSl9PC9zbWFsbD5gOiIifTwvZGl2PgogICAgICAgICAgJHthLm5vdGU/YDxkaXYgY2xhc3M9ImRheW5vdGUiPiR7bChhLm5vdGUpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAke2koYSl9CiAgICAgICAgICAkeyhhLml0ZW1zPz9bXSkubWFwKGQ9PmQua2luZD09PSJob3RlbCI/cyhkKTpyKGQpKS5qb2luKCIiKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCx5dShlKV0uam9pbigiIil9LEpfPWU9Pl9lKGUpLHdlPShlLHQ9ITEpPT57aWYoIWV8fHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm47Y29uc3Qgbj10JiZlLnZpZXc9PT0ibWVtYmVyIiYmcmU/ey4uLmUsbWVtYmVyOnJlfTplO1p3KG4pLG4udG9vbE5hbWVzJiYodHU9bi50b29sTmFtZXMpLChuLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCJ8fG4uYm9va2luZ01vZGU9PT0iaG9sZCIpJiYoZGc9bi5ib29raW5nTW9kZSksdHlwZW9mIG4udG9vbE5hbWVzPT0ib2JqZWN0IiYmKG91PW4uc2FuZGJveD09PSEwLHBnPW4ucGhvbmVSZXF1aXJlZD09PSEwKSwobi5sYW5nPT09InpoInx8bi5sYW5nPT09ImVuIikmJihvZT1uLmxhbmcsVXcoKSksbi5icmFuZCYmKEZlPVN0cmluZyhuLmJyYW5kKSksbi5hY2NlbnQmJmJnKG4uYWNjZW50KSxuLnByaW1hcnkmJnlnKG4ucHJpbWFyeSksbi5mb250cyYmdmcobi5mb250cyksbi5sb2dvVXJsJiYoa3M9U3RyaW5nKG4ubG9nb1VybCkpLG4ubG9nb0RhcmtVcmwmJihUaT1TdHJpbmcobi5sb2dvRGFya1VybCkpLG4uc2hvd05hbWU9PT0hMCYmKGNpPSEwKSxuLnByb2dyYW1tZSYmKHppPVN0cmluZyhuLnByb2dyYW1tZSkpLG4ubWFya2V0JiZBcnJheS5pc0FycmF5KG4ubWFya2V0LnN1cHBsaWVycykmJihrZT1uLm1hcmtldCksbi52aWV3PT09ImJvb2tpbmciJiYoY3Q9IiIpLG4uY29kZVByZWZpeCYmKHhpPVN0cmluZyhuLmNvZGVQcmVmaXgpKSx0eXBlb2Ygbi5kZW1vPT0iYm9vbGVhbiImJihudT1uLmRlbW8pLG4uZGVtb05vdGUmJihzZz1TdHJpbmcobi5kZW1vTm90ZSkpLHR5cGVvZiBuLnJvb21zX3dhbnRlZD09Im51bWJlciI/VT1uLnJvb21zX3dhbnRlZDoobi52aWV3PT09ImhvdGVscyJ8fG4udmlldz09PSJkZXN0aW5hdGlvbnMifHxuLnZpZXc9PT0ibm8taG90ZWxzIikmJm4uc3RheT8uY2hlY2tJbiYmIUh0JiYoVT1NYXRoLm1heCgxLE51bWJlcihuLmFzaz8ucm9vbXM/PzEpfHwxKSksdHx8KG4udmlldz09PSJtZW1iZXIiJiZuLm1lbWJlcj8udGllcj8ubmFtZT9yZT1uLm1lbWJlcjpuLm1lbWJlcj8udGllcj8ubmFtZSYmKHJlPXJlPy5wcm9ncmFtbWU9PT1uLm1lbWJlci5wcm9ncmFtbWUmJnJlPy50aWVyPy5uYW1lPT09bi5tZW1iZXIudGllci5uYW1lP3suLi5yZSwuLi5uLm1lbWJlcixwcmVmZXJlbmNlczpuLm1lbWJlci5wcmVmZXJlbmNlc306bi5tZW1iZXIpLChuLnZpZXc9PT0ic2lnbmVkLW91dCJ8fG4uc2lnbmVkSW49PT0hMSkmJihyZT1udWxsKSksbi5zdGF5Py5jaGVja0luJiZuLnN0YXkuY2hlY2tPdXQ+bi5zdGF5LmNoZWNrSW4mJiFPbiYmIUh0JiYoUz17Y2hlY2tJbjpuLnN0YXkuY2hlY2tJbixjaGVja091dDpuLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOm4uc3RheS5ndWVzdHM/PzJ9KSwhTG4mJihuLnZpZXc9PT0idHJpcCJ8fG4udmlldz09PSJuZWVkcy1kYXRlcyIpJiYoaHQ9bi5saW5lcz8/W10pLChuLnZpZXc9PT0iYm9va2luZyJ8fG4udmlldz09PSJlbXB0eS10cmlwIikmJihodD1bXSxJdD0wKSxydD1TdHJpbmcobi52aWV3Pz8iIikscmcoKSxOdyhuKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2tsb2dvIik/LnJlbW92ZSgpO2NvbnN0IG89RygiYnJhbmQiKTtrcz8oZXUoKSxvLmhpZGRlbj0hMSxHKCJ0aXRsZSIpLmhpZGRlbj0hY2ksY2kmJihHKCJ0aXRsZSIpLnRleHRDb250ZW50PUZlfHxjKCJIb3RlbHMiLCLphZLlupciKSkpOihvLmhpZGRlbj0hMCxHKCJ0aXRsZSIpLmhpZGRlbj0hMSxHKCJ0aXRsZSIpLnRleHRDb250ZW50PUZlfHxjKCJIb3RlbHMiLCLphZLlupciKSksRygic3ViIikudGV4dENvbnRlbnQ9WV8obiksSHcoKSxYXygpLFFfKCk7Y29uc3Qgcz17aG90ZWxzOnJfLGRlc3RpbmF0aW9uczpZdywibm8taG90ZWxzIjppXyxob3RlbDpiZCwibm8tcm9vbXMiOmJkLCJob3RlbC1ub3QtZm91bmQiOnA9PihwLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGg/dnUocC5xdWVyeSxwLmNhbmRpZGF0ZXMscC52b2NhYj8ubm91bik6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoYXQgaG90ZWwgaXMgbm90IGluIHRoaXMgY29ubmVjdG9yLiIsIui/memHjOayoeaciei/meWutumFkuW6l+OAgiIpfTwvZGl2PmAsZXh0cmFzOmJfLHRyaXA6a18sIm5lZWRzLWRhdGVzIjpHXyxib29raW5nOlJfLCJuZWVkcy1ndWVzdCI6el8sbWVtYmVyOnhfLCJtZW1iZXItbm90LWZvdW5kIjpJXywic2lnbmVkLW91dCI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJTaWduZWQgb3V0LiBSYXRlcyBhcmUgdGhlIHB1YmxpYyBvbmVzIGFnYWluLiIsIuW3sumAgOWHuueZu+W9le+8jOS7t+agvOaBouWkjeS4uuWFrOW8gOS7t+OAgiIpfTwvZGl2PjxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPjwvZGl2PmAsImVtcHR5LXRyaXAiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhlcmUgaXMgbm90aGluZyBpbiB0aGUgdHJpcCB5ZXQuIiwi6KGM56iL6YeM6L+Y5rKh5pyJ5YaF5a6544CCIil9PC9kaXY+YCxib29raW5nczpEXywiY2FuY2VsbGF0aW9uLXByZXZpZXciOl9kLGNhbmNlbGxlZDpfZCwiY2hhbmdlLXByZXZpZXciOlNkLGNoYW5nZWQ6U2QsImJvb2tpbmctbm90LWZvdW5kIjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vIGJvb2tpbmcgaGVyZSBtYXRjaGVzIHRoYXQgY29kZS4iLCLmsqHmnInlkozov5nkuKrnoa7orqTnoIHlr7nlupTnmoTpooTorqLjgIIiKX08L2Rpdj5gLGNvbXBhcmlzb246V18sIm5vdGhpbmctdG8tY29tcGFyZSI6cD0+KHAuZHJvcHBlZD8/W10pLnNvbWUoaD0+KGguY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk/eXUocCk6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vbmUgb2YgdGhvc2UgYXJlIGhvdGVscyB0aGlzIGNvbm5lY3RvciBrbm93cy4iLCLov5nkupvpg73kuI3mmK/ov5nph4znmoTphZLlupfjgIIiKX08L2Rpdj5gLGl0aW5lcmFyeTpWXywiZW1wdHktaXRpbmVyYXJ5IjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIkFuIGl0aW5lcmFyeSBuZWVkcyBhdCBsZWFzdCBvbmUgZGF5LiIsIuihjOeoi+iuoeWIkuiHs+WwkemcgOimgeS4gOWkqeOAgiIpfTwvZGl2PmAscG9saWN5OmRpLHBvbGljaWVzOmRpLCJwb2xpY3ktbWlzc2luZyI6ZGksZXJyb3I6Wl8sImZpbmQtYm9va2luZyI6KCk9PlsnPGRpdiBjbGFzcz0ibm90ZSI+QSBib29raW5nIG1hZGUgaW4gYW5vdGhlciBjb252ZXJzYXRpb24gaXMgZm91bmQgd2l0aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCBpdCB3YXMgbWFkZSB3aXRoIC0gYm90aCwgYXMgdGhleSBhcmUgb24gdGhlIGNvbmZpcm1hdGlvbi48L2Rpdj4nLGA8ZGl2IGNsYXNzPSJmb3JtIj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d28iPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08aW5wdXQgaWQ9ImZjb2RlIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIke2xkKCk/YCBwbGFjZWhvbGRlcj0iJHtsKGxkKCkpfSJgOiIifT48L2xhYmVsPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiRW1haWwiLCLpgq7nrrEiKX08aW5wdXQgaWQ9ImZtYWlsIiB0eXBlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIlRoZSBvbmUgb24gdGhlIGJvb2tpbmciLCLpooTorqLml7bnlKjnmoTpgq7nrrEiKX0iPjwvbGFiZWw+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Imxvb2t1cC1ib29raW5nIj4ke2MoIkZpbmQgaXQiLCLmn6Xmib4iKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YF0uam9pbigiIiksIm5vLW1lbWJlciI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJOb2JvZHkgaXMgc2lnbmVkIGluLCBzbyB0aGVyZSBpcyBub3RoaW5nIHNhdmVkIHRvIGZvcmdldC4iLCLlvZPliY3msqHmnInnmbvlvZXvvIzmsqHmnInlj6/muIXpmaTnmoTlgY/lpb3jgIIiKX08L2Rpdj4ke0NzKCEwKX1gLCJtZW1iZXItc2lnbi1pbiI6KCk9PltgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJTaWduIGluIHdpdGggdGhlIG1lbWJlcnNoaXAgbnVtYmVyIGFuZCB0aGUgc3VybmFtZSBwcmludGVkIG9uIHRoZSBjYXJkIHRvIHNlZSB0aGUgbWVtYmVyIHJhdGUgb24gZXZlcnkgcHJpY2UgaGVyZS4iLCLnlKjljaHkuIrljbDnmoTkvJrlkZjlj7flkozlp5PmsI/nmbvlvZXvvIzov5nph4znmoTmr4/kuKrku7fmoLzpg73kvJrmmL7npLrkvJrlkZjku7fjgIIiKX08L2Rpdj5gLENzKCEwKV0uam9pbigiIil9OyhydD09PSJob3RlbCJ8fHJ0PT09Im5vLXJvb21zInx8cnQ9PT0ibmVlZHMtZGF0ZXMiKSYmbi5ob3RlbD8uaWQ/KEZ0PVN0cmluZyhuLmhvdGVsLmlkKSxuLm5lZWRzRGF0ZXMmJnNldFRpbWVvdXQoKCk9PlV0KDAsIVlyKSwwKSk6KEZ0PSIiLCR1KCkpO2NvbnN0IHI9eHQobikhPT14dChQKTtQPW47Y29uc3QgaT1zW3J0XTtHKCJjb250ZW50IikuaW5uZXJIVE1MPShpP2kobik6YDxkaXYgY2xhc3M9ImVyciI+JHtsKG4uZXJyb3I/P2MoIlNvbWV0aGluZyBjYW1lIGJhY2sgdGhhdCB0aGlzIGNhcmQgZG9lcyBub3Qga25vdyBob3cgdG8gZHJhdy4iLCLmlLbliLDkuobov5nlvKDljaHniYfml6Dms5XmmL7npLrnmoTlhoXlrrnjgIIiKSl9JHtuLmRldGFpbD9gPGJyPiR7bChuLmRldGFpbCl9YDoiIn08L2Rpdj5gKStLXyhuKTtjb25zdCBhPUcoImNvbnRlbnQiKTthLmNsYXNzTGlzdC5yZW1vdmUoImVudGVyIiksciYmZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiImJihhLm9mZnNldFdpZHRoLGEuY2xhc3NMaXN0LmFkZCgiZW50ZXIiKSk7Y29uc3QgdT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudCAuZmxleC1kYXRlcyIpLGQ9dT8ucXVlcnlTZWxlY3RvcigiLmZkLm9uIik7aWYodSYmZCl7Y29uc3QgcD1bLi4udS5xdWVyeVNlbGVjdG9yQWxsKCIuZmQiKV0saD1wWzBdPy5vZmZzZXRMZWZ0Pz8wLGY9ZC5vZmZzZXRMZWZ0LSh1LmNsaWVudFdpZHRoLWQub2Zmc2V0V2lkdGgpLzIsJD1wLmZpbHRlcih6PT56Lm9mZnNldExlZnQ8PWYrMSkucG9wKCk/P3BbMF07dS5zY3JvbGxMZWZ0PU1hdGgubWF4KDAsKCQ/Lm9mZnNldExlZnQ/P2gpLWgpO2NvbnN0IGs9KCk9Pnt1LmNsYXNzTGlzdC50b2dnbGUoImF0LXN0YXJ0Iix1LnNjcm9sbExlZnQ8PTIpLHUuY2xhc3NMaXN0LnRvZ2dsZSgiYXQtZW5kIix1LnNjcm9sbExlZnQrdS5jbGllbnRXaWR0aD49dS5zY3JvbGxXaWR0aC0yKX07aygpLHUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixrLHtwYXNzaXZlOiEwfSl9cnQ9PT0iaG90ZWxzIiYmIUJuKCkmJihsdT1jdSgpLFhyKE51bWJlcihuLnRvdGFsPz8wKS1OdW1iZXIobi5vZmZzZXQ/PzApKSE9PXhzJiZ3ZShuLHQpKX0sS189ZT0+e2NvbnN0IHQ9ISFBZS5nZXRIb3N0Q2FwYWJpbGl0aWVzKCk/Lm1lc3NhZ2Usbj1zPT5sKFN0cmluZyhzPz8iIikucmVwbGFjZSgvIihbXiJdKikiL2csIuKAnCQx4oCdIikpLG89KGUuc3VnZ2VzdGlvbnM/P1tdKS5tYXAoKHMscik9PnM/LmFza3x8cz8uYXNrcz8ubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJjaGlwIG5leHQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zdWdnZXN0PSIke3J9Ij48c3Bhbj4ke24ocy5sYWJlbCl9PC9zcGFuPiR7RS5hcnJvd308L2J1dHRvbj5gOnM/LnNheSYmdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBuZXh0IHNheSIgdHlwZT0iYnV0dG9uIiBkYXRhLXN1Z2dlc3Q9IiR7cn0iPjxzcGFuPiR7bihzLmxhYmVsKX0gPHNtYWxsPsK3IGluIHRoZSBjaGF0PC9zbWFsbD48L3NwYW4+JHtFLmFycm93fTwvYnV0dG9uPmA6IiIpLmpvaW4oIiIpO3JldHVybiBvP2A8ZGl2IGNsYXNzPSJzdWdnZXN0Ij48ZGl2IGNsYXNzPSJ3bCI+JHtjKCJOZXh0Iiwi5o6l5LiL5p2lIil9PC9kaXY+JHtvfTwvZGl2PmA6IiJ9LEdfPWU9PltlLmhvdGVsP1BnKGUuaG90ZWwpOiIiLGA8ZGl2IGNsYXNzPSJlcnIiPiR7bChvZT09PSJ6aCImJmUud2h5Q29kZSYmTmdbU3RyaW5nKGUud2h5Q29kZSldP0lzKGUud2h5LGUud2h5Q29kZSxlLndoeUFyZ3MpOm9lPT09InpoIiYmIWVuKFN0cmluZyhlLndoeT8/IiIpKT8i6K+35YWI6YCJ5aW95YWl5L2P5ZKM56a75bqX5pel5pyf77yM5YaN5oqK5oi/6Ze05Yqg5YWl6KGM56iL44CCIjplLndoeT8/IldoaWNoIG5pZ2h0cz8gQSByb29tIG5lZWRzIGEgY2hlY2staW4gYW5kIGEgY2hlY2stb3V0IGRhdGUuIil9PC9kaXY+YCwkZyhTdHJpbmcoZS5ob3RlbD8uaWQ/PyIiKSxlLmhvdGVsPy50b2RheVRoZXJlKV0uam9pbigiIiksWV89ZT0+ZS52aWV3PT09ImhvdGVscyJ8fGUudmlldz09PSJob3RlbCJ8fGUudmlldz09PSJuby1yb29tcyJ8fGUudmlldz09PSJ0cmlwIj8iIjplLnZpZXc9PT0iY29tcGFyaXNvbiI/YyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApOmUudmlldz09PSJpdGluZXJhcnkiP051bWJlcihlLmJvb2tlZCk+MD9jKGAke2UuYm9va2VkfS8ke2UucGxhbm5lZH0gYm9va2VkYCxg5bey6K6iICR7ZS5ib29rZWR9LyR7ZS5wbGFubmVkfWApOmMoYCR7ZS5pblRyaXB9LyR7ZS5wbGFubmVkfSBpbiB0aGUgdHJpcGAsYOihjOeoi+S4rSAke2UuaW5UcmlwfS8ke2UucGxhbm5lZH1gKTplLnZpZXc9PT0iYm9va2luZ3MiP2MoYCR7ZS5jb3VudD8/MH0gYm9va2luZyR7TnVtYmVyKGUuY291bnQpPT09MT8iIjoicyJ9YCxgJHtlLmNvdW50Pz8wfSDnrJTpooTorqJgKToiIixRXz0oKT0+e2NvbnN0IGU9RygibWVtYmVyY2hpcCIpO3JlPyhlLmhpZGRlbj0hMSxlLnRleHRDb250ZW50PWMoYCR7cmUudGllcj8ubmFtZT8/Ik1lbWJlciJ9IMK3ICR7TWF0aC5yb3VuZCgocmUudGllcj8uZGlzY291bnQ/PzApKjEwMCl9JSBvZmZgLGAke3JlLnRpZXI/Lm5hbWU/PyLkvJrlkZgifSDCtyDkvJjmg6AgJHtNYXRoLnJvdW5kKChyZS50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCksZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0IiwibWVtYmVyIiksZS5zZXRBdHRyaWJ1dGUoInRpdGxlIixbcmUubmFtZSxyZS5wcm9ncmFtbWVdLmZpbHRlcih0PT50eXBlb2YgdD09InN0cmluZyImJnQpLmpvaW4oIiDCtyAiKSkpOihlLmhpZGRlbj0hSm8oInNpZ25JbiIpfHxydD09PSJtZW1iZXItbm90LWZvdW5kIixlLnRleHRDb250ZW50PWMoIk1lbWJlciBzaWduIGluIiwi5Lya5ZGY55m75b2VIiksZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0IiwiYXNrLXNpZ24taW4iKSxlLnJlbW92ZUF0dHJpYnV0ZSgidGl0bGUiKSl9LFhfPSgpPT57Y29uc3QgZT1HKCJoZWFkdHJpcCIpLHQ9TG4/SXQ6SXR8fGh0Lmxlbmd0aDtlLmhpZGRlbj10PT09MHx8cnQ9PT0idHJpcCIsRygiaGVhZHRyaXBuIikudGV4dENvbnRlbnQ9U3RyaW5nKHQpfSxwaT0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpIiksdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY28iKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndSIpO1M9e2NoZWNrSW46ZT8udmFsdWU/P1MuY2hlY2tJbixjaGVja091dDp0Py52YWx1ZT8/Uy5jaGVja091dCxndWVzdHM6TnVtYmVyKG4/LnZhbHVlPz9TLmd1ZXN0cyl8fDJ9fSxJbj0oZT17fSk9PlMuY2hlY2tJbiYmUy5jaGVja091dD97Y2hlY2tJbjpTLmNoZWNrSW4sY2hlY2tPdXQ6Uy5jaGVja091dCxndWVzdHM6Uy5ndWVzdHMsLi4uZX06ZTtsZXQgamksT249ITE7Y29uc3QgJHU9KCk9PntjbGVhclRpbWVvdXQoamkpLE9uPSExfSxVdD0oZT0wLHQ9ITEpPT57RnQmJihjbGVhclRpbWVvdXQoamkpLE9uPSEwLGppPXNldFRpbWVvdXQoKCk9PntpZighRnQpe09uPSExO3JldHVybn1pZihfbil7VXQoMTUwLHQpO3JldHVybn1Pbj0hMSxqKCJnZXRIb3RlbCIse2hvdGVsOkZ0LHJvb21zOlUsLi4uSW4oKX0sdD97bm90ZTpxd306e30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIG5pZ2h0cy4iLCLmsqHog73liqDovb3ov5nkupvml6XmnJ/jgIIiKSkpfSxlKSl9LGlzPSgpPT57Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcm9vbXMtbl0sW2RhdGEtbGlzdC1yb29tc10iKSl7Y29uc3QgdD1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGEtcm9vbXMtbiIpPz9lLmdldEF0dHJpYnV0ZSgiZGF0YS1saXN0LXJvb21zIikpO2UuZGlzYWJsZWQ9dDwwP1U8PTE6VT49QnR9Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZ3Vlc3RzLW5dIikpe2NvbnN0IHQ9TnVtYmVyKGUuZ2V0QXR0cmlidXRlKCJkYXRhLWd1ZXN0cy1uIikpO2UuZGlzYWJsZWQ9dDwwP1MuZ3Vlc3RzPD0xOlMuZ3Vlc3RzPj16c31mb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1ndWVzdHMtc2hvd25dIikpZS50ZXh0Q29udGVudD1TdHJpbmcoUy5ndWVzdHMpO2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhcnR5LXdvcmRzXSIpKWUudGV4dENvbnRlbnQ9a2coKX0sTz1lPT57Zm9yKGNvbnN0IHQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNhaWQiKSl0LnJlbW92ZSgpO0coImNvbnRlbnQiKS5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLGA8ZGl2IGNsYXNzPSJlcnIgc2FpZCIgcm9sZT0iYWxlcnQiPiR7bChlKX08L2Rpdj5gKX0sZVM9ZT0+e2Zvcihjb25zdCBuIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5maWVsZC1lcnIsLmZvcm0tZXJyIikpbi5yZW1vdmUoKTtmb3IoY29uc3QgbiBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbYXJpYS1pbnZhbGlkPSJ0cnVlIl0nKSluLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIik7aWYoIWUubGVuZ3RoKXJldHVybjtmb3IoY29uc3Rbbiwsb11vZiBlKXtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pO3MmJihzLnNldEF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIiwidHJ1ZSIpLHMuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixgJHtufS1lcnJgKSxzLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJlbmQiLGA8c3BhbiBjbGFzcz0iZmllbGQtZXJyIiBpZD0iJHtufS1lcnIiPiR7RS5lcnJvcn08c3Bhbj4ke2wobyl9PC9zcGFuPjwvc3Bhbj5gKSl9Y29uc3QgdD1lLm1hcCgoWyxuXSk9Pm4pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNndWVzdCBbZGF0YS1hY3Q9ImJvb2siXScpPy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWJlZ2luIixgPGRpdiBjbGFzcz0iZm9ybS1lcnIiIHJvbGU9ImFsZXJ0Ij4ke0UuZXJyb3J9PHNwYW4+JHtsKGUubGVuZ3RoPT09MT9jKGBDaGVjayAke3RbMF19IGJlZm9yZSBib29raW5nLmAsYOmihOiuouWJjeivt+ajgOafpe+8miR7dFswXX3jgIJgKTpjKGAke2UubGVuZ3RofSB0aGluZ3MgdG8gY2hlY2sgYmVmb3JlIGJvb2tpbmc6ICR7UmkodCl9LmAsYOmihOiuouWJjeaciSAke2UubGVuZ3RofSDpobnpnIDopoHmo4Dmn6XvvJoke3Quam9pbigi44CBIil944CCYCkpfTwvc3Bhbj48L2Rpdj5gKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlWzBdWzBdKT8uZm9jdXMoKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGU9Pntjb25zdCB0PWUudGFyZ2V0OyF0Py5jbG9zZXN0KCIjZ3Vlc3QiKXx8dC5nZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpIT09InRydWUifHx0LnZhbHVlLnRyaW0oKSYmKHQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWludmFsaWQiKSx0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3QuaWR9LWVycmApPy5yZW1vdmUoKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZ3Vlc3QgW2FyaWEtaW52YWxpZD0idHJ1ZSJdJyl8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNndWVzdCAuZm9ybS1lcnIiKT8ucmVtb3ZlKCkpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGU9Pntjb25zdCB0PWUudGFyZ2V0Py5jbG9zZXN0KCJbZGF0YS1ob3RlbF0sW2RhdGEtYWN0XSxbZGF0YS1wb2xpY3ldLFtkYXRhLWNhbmNlbF0sW2RhdGEtY29uZmlybS1jYW5jZWxdLFtkYXRhLWNvbmZpcm0tY2hhbmdlXSxbZGF0YS1leHRyYXNdLFtkYXRhLXJvb21zLW5dLFtkYXRhLWFza10sW2RhdGEtYm9va2luZy1leHRyYXNdLFtkYXRhLWJvb2tpbmctZXh0cmFdLFtkYXRhLXN1Z2dlc3RdLFtkYXRhLXBsYWNlXSxbZGF0YS1wbGFjZS1hbGxdLFtkYXRhLXNvcnRdLFtkYXRhLWxpc3Qtcm9vbXNdLFtkYXRhLWZpbHRlcl0sW2RhdGEtcGFuZWxdLFtkYXRhLXJlZ2lvbl0sW2RhdGEtZ3JvdXAtaG9tZV0sW2RhdGEtY2FsXSxbZGF0YS1kYXldLFtkYXRhLWNhbC1uYXZdLFtkYXRhLWNhbC1jbG9zZV0sW2RhdGEtaG91ci1zdGFydF0sW2RhdGEtYXJyaXZlXSxbZGF0YS1wYXJ0eV0sW2RhdGEtZ3Vlc3RzLW5dLFtkYXRhLXNwbGl0XSxbZGF0YS1vcGVuLWJvb2tpbmddLFtkYXRhLXN3YXBdLFtkYXRhLXJlc2VhcmNoXSIpO2lmKCF0KXJldHVybjtjb25zdCBuPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbCIpO2lmKG4hPT1udWxsKXtjb25zdFt5LF9dPW4uc3BsaXQoIjoiKTtydVt5XSYmS3coeSxfPT09Im91dCI/Im91dCI6ImluIik7cmV0dXJufWNvbnN0IG89dC5nZXRBdHRyaWJ1dGUoImRhdGEtZGF5Iik7aWYobyE9PW51bGwpe0d3KG8pO3JldHVybn1jb25zdCBzPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbC1uYXYiKTtpZihzIT09bnVsbCYmTil7Ti5tb250aD1BaShOLm1vbnRoLE51bWJlcihzKSksUHQoTi5wYWlyLGBbZGF0YS1jYWwtbmF2PSIke3N9Il1gKTtyZXR1cm59aWYodC5oYXNBdHRyaWJ1dGUoImRhdGEtY2FsLWNsb3NlIikmJk4pe2NvbnN0e3BhaXI6eX09TjtOLmluP3dnKCk6KE49bnVsbCxQdCh5KSk7cmV0dXJufWNvbnN0IHI9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYXNrIik7aWYociE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIpIT09InRydWUiO3Quc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyh5KSk7Y29uc3QgXz1fX1tyXTt5JiZfJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuYXNrW2RhdGEtYXNrPSIke199Il1gKT8uc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpLE1pKCk7cmV0dXJufWNvbnN0IGk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3BsaXQiKTtpZihpIT09bnVsbCl7Y29uc3RbeSxfXT1pLnNwbGl0KCI6IikubWFwKE51bWJlcik7cGkoKSxVPU1hdGgubWluKEJ0LE1hdGgubWF4KDEseXx8MSkpLFMuZ3Vlc3RzPU1hdGgubWluKHpzLE1hdGgubWF4KDEsX3x8MSkpLGlzKCksVXQoMCk7cmV0dXJufWlmKHQuaGFzQXR0cmlidXRlKCJkYXRhLXBhcnR5Iikpe0x0PSFMdDtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYXJ0eV0iKSl5LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKEx0KSk7Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnBhcnR5LXBhbmVsIikpeS5oaWRkZW49IUx0O3JldHVybn1jb25zdCBhPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1ZXN0cy1uIik7aWYoYSE9PW51bGwpe3QuZ2V0QXR0cmlidXRlKCJkYXRhLW9uIik9PT0iZGF0YS1yb29tcy1uIiYmcGkoKSxTLmd1ZXN0cz1NYXRoLm1pbih6cyxNYXRoLm1heCgxLFMuZ3Vlc3RzK051bWJlcihhKSkpLGlzKCksdC5nZXRBdHRyaWJ1dGUoImRhdGEtb24iKT09PSJkYXRhLWxpc3Qtcm9vbXMiP05uKDQ1MCk6RnQmJlV0KDQ1MCk7cmV0dXJufWNvbnN0IHU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtbGlzdC1yb29tcyIpO2lmKHUhPT1udWxsKXtVPU1hdGgubWluKEJ0LE1hdGgubWF4KDEsVStOdW1iZXIodSkpKTtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJscm4iKTt5JiYoeS50ZXh0Q29udGVudD1TdHJpbmcoVSkpLGlzKCksTm4oNDUwKTtyZXR1cm59Y29uc3QgZD10LmdldEF0dHJpYnV0ZSgiZGF0YS1yb29tcy1uIik7aWYoZCE9PW51bGwpe3BpKCksVT1NYXRoLm1pbihCdCxNYXRoLm1heCgxLFUrTnVtYmVyKGQpKSk7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm4iKTt5JiYoeS50ZXh0Q29udGVudD1TdHJpbmcoVSkpLGlzKCk7Y29uc3QgXz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmlnaHRzIik7XyYmKF8udGV4dENvbnRlbnQ9X2coKSksVXQoNDUwKTtyZXR1cm59Y29uc3QgcD10LmdldEF0dHJpYnV0ZSgiZGF0YS1hcnJpdmUiKTtpZihwIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0idHJ1ZSI7Zm9yKGNvbnN0IEQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtYXJyaXZlXSIpKUQuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyh5JiZEPT09dCkpO2NvbnN0IF89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd0aW1lIik7XyYmKF8udmFsdWU9eT9wOiIiKSxNaSgpO3JldHVybn1jb25zdCBoPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdXItc3RhcnQiKTtpZihoIT09bnVsbCl7aHUuc2V0KHQuZ2V0QXR0cmlidXRlKCJkYXRhLXJvb20iKT8/IiIsaCksUCYmd2UoUCk7cmV0dXJufWNvbnN0IGY9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWRkLXJvb20iKTtpZihmIT09bnVsbCYmdC5oYXNBdHRyaWJ1dGUoImRhdGEtc3RhcnQiKSl7aigiYWRkVG9UcmlwIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIscm9vbTpmLHN0YXJ0VGltZTp0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdGFydCIpPz8iIixyb29tczpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKXx8MSxndWVzdHM6Uy5ndWVzdHN9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWlmKGYhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik/PyIiLF89dC5jbGFzc0xpc3QuY29udGFpbnMoImFkZCIpJiYhdC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT9VOk51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpLEQ9dC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT97Y2hlY2tJbjp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jaSIpPz8iIixjaGVja091dDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jbyIpPz8iIixndWVzdHM6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1Iik/PzIpfTpJbigpO2ooImFkZFRvVHJpcCIse2hvdGVsOnkscm9vbTpmLHJvb21zOl8sLi4uRH0se3N0YXk6ISF0LmNsb3Nlc3QoIi5yb29tIikmJiF0LmNsYXNzTGlzdC5jb250YWlucygiYWRkIil9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0ICQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3dhcCIpO2lmKCQhPT1udWxsKXt3ZCgpO2NvbnN0W3ksX109JC5zcGxpdCgiOiIpLm1hcChOdW1iZXIpLEQ9KFA/LmZhaWxlZD8/W10pW3k/Py0xXSxsZT1EPy5hbHRlcm5hdGl2ZXM/LltfPz8tMV07aWYoIUR8fCFsZT8ucm9vbSlyZXR1cm47Y29uc3QgV2U9e2NoZWNrSW46RC5zdGF5Py5jaGVja0luLGNoZWNrT3V0OkQuc3RheT8uY2hlY2tPdXQsZ3Vlc3RzOkQuc3RheT8uZ3Vlc3RzPz9TLmd1ZXN0c307KGFzeW5jKCk9Pntmb3IoY29uc3QgQmUgb2YgRC5yb29tUmVmcz8/W10pYXdhaXQgaigiYWRkVG9UcmlwIix7aG90ZWw6RC5ob3RlbElkLHJvb206QmUscm9vbXM6MCwuLi5XZX0se3N0YXk6ITB9KTtmb3IoY29uc3QgQmUgb2YgRC5leHRyYVJlZnM/P1tdKWF3YWl0IGooImFkZFRvVHJpcCIse2hvdGVsOkQuaG90ZWxJZCxleHRyYTpCZSxxdWFudGl0eTowfSx7c3RheTohMH0pO2F3YWl0IGooImFkZFRvVHJpcCIse2hvdGVsOmxlLmhvdGVsSWQscm9vbTpsZS5yb29tLHJvb21zOkQucm9vbXM/PzEsLi4uV2V9KX0pKCkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGNoYW5nZSB0aGUgdHJpcC4iLCLmsqHog73mm7TmlrDooYznqIvjgIIiKSkpO3JldHVybn1pZih0LmdldEF0dHJpYnV0ZSgiZGF0YS1hY3QiKT09PSJyZXRyeS10cmlwIil7d2QoKSxqKCJ2aWV3VHJpcCIse30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSB0cmlwLiIsIuayoeiDveWKoOi9veihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0IGs9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcmVzZWFyY2giKTtpZihrIT09bnVsbCl7Y29uc3QgeT0oUD8uZmFpbGVkPz9bXSlbTnVtYmVyKGspXTtpZigheT8uY2l0eSlyZXR1cm47aigibGlzdEhvdGVscyIse2NpdHk6eS5jaXR5LGNoZWNrSW46eS5zdGF5Py5jaGVja0luLGNoZWNrT3V0Onkuc3RheT8uY2hlY2tPdXQsZ3Vlc3RzOnkuc3RheT8uZ3Vlc3RzPz9TLmd1ZXN0cywuLi5OdW1iZXIoeS5yb29tcyk+MT97cm9vbXM6TnVtYmVyKHkucm9vbXMpfTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3Qgej10LmdldEF0dHJpYnV0ZSgiZGF0YS1hZGQtZXh0cmEiKTtpZih6IT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1kYXkiKTtqKCJhZGRUb1RyaXAiLHtob3RlbDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIixleHRyYTp6LHF1YW50aXR5Ok51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpLC4uLnk/e2RheTp5fTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhlIHRyaXAuIiwi5rKh6IO95pu05paw6KGM56iL44CCIikpKTtyZXR1cm59Y29uc3QgQT10LmdldEF0dHJpYnV0ZSgiZGF0YS1wbGFjZSIpO2lmKEEhPT1udWxsKXtjb25zdCB5PVA/LmFzaz8uc29ydCxfPVA/LnZpZXc9PT0iaG90ZWxzIj9QPy5hc2s/LnF1ZXJ5OnZvaWQgMDtxaSgpO2NvbnN0IEQ9UD8udmlldz09PSJkZXN0aW5hdGlvbnMifHwhIVA/LnN0YXk/LmNoZWNrSW47aigibGlzdEhvdGVscyIsey4uLkE/e2NpdHk6QX06e30sLi4ueT97c29ydDp5fTp7fSwuLi5BJiZfP3txdWVyeTpffTp7fSwuLi5QPy52aWV3PT09ImhvdGVscyI/ZHMoUD8uYXNrKTp7fSwuLi5EP0R0KCk6e319KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgeD10LmdldEF0dHJpYnV0ZSgiZGF0YS1ncm91cC1ob21lIik7aWYoeCl7aigibGlzdEhvdGVscyIse2FsbDohMCxncm91cDp4LC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgVD10LmdldEF0dHJpYnV0ZSgiZGF0YS1maWx0ZXIiKTtpZihUPT09ImhvdXJseSIpe2NvbnN0e2hvdXJseTp5LC4uLl99PVA/LmFzaz8/e307aigibGlzdEhvdGVscyIsey4uLnVzKF8pLC4uLnk/e306e2hvdXJseTohMH19KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgZmlsdGVyIHRoZSBsaXN0LiIsIuayoeiDveetm+mAieWIl+ihqOOAgiIpKSk7cmV0dXJufWlmKFQhPT1udWxsKXtjb25zdCB5PVA/LmFzaz8/e30sXz1kcyh5KTtpZihULnN0YXJ0c1dpdGgoImdyb3VwOiIpKXtjb25zdCBsZT1ULnNsaWNlKDYpO18uZ3JvdXA9Xy5ncm91cD09PWxlP3ZvaWQgMDpsZX1lbHNlIGlmKFQuc3RhcnRzV2l0aCgiYnJhbmQ6Iikpe2NvbnN0IGxlPVQuc2xpY2UoNik7Xy5icmFuZD1fLmJyYW5kPT09bGU/dm9pZCAwOmxlfWVsc2UgaWYoVC5zdGFydHNXaXRoKCJmYWNpbGl0eToiKSl7Y29uc3QgbGU9VC5zbGljZSg5KSxXZT1fLmZhY2lsaXRpZXM/P1tdO18uZmFjaWxpdGllcz1XZS5pbmNsdWRlcyhsZSk/V2UuZmlsdGVyKEJlPT5CZSE9PWxlKTpbLi4uV2UsbGVdfWVsc2UoVD09PSJmcmVlQ2FuY2VsbGF0aW9uInx8VD09PSJicmVha2Zhc3QiKSYmKF9bVF09IV9bVF0pO2NvbnN0IEQ9ZHMoXyk7aigibGlzdEhvdGVscyIsey4uLmhkKHkpLC4uLkR9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgZmlsdGVyIHRoZSBsaXN0LiIsIuayoeiDveetm+mAieWIl+ihqOOAgiIpKSk7cmV0dXJufWNvbnN0IFo9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc29ydCIpO2lmKFohPT1udWxsKXtKZT14Zztjb25zdHtzb3J0OnksLi4uX309UD8uYXNrPz97fTtqKCJsaXN0SG90ZWxzIix7Li4uXywuLi5aIT09Imdyb3VwIj97c29ydDpafTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCByZW9yZGVyIHRoZSBsaXN0LiIsIuayoeiDvemHjeaWsOaOkuW6j+OAgiIpKSk7cmV0dXJufWNvbnN0IHNlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlLWFsbCIpO2lmKHNlIT09bnVsbCl7aigibGlzdEhvdGVscyIse2NpdHk6c2UsYWxsOiEwLC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgSj10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhcyIpO2lmKEohPT1udWxsKXtqKCJsaXN0RXh0cmFzIixpdChKKSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGxvYWQgdGhlIGFkZC1vbnMuIiwi5rKh6IO95Yqg6L296ZmE5Yqg5pyN5Yqh44CCIikpKTtyZXR1cm59Y29uc3QgVj10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhIik7aWYoViE9PW51bGwpe2ooInByZXZpZXdDaGFuZ2UiLHsuLi5pdCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nIik/PyIiKSxleHRyYTpWLHF1YW50aXR5Ok51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpfSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IHdvcmsgb3V0IHRoYXQgY2hhbmdlLiIsIuayoeiDveiuoeeul+i/measoeS/ruaUueOAgiIpKSk7cmV0dXJufWNvbnN0IEM9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZXh0cmFzIik7aWYoQyE9PW51bGwpe2ooImxpc3RFeHRyYXMiLHtob3RlbDpDLC4uLkluKCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgYWRkLW9ucy4iLCLmsqHog73liqDovb3pmYTliqDmnI3liqHjgIIiKSkpO3JldHVybn1jb25zdCBHZT10LmdldEF0dHJpYnV0ZSgiZGF0YS1wb2xpY3kiKTtpZihHZSE9PW51bGwpe2ooInBvbGljaWVzIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsdG9waWM6R2V9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGF0IHBvbGljeS4iLCLmsqHog73liqDovb3ov5nmnaHmlL/nrZbjgIIiKSkpO3JldHVybn1jb25zdCB2dD10LmdldEF0dHJpYnV0ZSgiZGF0YS1jYW5jZWwiKTtpZih2dCE9PW51bGwpe2ooInByZXZpZXdDYW5jZWxsYXRpb24iLGl0KHZ0KSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IHdvcmsgb3V0IHRoZSBmZWUuIiwi5rKh6IO96K6h566X5Y+W5raI6LS555So44CCIikpKTtyZXR1cm59Y29uc3QganQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZmlybS1jYW5jZWwiKTtpZihqdCE9PW51bGwpe2ooImNhbmNlbEJvb2tpbmciLHsuLi5pdChqdCksY29uZmlybWVkOiEwfSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGNhbmNlbCB0aGF0IGJvb2tpbmcuIiwi5rKh6IO95Y+W5raI6L+Z56yU6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgU249dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZmlybS1jaGFuZ2UiKTtpZihTbiE9PW51bGwpe2NvbnN0IHk9UD8udG8/P3t9LF89UD8uZnJvbT8/e30sRD1QPy5hZGRPbixsZT15LmNoZWNrSW4mJih5LmNoZWNrSW4hPT1fLmNoZWNrSW58fHkuY2hlY2tPdXQhPT1fLmNoZWNrT3V0KTtqKCJjaGFuZ2VCb29raW5nIix7Li4uaXQoU24pLGNvbmZpcm1lZDohMCwuLi5sZT97Y2hlY2tJbjp5LmNoZWNrSW4sY2hlY2tPdXQ6eS5jaGVja091dH06e30sLi4uRD8uaWQ/e2V4dHJhOkQuaWQscXVhbnRpdHk6TnVtYmVyKEQudG8pfTp7fSwuLi55LnJvb21zIT09dm9pZCAwJiZOdW1iZXIoeS5yb29tcykhPT1OdW1iZXIoXy5yb29tcyk/e3Jvb21zOk51bWJlcih5LnJvb21zKX06e30sLi4ueS5yb29tTmFtZSYmeS5yb29tTmFtZSE9PV8ucm9vbU5hbWU/e3Jvb206eS5yb29tTmFtZX06e319KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2hhbmdlIHRoYXQgYm9va2luZy4iLCLmsqHog73kv67mlLnov5nnrJTpooTorqLjgIIiKSkpO3JldHVybn1jb25zdCBXPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFjdCIpO2lmKFc9PT0iYmFjayIpe1RkKCk7cmV0dXJufWNvbnN0IEdvPVc9PT0iYm9va2luZ3MiPyJib29raW5ncyI6dC5oYXNBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKSYmIXQuaGFzQXR0cmlidXRlKCJkYXRhLWNpIik/YGhvdGVsOiR7dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKX1gOiIiO2lmKEdvJiZ2ZS5sZW5ndGgmJnh0KHZlLmF0KC0xKT8ucGF5bG9hZCk9PT1Hbyl7VGQoKTtyZXR1cm59Y29uc3Qga3U9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcmVnaW9uIik7aWYoa3UhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIikhPT0idHJ1ZSI7Zm9yKGNvbnN0IF8gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcmVnaW9uXSIpKV8uc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoeSYmXz09PXQpKTtmb3IoY29uc3QgXyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWdpb24tYm9keV0iKSlfLmhpZGRlbj0heXx8Xy5nZXRBdHRyaWJ1dGUoImRhdGEtcmVnaW9uLWJvZHkiKSE9PWt1O3JldHVybn1pZihXPT09Im1vcmUtY291bnRyaWVzIil7Zm9yKGNvbnN0IHkgb2YodC5jbG9zZXN0KCJbZGF0YS1yZWdpb24tYm9keV0iKT8/ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5kZXN0W2hpZGRlbl0iKSl5LmhpZGRlbj0hMTt0LmNsb3Nlc3QoIi5wbGFjZXMiKT8ucmVtb3ZlKCk7cmV0dXJufWlmKFc9PT0ibW9yZS1wbGFjZXMiKXtmb3IoY29uc3QgeSBvZih0LmNsb3Nlc3QoIi5wbGFjZXMiKT8/ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jaGlwLnBsYWNlW2hpZGRlbl0iKSl5LmhpZGRlbj0hMTt0LnJlbW92ZSgpO3JldHVybn1jb25zdCBvaT10LmdldEF0dHJpYnV0ZSgiZGF0YS1wYW5lbCIpO2lmKG9pIT09bnVsbCl7SmU9SmU9PT1vaT8iIjpvaTtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYW5lbC1ib2R5XSIpKXkuaGlkZGVuPXkuZ2V0QXR0cmlidXRlKCJkYXRhLXBhbmVsLWJvZHkiKSE9PUplO2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhbmVsXSIpKXkuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoeS5nZXRBdHRyaWJ1dGUoImRhdGEtcGFuZWwiKT09PUplKSk7cmV0dXJufWlmKFc9PT0iY2xlYXItZmlsdGVycyIpe2NvbnN0e2hvdXJseTp5LC4uLl99PWhkKFA/LmFzayk7aigibGlzdEhvdGVscyIseT91cyhfKTpfKS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2xlYXIgdGhlIGZpbHRlcnMuIiwi5rKh6IO95riF6Zmk562b6YCJ44CCIikpKTtyZXR1cm59aWYoVz09PSJhbGwtaG90ZWxzIil7cWkoKSxqKCJsaXN0SG90ZWxzIix7YWxsOiEwLC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKFc9PT0icHJpY2UtbGlzdCIpe05uKDApO3JldHVybn1pZihXPT09ImZpbmQtYm9va2luZyIpe2NvbnN0IHk9e3ZpZXc6ImZpbmQtYm9va2luZyJ9O3huKHkpLHdlKHkpLGF0KCksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjb2RlIik/LmZvY3VzKCk7cmV0dXJufWlmKFc9PT0ibG9va3VwLWJvb2tpbmciKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY29kZSIpPy52YWx1ZS50cmltKCk/PyIiLF89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZtYWlsIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIXl8fCFfLmluY2x1ZGVzKCJAIikpe08oYygiQm90aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCB0aGUgYm9va2luZyB3YXMgbWFkZSB3aXRoLCBwbGVhc2UuIiwi6K+35ZCM5pe25aGr5YaZ56Gu6K6k56CB5ZKM6aKE6K6i5pe255So55qE6YKu566x44CCIikpO3JldHVybn1qKCJsaXN0Qm9va2luZ3MiLHtib29raW5nOnksZW1haWw6X30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb29rIHRoYXQgdXAuIiwi5rKh6IO95p+l5Yiw44CCIikpKTtyZXR1cm59aWYoVz09PSJmaW5kIil7TGcoKTtyZXR1cm59aWYoVz09PSJwYWdlLW5leHQifHxXPT09InBhZ2UtcHJldiIpe2NvbnN0IHk9UDtpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO2NvbnN0IF89WHIoKSxEPU51bWJlcih5Lm9mZnNldD8/MCksbGU9TWF0aC5taW4oXywoeS5ob3RlbHM/P1tdKS5sZW5ndGgpO2ooImxpc3RIb3RlbHMiLHsuLi55LmFzaz8/e30sb2Zmc2V0Olc9PT0icGFnZS1uZXh0Ij9EK2xlOk1hdGgubWF4KDAsRC1fKSxsaW1pdDpffSkudGhlbihhdCkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWlmKFc9PT0iZnVsbHNjcmVlbiIpe0FlLnJlcXVlc3REaXNwbGF5TW9kZSh7bW9kZToiZnVsbHNjcmVlbiJ9KS50aGVuKHk9PntEbj1TdHJpbmcoeT8ubW9kZT8/RG4pO2NvbnN0IF89UDtpZighXylyZXR1cm47Y29uc3QgRD1OdW1iZXIoXy50b3RhbD8/MCk7Qm4oKSYmXy52aWV3PT09ImhvdGVscyImJihOdW1iZXIoXy5vZmZzZXQ/PzApPjB8fChfLmhvdGVscz8/W10pLmxlbmd0aDxNYXRoLm1pbigxMixEKSk/aigibGlzdEhvdGVscyIsey4uLl8uYXNrPz97fSxsaW1pdDoxMn0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTp3ZShfKX0pLmNhdGNoKCgpPT5PKGMoIlRoaXMgYXBwIGNhbm5vdCBvcGVuIGZ1bGwgc2NyZWVuIGhlcmUuIiwi6L+Z6YeM5peg5rOV5YWo5bGP5omT5byA44CCIikpKTtyZXR1cm59aWYoVz09PSJtb3JlLWhvdGVscyIpe2NvbnN0IHk9UDtpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO2ooImxpc3RIb3RlbHMiLHsuLi55LmFzaz8/e30sb2Zmc2V0Ok51bWJlcih5Lm9mZnNldD8/MCkrKHkuaG90ZWxzPz9bXSkubGVuZ3RoLGxpbWl0OjEyfSx7Zm9sZDpfPT5fPy52aWV3PT09ImhvdGVscyI/ey4uLl8saG90ZWxzOlsuLi55LmhvdGVscz8/W10sLi4uXy5ob3RlbHM/P1tdXSxzaG93bjooeS5ob3RlbHM/P1tdKS5sZW5ndGgrKF8uaG90ZWxzPz9bXSkubGVuZ3RoLG9mZnNldDpOdW1iZXIoeS5vZmZzZXQ/PzApLHBsYWNlczp5LnBsYWNlcywuLi55LndpZGVuZWQ/e3dpZGVuZWQ6eS53aWRlbmVkfTp7fX06X30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIG1vcmUgaG90ZWxzLiIsIuayoeiDveWKoOi9veabtOWkmumFkuW6l+OAgiIpKSk7cmV0dXJufWlmKFc9PT0iaG9tZSIpe2ooImxpc3RIb3RlbHMiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKChXPT09Im1lbWJlciJ8fFc9PT0iZmluZC1ib29raW5nInx8Vz09PSJhc2stc2lnbi1pbiIpJiZfbilyZXR1cm47aWYoVz09PSJtZW1iZXIiKXtpZighcmUpcmV0dXJuO2NvbnN0IHk9e3ZpZXc6Im1lbWJlciIsbWVtYmVyOnJlfTt4bih5KSx3ZSh5KSxhdCgpO3JldHVybn1pZihXPT09ImFzay1zaWduLWluIil7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lnbmluIik7aWYoeSl5LmhpZGRlbj0hMTtlbHNle2NvbnN0IF89e3ZpZXc6Im1lbWJlci1zaWduLWluIn07eG4oXyksd2UoXyksYXQoKX1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW51bSIpPy5mb2N1cygpO3JldHVybn1pZihXPT09InNpZ24taW4iKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbnVtIik/LnZhbHVlLnRyaW0oKT8/IiIsXz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXN1ciIpPy52YWx1ZS50cmltKCk/PyIiO2lmKCF5fHwhXyl7TyhjKCJCb3RoIHRoZSBtZW1iZXJzaGlwIG51bWJlciBhbmQgdGhlIHN1cm5hbWUgb24gaXQsIHBsZWFzZS4iLCLor7flkIzml7bloavlhpnkvJrlkZjlj7flkozljaHkuIrnmoTlp5PmsI/jgIIiKSk7cmV0dXJufWooInNpZ25JbiIse251bWJlcjp5LHN1cm5hbWU6X30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBzaWduIGluLiIsIuayoeiDveeZu+W9leOAgiIpKSk7cmV0dXJufWlmKFc9PT0iZm9yZ2V0LXByZWZzIil7aigiZm9yZ2V0UHJlZmVyZW5jZXMiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgZm9yZ2V0IHRoZW0uIiwi5rKh6IO95riF6Zmk44CCIikpKTtyZXR1cm59Y29uc3Qgd3U9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3VnZ2VzdCIpO2lmKHd1IT09bnVsbCl7Y29uc3QgeT0oUD8uc3VnZ2VzdGlvbnM/P1tdKVtOdW1iZXIod3UpXTt5Py5hc2s/LnRvb2w/aihTdHJpbmcoeS5hc2sudG9vbCkseS5hc2suYXJncz8/e30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBkbyB0aGF0IGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveWujOaIkOOAgiIpKSk6QXJyYXkuaXNBcnJheSh5Py5hc2tzKSYmeS5hc2tzLmxlbmd0aD8oYXN5bmMoKT0+e2Zvcihjb25zdFtfLERdb2YgeS5hc2tzLmVudHJpZXMoKSlhd2FpdCBqKFN0cmluZyhELnRvb2wpLEQuYXJncz8/e30se3B1c2g6Xz09PTB9KX0pKCkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IHB1dCBhbGwgb2YgdGhlbSBpbiB0aGUgdHJpcCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73lhajpg6jliqDlhaXooYznqIvjgIIiKSkpOnk/LnNheSYmQWUuc2VuZE1lc3NhZ2Uoe3JvbGU6InVzZXIiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OlN0cmluZyh5LnNheSl9XX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBzZW5kIHRoYXQgdG8gdGhlIGNoYXQuIiwi5rKh6IO95Y+R6YCB5Yiw5a+56K+d44CCIikpKTtyZXR1cm59aWYoVz09PSJhc2stdHJpcC1hZ2FpbiIpe0FlLnNlbmRNZXNzYWdlKHtyb2xlOiJ1c2VyIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpjKCJQbGVhc2Ugc2hvdyBteSB0cmlwIGFnYWluLiIsIuivt+mHjeaWsOaYvuekuuaIkeeahOihjOeoi+OAgiIpfV19KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3Qgc2VuZCB0aGF0IHRvIHRoZSBjaGF0LiIsIuayoeiDveWPkemAgeWIsOWvueivneOAgiIpKSk7cmV0dXJufWlmKFc9PT0ic2lnbi1vdXQiKXtyZT1udWxsLGooInNpZ25PdXQiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3Qgc2lnbiBvdXQuIiwi5rKh6IO96YCA5Ye655m75b2V44CCIikpKTtyZXR1cm59aWYoVz09PSJhc2stYm9vayIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3JvdXAiKTt5JiZ5IT09Y3QmJihjdD15LHdlKFApKTtjb25zdCBfPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndWVzdCIpO18mJihfLmhpZGRlbj0hMSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImduYW1lIik/LmZvY3VzKCk7cmV0dXJufWlmKFc9PT0iYm9vayIpe2NvbnN0e3Bob25lUmVxdWlyZWQ6eX09ZnUoKSxfPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbmFtZSIpPy52YWx1ZS50cmltKCk/PyIiLEQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdtYWlsIik/LnZhbHVlLnRyaW0oKT8/IiIsbGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdwaG9uZSIpPy52YWx1ZS50cmltKCk/PyIiLFdlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbm90ZSIpPy52YWx1ZS50cmltKCk/PyIiLEJlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndGltZSIpPy52YWx1ZS50cmltKCk/PyIiLFRuPVsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1hc2tdW2FyaWEtcHJlc3NlZD0idHJ1ZSJdJyldLm1hcChVZz0+VWcuZGF0YXNldC5hc2s/PyIiKTsoQmU/QmU+PSIyMjowMCI6KHJlPy5wcmVmZXJlbmNlcz8/W10pLmluY2x1ZGVzKCJsYXRlLWFycml2YWwiKSkmJiFUbi5pbmNsdWRlcygibGF0ZS1hcnJpdmFsIikmJlRuLnB1c2goImxhdGUtYXJyaXZhbCIpO2NvbnN0IFR1PSEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyZW1lbWJlciIpPy5jaGVja2VkO1RlPXtuYW1lOl8sZW1haWw6RCwuLi55P3twaG9uZTpsZX06e30sbm90ZXM6V2UsYXJyaXZpbmdBdDpCZSxyZXF1ZXN0czpUbixyZW1lbWJlcjpUdX07Y29uc3Qgem49W107aWYoX3x8em4ucHVzaChbImduYW1lIixjKCJmdWxsIG5hbWUiLCLlp5PlkI0iKSxjKCJSZXF1aXJlZDogdGhlIGd1ZXN0J3MgZnVsbCBuYW1lLCBhcyBvbiB0aGVpciBJRC4iLCLlv4XloavvvJrlhaXkvY/kurrlp5PlkI3vvIzkuI7or4Hku7bkuIDoh7TjgIIiKV0pLEQuaW5jbHVkZXMoIkAiKXx8em4ucHVzaChbImdtYWlsIixjKCJlbWFpbCIsIumCrueusSIpLEQ/YygiVGhhdCBlbWFpbCBoYXMgbm8g4oCcQOKAnSBpbiBpdCDigJQgdGhlIGNvbmZpcm1hdGlvbiBuZWVkcyBhbiBhZGRyZXNzIGl0IGNhbiByZWFjaC4iLCLpgq7nrrHph4zmsqHmnInigJxA4oCd77yM6K+35aGr5YaZ6IO95pS25Yiw56Gu6K6k5L+h5oGv55qE5Zyw5Z2A44CCIik6YygiUmVxdWlyZWQ6IHlvdXIgZW1haWwuIFdpdGggaXQgYW5kIHRoZSBjb25maXJtYXRpb24gY29kZSwgeW91IGNhbiBmaW5kIHRoaXMgYm9va2luZyBhZ2FpbiBmcm9tIGFueSBjaGF0LiIsIuW/heWhq++8muaOpeaUtuehruiupOS/oeaBr+eahOmCrueuse+8jOWHreWug+WSjOehruiupOeggeaJvuWbnumihOiuouOAgiIpXSkseSYmbGUucmVwbGFjZSgvXEQvZywiIikubGVuZ3RoPDYmJnpuLnB1c2goWyJncGhvbmUiLGMoInBob25lIiwi5omL5py65Y+3IiksYygiUmVxdWlyZWQ6IGEgcGhvbmUgbnVtYmVyLCBzbyB0aGUgaG90ZWwgY2FuIHJlYWNoIHlvdS4iLCLlv4XloavvvJrmiYvmnLrlj7fvvIzmlrnkvr/phZLlupfogZTns7vkvaDjgIIiKV0pLGVTKHpuKSx6bi5sZW5ndGgpcmV0dXJuO2ooInJlcXVlc3RCb29raW5nIix7bmFtZTpfLGVtYWlsOkQsLi4ueT97cGhvbmU6bGV9Ont9LC4uLmtlJiZjdD97Z3JvdXA6Y3R9Ont9LC4uLldlP3tub3RlczpXZX06e30sLi4uQmU/e2Fycml2aW5nQXQ6QmV9Ont9LC4uLlRuLmxlbmd0aD97cmVxdWVzdHM6VG59Ont9LC4uLlR1P3tyZW1lbWJlclJlcXVlc3RzOiEwfTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBhc2sgZm9yIHRob3NlIHJvb21zLiIsIuayoeiDveaPkOS6pOmihOiuouOAgiIpKSk7cmV0dXJufWNvbnN0IF91PXQuZ2V0QXR0cmlidXRlKCJkYXRhLW9wZW4tYm9va2luZyIpO2lmKF91IT09bnVsbCYmUD8udmlldz09PSJib29raW5ncyIpe2NvbnN0IHk9KFAuYm9va2luZ3M/P1tdKS5maW5kKEQ9PlN0cmluZyhELmNvbmZpcm1hdGlvbkNvZGUpPT09X3UpO2lmKCF5KXJldHVybjtjb25zdCBfPXsuLi5QLHZpZXc6ImJvb2tpbmciLGJvb2tpbmc6eSxib29raW5nczp2b2lkIDAsdG90YWw6eS5xdW90ZT8udG90YWwsb3BlbmVkOiEwLHN1Z2dlc3Rpb25zOnZvaWQgMH07eG4oXyksd2UoXyksYXQoKTtyZXR1cm59aWYoVz09PSJwYXkiKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXVybCIpPz8iIixfPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvZGUiKT8/IiI7aWYoIXkpcmV0dXJuO0FlLm9wZW5MaW5rKHt1cmw6eX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBvcGVuIHRoZSBwYXltZW50IHBhZ2UuIiwi5rKh6IO95omT5byA5LuY5qy+6aG144CCIikpKTtjb25zdCBEPURhdGUucGFyc2UodC5nZXRBdHRyaWJ1dGUoImRhdGEtdW50aWwiKT8/IiIpfHxEYXRlLm5vdygpKzE1KjZlNDtndSgpLHplPXtjb2RlOl8sdW50aWw6RH0semUudGltZXI9c2V0VGltZW91dCgoKT0+YnUoXyksWmkpO3JldHVybn1pZihXPT09InBheS1jaGVjayIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIpPz8iIjt5JiZqZyh5KTtyZXR1cm59aWYoVz09PSJuaWdodGx5LWxpc3QiKXtjb25zdHtob3VybHk6eSwuLi5ffT11cyhQPy5hc2spO2ooImxpc3RIb3RlbHMiLF8pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX5YiX6KGo44CCIikpKTtyZXR1cm59aWYoVz09PSJib29raW5ncyIpe2ooImxpc3RCb29raW5ncyIse30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHlvdXIgYm9va2luZ3MuIiwi5rKh6IO95Yqg6L295L2g55qE6aKE6K6i44CCIikpKTtyZXR1cm59aWYoVz09PSJ0cmlwIil7aigidmlld1RyaXAiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgdHJpcC4iLCLmsqHog73liqDovb3ooYznqIvjgIIiKSkpO3JldHVybn1pZigoVz09PSJob3VybHkifHxXPT09Im5pZ2h0bHkiKSYmUD8uaG90ZWw/LmlkKXtjb25zdCB5PVN0cmluZyhQLmhvdGVsLmlkKTtqKCJnZXRIb3RlbCIsVz09PSJob3VybHkiP3tob3RlbDp5LGhvdXJseTohMCxndWVzdHM6Uy5ndWVzdHN9Ontob3RlbDp5LC4uLkluKCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGF0IGhvdGVsLiIsIuayoeiDveWKoOi9vei/meWutumFkuW6l+OAgiIpKSk7cmV0dXJufWNvbnN0IFN1PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik7aWYoU3Upe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2kiKSxfPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvIik7eSYmXyYmKFMuY2hlY2tJbj15LFMuY2hlY2tPdXQ9XyksaigiZ2V0SG90ZWwiLHtob3RlbDpTdSwuLi5JbigpLC4uLlMuY2hlY2tJbiYmVT4xP3tyb29tczpVfTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgaG90ZWwuIiwi5rKh6IO95Yqg6L296L+Z5a626YWS5bqX44CCIikpKX19KTtjb25zdCBNaT0oKT0+e2lmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKSlyZXR1cm47Y29uc3QgZT10PT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KT8udmFsdWU/PyIiO1RlPXtuYW1lOmUoImduYW1lIiksZW1haWw6ZSgiZ21haWwiKSwuLi5mdSgpLnBob25lUmVxdWlyZWQ/e3Bob25lOmUoImdwaG9uZSIpfTp7fSxub3RlczplKCJnbm90ZSIpLGFycml2aW5nQXQ6ZSgiZ3RpbWUiKSxyZXF1ZXN0czpbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYXNrXVthcmlhLXByZXNzZWQ9InRydWUiXScpXS5tYXAodD0+dC5kYXRhc2V0LmFzaz8/IiIpLHJlbWVtYmVyOiEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyZW1lbWJlciIpPy5jaGVja2VkfX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGU9Pntjb25zdCB0PWUudGFyZ2V0Py5pZD8/IiI7WyJnbmFtZSIsImdtYWlsIiwiZ3Bob25lIiwiZ25vdGUiLCJndGltZSIsImdyZW1lbWJlciJdLmluY2x1ZGVzKHQpJiZNaSgpfSk7Y29uc3QgVGQ9KCk9Pntmb3IoO3ZlLmF0KC0xKT8ucGF5bG9hZD8udmlldz09PSJtZW1iZXIiJiYhcmU7KXZlPXZlLnNsaWNlKDAsLTEpO2NvbnN0IGU9dmUuYXQoLTEpO2lmKCFlfHxfbil7cmcoKTtyZXR1cm59dmU9dmUuc2xpY2UoMCwtMSksX3MrPTEsJHUoKSxEZygpO2NvbnN0IHQ9ZS52ZXJzaW9uPT09d3M/dm9pZCAwOlB3KGUucGF5bG9hZCk7dD8oUD1lLnBheWxvYWQsaih0LmtleSx0LmFyZ3Mse3B1c2g6ITF9KS5jYXRjaCgoKT0+d2UoZS5wYXlsb2FkLCEwKSkuZmluYWxseShhdCkpOih3ZShlLnBheWxvYWQsITApLGF0KCkpfSxMZz0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZXJlIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIWUpe08oYygiV2hlcmUgdG8/IEEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwuIiwi5oOz5Y675ZOq6YeM77yf6L6T5YWl5Z+O5biC44CB5Zu95a625oiW6YWS5bqX5ZCN44CCIikpO3JldHVybn1xaSgpO2NvbnN0IG49KFA/LnJlZ2lvbnM/P1tdKS5mbGF0TWFwKG89PihvLmNvdW50cmllcz8/W10pLmZsYXRNYXAocz0+W3MubmFtZSwuLi4ocy5jaXRpZXM/P1tdKS5tYXAocj0+ci5uYW1lKV0pKS5maW5kKG89Pm8udG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSk7aigibGlzdEhvdGVscyIsey4uLm4/e2NpdHk6bn06e3F1ZXJ5OmV9LC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3Qgc2VhcmNoIGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveaQnOe0ouOAgiIpKSl9LHFpPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGNpIiksdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGNvIik7ZT8udmFsdWUmJihTLmNoZWNrSW49ZS52YWx1ZSksdD8udmFsdWUmJihTLmNoZWNrT3V0PXQudmFsdWUpLGU/LnZhbHVlJiYoWXI9ITApfTtsZXQgTGksSHQ9ITE7Y29uc3QgRGc9KCk9PntjbGVhclRpbWVvdXQoTGkpLEh0PSExfSx0Uz1lPT5lPy52aWV3PT09ImhvdGVscyJ8fGU/LnZpZXc9PT0ibm8taG90ZWxzIiYmISFlPy5hc2ssTm49KGU9MCk9PntjbGVhclRpbWVvdXQoTGkpLEh0PSEwLExpPXNldFRpbWVvdXQoKCk9PntpZighdFMoUCkpe0h0PSExO3JldHVybn1pZihfbil7Tm4oMTUwKTtyZXR1cm59SHQ9ITEsaigibGlzdEhvdGVscyIsey4uLnVzKFA/LmFzayksLi4uRHQoKX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBwcmljZSB0aG9zZSBuaWdodHMuIiwi5rKh6IO95Li66L+Z5Lqb5pel5pyf5oql5Lu344CCIikpKX0sZSl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGU9PntpZihlLnRhcmdldD8uaWQ9PT0id2hlcmUiJiZlLmtleT09PSJFbnRlciImJiFlLmlzQ29tcG9zaW5nKXtlLnByZXZlbnREZWZhdWx0KCksTGcoKTtyZXR1cm59aWYoZS5rZXk9PT0iRXNjYXBlIiYmTil7Y29uc3R7cGFpcjpufT1OO049bnVsbCxQdChuLGBbZGF0YS1jYWw9IiR7bn06aW4iXWApO3JldHVybn1jb25zdCB0PWUudGFyZ2V0OyF0fHx0LmdldEF0dHJpYnV0ZSgicm9sZSIpIT09ImJ1dHRvbiJ8fGUua2V5IT09IkVudGVyIiYmZS5rZXkhPT0iICJ8fChlLnByZXZlbnREZWZhdWx0KCksdC5jbGljaygpKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsZT0+e2lmKCFOfHxOLnBpY2tpbmchPT0ib3V0Inx8IU4uaW4pcmV0dXJuO2NvbnN0IHQ9ZS50YXJnZXQ/LmNsb3Nlc3Q/LigiLmNkW2RhdGEtZGF5XSIpLG49dCYmIXQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpP3QuZGF0YXNldC5kYXk/PyIiOiIiLG89Ti5pbjtmb3IoY29uc3QgcyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY2FsIC5jZFtkYXRhLWRheV0iKSl7Y29uc3Qgcj1zLmRhdGFzZXQuZGF5Pz8iIjtzLmNsYXNzTGlzdC50b2dnbGUoInJlYWNoIiwhIW4mJm4+byYmcj5vJiZyPG4pLHMuY2xhc3NMaXN0LnRvZ2dsZSgicmVhY2gtZW5kIiwhIW4mJm4+byYmcj09PW4pfX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dD8udHlwZT09PSJkYXRlIiYmKFlyPSEwKTtjb25zdCBvPXtkY2k6WyJkY2kiLCJkY28iXSxkY286WyJkY2kiLCJkY28iXSxsY2k6WyJsY2kiLCJsY28iXSxsY286WyJsY2kiLCJsY28iXX1bdD8uaWQ/PyIiXTtpZihvKXtjb25zdCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9bMF0pLHU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob1sxXSk7aWYoIWF8fCF1KXJldHVybjtpZih0LmlkPT09b1swXSYmYS52YWx1ZSl7Y29uc3QgZD1FdChhLnZhbHVlLDEpO3UubWluPWQsKCF1LnZhbHVlfHx1LnZhbHVlPD1hLnZhbHVlKSYmKHUudmFsdWU9ZCl9Uy5jaGVja0luPWEudmFsdWV8fFMuY2hlY2tJbixTLmNoZWNrT3V0PXUudmFsdWV8fFMuY2hlY2tPdXQsb1swXT09PSJsY2kiJiZObigzMDApO3JldHVybn1pZih0Py5pZCE9PSJjaSImJnQ/LmlkIT09ImNvIilyZXR1cm47Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2kiKSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbyIpO2lmKCFzfHwhcilyZXR1cm47aWYodC5pZD09PSJjaSImJnMudmFsdWUpe2NvbnN0IGE9RXQocy52YWx1ZSwxKTtyLm1pbj1hLCghci52YWx1ZXx8ci52YWx1ZTw9cy52YWx1ZSkmJihyLnZhbHVlPWEpfVMuY2hlY2tJbj1zLnZhbHVlfHxTLmNoZWNrSW4sUy5jaGVja091dD1yLnZhbHVlfHxTLmNoZWNrT3V0O2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5pZ2h0cyIpO2kmJihpLnRleHRDb250ZW50PV9nKCkpLFV0KCl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dD8udGFnTmFtZT09PSJJTUciJiZ0LmNsb3Nlc3QoIiNjb250ZW50IikmJnQucmVtb3ZlKCl9LCEwKTtjb25zdCBCZz0oZSx0KT0+e3RyeXthZyh0KTtjb25zdCBuPWU/SlNPTi5zdHJpbmdpZnkoZSk6IiI7aWYobiYmbj09PWhnJiZKU09OLnN0cmluZ2lmeShQKT09PW1nKXJldHVybjtlPy5zdGF5Py5jaGVja0luJiYoWXI9ITApLHZlPVtdLF9zKz0xLCR1KCksRGcoKSxKZT14ZyxOPW51bGwsd2UoZSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcigiW2NhcmRdIHJlbmRlciBmYWlsZWQiLG4pLEcoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoaXMgY2FyZCBjb3VsZCBub3QgYmUgZHJhd24uIEFzayBhZ2FpbiBpbiB0aGUgY2hhdC4iLCLov5nlvKDljaHniYfmsqHog73mmL7npLrvvIzor7flnKjlr7nor53ph4zlho3pl67kuIDmrKHjgIIiKX08L2Rpdj5gfX07QWUub250b29scmVzdWx0PWU9PkJnKGU/LnN0cnVjdHVyZWRDb250ZW50LGU/Ll9tZXRhKTtjb25zdCBGZz1lPT57QXJyYXkuaXNBcnJheShlPy5hdmFpbGFibGVEaXNwbGF5TW9kZXMpJiYoQ2c9ZS5hdmFpbGFibGVEaXNwbGF5TW9kZXMubWFwKFN0cmluZykpLHR5cGVvZiBlPy5kaXNwbGF5TW9kZT09InN0cmluZyImJmUuZGlzcGxheU1vZGUhPT1EbiYmKERuPWUuZGlzcGxheU1vZGUsUD8udmlldz09PSJob3RlbHMiJiZ3ZShQKSl9O2xldCB6ZDt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKT0+e2NsZWFyVGltZW91dCh6ZCksemQ9c2V0VGltZW91dCgoKT0+e2lmKFA/LnZpZXchPT0iaG90ZWxzInx8Qm4oKSlyZXR1cm47bHU9Y3UoKTtjb25zdCBlPU51bWJlcihQLnRvdGFsPz8wKS1OdW1iZXIoUC5vZmZzZXQ/PzApO1hyKGUpIT09eHMmJndlKFApfSwxNTApfSk7QWUub25ob3N0Y29udGV4dGNoYW5nZWQ9ZT0+e3RnKGUsb2cpLEZnKGUpLGV1KCl9O0FlLmNvbm5lY3QoKS50aGVuKCgpPT57Y29uc3QgZT1BZS5nZXRIb3N0Q29udGV4dCgpO3RnKGUsb2cpLEZnKGUpLGV1KCk7Y29uc3QgdD1lPy50b29sSW5mbz8ucmVzdWx0Py5zdHJ1Y3R1cmVkQ29udGVudDt0JiZCZyh0LGU/LnRvb2xJbmZvPy5yZXN1bHQ/Ll9tZXRhKX0pLmNhdGNoKCgpPT57RygiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIGhvc3QuIiwi5rKh6IO96L+e5o6l5Yiw5a6/5Li744CCIil9PC9kaXY+YH0pOzwvc2NyaXB0PgogICAgPHN0eWxlIHJlbD0ic3R5bGVzaGVldCIgY3Jvc3NvcmlnaW4+OnJvb3R7LS1raXQtYmc6ICNmZmZmZmY7LS1raXQtYmctc29mdDogI2Y2ZjdmOTstLWtpdC1mZzogIzFhMWYyYjstLWtpdC1mZy1zb2Z0OiAjNjI2YjdhOy0ta2l0LWZnLWZhaW50OiAjOGE5M2ExOy0ta2l0LWxpbmU6ICNlM2U3ZWQ7LS1raXQtYWNjZW50OiAjMWExZjJiOy0ta2l0LWFjY2VudC1mZzogI2ZmZmZmZjstLWtpdC1saW5rOiAjMjU2M2ViOy0ta2l0LWdvb2Q6ICMxYTdmNWE7LS1raXQtZ29vZC1iZzogI2RkZjNlNDstLWtpdC1iYWQ6ICNiMzI2MWU7LS1raXQtYmFkLWJnOiAjZmJlNmU0Oy0ta2l0LXdhcm46ICM4YTVhMDA7LS1raXQtd2Fybi1iZzogI2ZkZjBkNTstLWtpdC1yaW5nOiAjMjU2M2VifVtkYXRhLXRoZW1lPWRhcmtdey0ta2l0LWJnOiAjMWQxZjIzOy0ta2l0LWJnLXNvZnQ6ICMyNjI5MmU7LS1raXQtZmc6ICNlY2VlZjE7LS1raXQtZmctc29mdDogI2E0YWJiNjstLWtpdC1mZy1mYWludDogIzdjODQ5MTstLWtpdC1saW5lOiAjMzYzYTQxOy0ta2l0LWFjY2VudDogI2VjZWVmMTstLWtpdC1hY2NlbnQtZmc6ICMxZDFmMjM7LS1raXQtbGluazogIzdhYTdmZjstLWtpdC1nb29kOiAjNmZkM2EyOy0ta2l0LWdvb2QtYmc6ICMxZjNhMmQ7LS1raXQtYmFkOiAjZmY4YTgwOy0ta2l0LWJhZC1iZzogIzNkMjMyMjstLWtpdC13YXJuOiAjZjJjNDZiOy0ta2l0LXdhcm4tYmc6ICMzYTMwMjA7LS1raXQtcmluZzogIzdhYTdmZn06cm9vdHstLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnksIHZhcigtLWtpdC1iZykpOy0tYmctc29mdDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnksIHZhcigtLWtpdC1iZy1zb2Z0KSk7LS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCB2YXIoLS1raXQtZmcpKTstLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCB2YXIoLS1raXQtZmctc29mdCkpOy0tZmctZmFpbnQ6IHZhcigtLWNvbG9yLXRleHQtdGVydGlhcnksIHZhcigtLWtpdC1mZy1mYWludCkpOy0tbGluZTogdmFyKC0tY29sb3ItYm9yZGVyLXByaW1hcnksIHZhcigtLWtpdC1saW5lKSk7LS1hY2NlbnQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaW52ZXJzZSwgdmFyKC0ta2l0LWFjY2VudCkpOy0tYWNjZW50LWZnOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UsIHZhcigtLWtpdC1hY2NlbnQtZmcpKTstLWxpbms6IHZhcigtLWNvbG9yLXRleHQtaW5mbywgdmFyKC0ta2l0LWxpbmspKTstLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgdmFyKC0ta2l0LWdvb2QpKTstLWdvb2QtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcywgdmFyKC0ta2l0LWdvb2QtYmcpKTstLWJhZDogdmFyKC0tY29sb3ItdGV4dC1kYW5nZXIsIHZhcigtLWtpdC1iYWQpKTstLWJhZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIsIHZhcigtLWtpdC1iYWQtYmcpKTstLXdhcm46IHZhcigtLWNvbG9yLXRleHQtd2FybmluZywgdmFyKC0ta2l0LXdhcm4pKTstLXdhcm4tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtd2FybmluZywgdmFyKC0ta2l0LXdhcm4tYmcpKTstLXJpbmc6IHZhcigtLWNvbG9yLXJpbmctcHJpbWFyeSwgdmFyKC0ta2l0LXJpbmcpKTstLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZywgMTRweCk7LS1yYWRpdXMtc206IHZhcigtLWJvcmRlci1yYWRpdXMtc20sIDlweCk7LS1mb250OiB2YXIoLS1mb250LXNhbnMsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmKTstLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAiU0YgTW9ubyIsIE1lbmxvLCBtb25vc3BhY2UpOy0tc2hhZG93OiB2YXIoLS1zaGFkb3ctc20sIDAgMXB4IDJweCByZ2JhKDEwLCAyMCwgNDAsIC4wNCksIDAgMnB4IDVweCByZ2JhKDEwLCAyMCwgNDAsIC4wNCkpfSp7Ym94LXNpemluZzpib3JkZXItYm94fWJvZHl7bWFyZ2luOjA7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Y29sb3I6dmFyKC0tZmcpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0uY2FyZHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWF4LXdpZHRoOjU2MHB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLWxlZnQ6dmFyKC0taW5zZXQtbGVmdCwgMHB4KTtwYWRkaW5nLXJpZ2h0OnZhcigtLWluc2V0LXJpZ2h0LCAwcHgpfS5oZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjE0cHggMThweCAwfS5oZWFkIC50aXRsZXtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5oZWFkIC50aXRsZVtoaWRkZW5de2Rpc3BsYXk6bm9uZX0jY29udGVudHtwYWRkaW5nOjEwcHggMThweCAxOHB4fS5yZWZyZXNoe21hcmdpbi1sZWZ0OjhweDthbGlnbi1zZWxmOmNlbnRlcjtmbGV4Om5vbmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O3BhZGRpbmc6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0tZmctc29mdCk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjEycyxjb2xvciAuMTJzfS5yZWZyZXNoOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWZnKTtib3JkZXItY29sb3I6dmFyKC0tZmctc29mdCl9LnJlZnJlc2g6ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQ7b3BhY2l0eTouNn0ucmVmcmVzaFtoaWRkZW5de2Rpc3BsYXk6bm9uZX0ucmVmcmVzaCBzdmd7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtkaXNwbGF5OmJsb2NrfS5yZWZyZXNoLmJ1c3kgc3Zne2FuaW1hdGlvbjpraXQtc3BpbiAuN3MgbGluZWFyIGluZmluaXRlfUBrZXlmcmFtZXMga2l0LXNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0uZW1wdHl7cGFkZGluZzoxOHB4IDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC1zaXplOjEzcHh9LmhpbnR7bWFyZ2luLXRvcDo4cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tZmctc29mdCk7dGV4dC1hbGlnbjpjZW50ZXJ9Lm5vdGV7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtwYWRkaW5nOjAgMCAxMHB4fS5tb25ve2ZvbnQtZmFtaWx5OnZhcigtLW1vbm8pO2ZvbnQtc2l6ZToxMS41cHg7Y29sb3I6dmFyKC0tZmctZmFpbnQpfS5iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcH0uYmFkZ2Uub2t7Y29sb3I6dmFyKC0tZ29vZCk7YmFja2dyb3VuZDp2YXIoLS1nb29kLWJnKX0uYmFkZ2Uud2FybiwuYmFkZ2UudG9kb3tjb2xvcjp2YXIoLS13YXJuKTtiYWNrZ3JvdW5kOnZhcigtLXdhcm4tYmcpfS5iYWRnZS5lcnJ7Y29sb3I6dmFyKC0tYmFkKTtiYWNrZ3JvdW5kOnZhcigtLWJhZC1iZyl9LmJ1eXttYXJnaW4tdG9wOjE0cHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzoxMXB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1hY2NlbnQpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Y29sb3I6dmFyKC0tYWNjZW50LWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTA7Y3Vyc29yOnBvaW50ZXJ9LmJ1eTpkaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTtjb2xvcjp2YXIoLS1mZy1mYWludCk7Y3Vyc29yOmRlZmF1bHR9LmJ1eS5hbHQsLmdob3N0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tZmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSl9Lmdob3N0e2ZsZXg6MTttaW4taGVpZ2h0OjQwcHg7cGFkZGluZzo5cHggMTBweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tZmctc29mdCk7Y3Vyc29yOnBvaW50ZXJ9Lmxpbmt7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO3BhZGRpbmc6NnB4IDAgMDtjb2xvcjp2YXIoLS1saW5rKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnF0eXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHh9LnF0eSBidXR0b257d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjE3cHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcn0ucXR5IHNwYW57bWluLXdpZHRoOjI2cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2NTB9LmNrLXBhZ2Vye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4IDEycHg7bWFyZ2luLXRvcDoxNHB4fS5jay1wYWdlci1idG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O21pbi13aWR0aDoxMTJweDtoZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMsYm9yZGVyLWNvbG9yIC4xMnMsY29sb3IgLjEyc30uY2stcGFnZXItYnRuIHN2ZywuY2stcGFnZXItYWxsIHN2Z3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2ZsZXg6bm9uZX0uY2stcGFnZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWZnLWZhaW50KX0uY2stcGFnZXItYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0uY2stcGFnZXItYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWZnLWZhaW50KTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O29wYWNpdHk6LjY7Y3Vyc29yOmRlZmF1bHR9LmNrLXBhZ2VyLW57bWluLXdpZHRoOjhjaDt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5jay1wYWdlci1hbGx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3dpZHRoOmZpdC1jb250ZW50O2hlaWdodDozMnB4O21hcmdpbjo2cHggYXV0byAwO3BhZGRpbmc6MCAxMnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTJzLGNvbG9yIC4xMnN9LmNrLXBhZ2VyLWFsbDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2NvbG9yOnZhcigtLWZnKX0uY2stcGFnZXItYWxsOmZpcnN0LWNoaWxkLC5ncmlkKy5jay1wYWdlci1hbGx7bWFyZ2luLXRvcDoxNHB4fWJ1dHRvbjpmb2N1cy12aXNpYmxlLGE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1yaW5nKTtvdXRsaW5lLW9mZnNldDoycHh9QG1lZGlhKG1heC13aWR0aDo0MzBweCl7LmNhcmR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5oZWFke3BhZGRpbmc6MTJweCAxNHB4IDB9I2NvbnRlbnR7cGFkZGluZzo4cHggMTRweCAxNHB4fS5idXl7bWluLWhlaWdodDo0OHB4O2ZvbnQtc2l6ZToxNXB4fS5naG9zdHttaW4taGVpZ2h0OjQ0cHg7Zm9udC1zaXplOjEzLjVweH0uY2stcGFnZXItYnRue21pbi13aWR0aDoxMDRweDtoZWlnaHQ6NDBweH0uY2stcGFnZXItYWxse2hlaWdodDozNnB4fS5xdHkgYnV0dG9ue3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7Zm9udC1zaXplOjE5cHh9LnJlZnJlc2h7d2lkdGg6MzRweDtoZWlnaHQ6MzRweH0uaGludCwubm90ZSwuZW1wdHl7Zm9udC1zaXplOjEzcHh9fUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnJlZnJlc2guYnVzeSBzdmd7YW5pbWF0aW9uOm5vbmV9Knt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fX06cm9vdHstLWJmLXByaW1hcnk6ICMxZDRlZDg7LS1iZi1zdWNjZXNzOiAjMDU5NjY5Oy0tYmYtd2FybmluZzogI2Q5NzcwNjstLWJmLWVycm9yOiAjZWY0NDQ0Oy0tYmYtaW5mbzogIzI1NjNlYjstLWJmLXN1cmZhY2U6ICNmZmZmZmY7LS1jLWJnOiB2YXIoLS1iZi1zdXJmYWNlKTstLWMtc3VuazogI2Y0ZjZmYTstLWMtcmFpc2U6ICNmZmZmZmY7LS1jLWluazogIzBjMTQyNDstLWMtaW5rLTI6ICMzZjRjNjM7LS1jLWluay0zOiAjNWI2ODdlOy0tYy1saW5lOiAjZTNlOGYwOy0tYy1saW5lLTI6ICNjY2Q0ZTE7LS1jLXByaW1hcnk6IHZhcigtLWJmLXByaW1hcnkpOy0tYy1wcmltYXJ5LWhvdmVyOiAjMWE0NGMyOy0tYy1wcmltYXJ5LXByZXNzOiAjMTYzYWE2Oy0tYy1wcmltYXJ5LWluazogIzFkNGVkODstLWMtcHJpbWFyeS1zb2Z0OiAjZWRmMmZlOy0tYy1wcmltYXJ5LXNvZnQtMjogI2RiZTVmZDstLWMtb24tcHJpbWFyeTogI2ZmZmZmZjstLWMtc3VjY2VzczogdmFyKC0tYmYtc3VjY2Vzcyk7LS1jLXN1Y2Nlc3MtaW5rOiAjMDQ3ODU3Oy0tYy1zdWNjZXNzLXNvZnQ6ICNlN2Y2ZWY7LS1jLXdhcm5pbmc6IHZhcigtLWJmLXdhcm5pbmcpOy0tYy13YXJuaW5nLWluazogI2I0NTMwOTstLWMtd2FybmluZy1zb2Z0OiAjZmRmM2UyOy0tYy1lcnJvcjogdmFyKC0tYmYtZXJyb3IpOy0tYy1lcnJvci1pbms6ICNjNDJiMmI7LS1jLWVycm9yLXNvZnQ6ICNmZGVkZWQ7LS1jLWluZm86IHZhcigtLWJmLWluZm8pOy0tYy1pbmZvLWluazogIzFmNTVkNjstLWMtaW5mby1zb2Z0OiAjZWRmM2ZlOy0tYy1zdGFyOiAjYjc3OTFmOy0tYy1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA1JSksIDAgMXB4IDFweCByZ2IoMTYgMjQgNDAgLyAzJSk7LS1jLXNoYWRvdy0yOiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNiUpLCAwIDhweCAyNHB4IC0xMHB4IHJnYigxNiAyNCA0MCAvIDE4JSk7LS1jLXNoYWRvdy1jYXJkOiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNCUpLCAwIDEycHggMzJweCAtMThweCByZ2IoMTYgMjQgNDAgLyAyMiUpOy0tYy1zY3JpbTogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiKDggMTIgMjIgLyAwJSkgMzUlLCByZ2IoOCAxMiAyMiAvIDcyJSkgMTAwJSk7LS1yLWNhcmQ6IDIwcHg7LS1yLWxnOiAxNnB4Oy0tci1tZDogMTJweDstLXItc206IDlweDstLWYtc2FuczogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU0YgUHJvIFRleHQiLCAiU2Vnb2UgVUkgVmFyaWFibGUgVGV4dCIsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgIlBpbmdGYW5nIFNDIiwgIkhpcmFnaW5vIFNhbnMgR0IiLCAiTWljcm9zb2Z0IFlhSGVpIiwgc2Fucy1zZXJpZjstLWYtZGlzcGxheTogIklvd2FuIE9sZCBTdHlsZSIsICJQYWxhdGlubyBMaW5vdHlwZSIsIFBhbGF0aW5vLCAiQm9vayBBbnRpcXVhIiwgR2VvcmdpYSwgIlNvbmd0aSBTQyIsICJTVFNvbmciLCAiU2ltU3VuIiwgc2VyaWY7LS1mLW1vbm86IHVpLW1vbm9zcGFjZSwgIlNGIE1vbm8iLCAiSmV0QnJhaW5zIE1vbm8iLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTstLWVhc2U6IGN1YmljLWJlemllciguMiwgLjcsIC4yLCAxKX1bZGF0YS10aGVtZT1kYXJrXXstLWMtYmc6ICMxMTE3MjM7LS1jLXN1bms6ICMwYjEwMWE7LS1jLXJhaXNlOiAjMTgyMDMxOy0tYy1pbms6ICNlZWYyZjk7LS1jLWluay0yOiAjYjRiZmQxOy0tYy1pbmstMzogIzhmOWJiMTstLWMtbGluZTogIzI0MzA0ODstLWMtbGluZS0yOiAjMzU0MzVmOy0tYy1wcmltYXJ5OiAjM2E2OGYyOy0tYy1wcmltYXJ5LWhvdmVyOiAjMmY1ZGU2Oy0tYy1wcmltYXJ5LXByZXNzOiAjMjg1MmQyOy0tYy1wcmltYXJ5LWluazogIzkzYjJmZjstLWMtcHJpbWFyeS1zb2Z0OiAjMTgyNjRhOy0tYy1wcmltYXJ5LXNvZnQtMjogIzIxMzQ2NzstLWMtb24tcHJpbWFyeTogI2ZmZmZmZjstLWMtc3VjY2VzczogIzEyYjg4NjstLWMtc3VjY2Vzcy1pbms6ICM0ZmQ4YTY7LS1jLXN1Y2Nlc3Mtc29mdDogIzBmMmMyNzstLWMtd2FybmluZzogI2YwYTAzMjstLWMtd2FybmluZy1pbms6ICNmNmJkNWY7LS1jLXdhcm5pbmctc29mdDogIzMzMjUwZjstLWMtZXJyb3I6ICNmMjY0NjQ7LS1jLWVycm9yLWluazogI2ZmOGY4ZjstLWMtZXJyb3Itc29mdDogIzNhMWExZjstLWMtaW5mbzogIzViOGNmZjstLWMtaW5mby1pbms6ICM5ZGJhZmY7LS1jLWluZm8tc29mdDogIzE2MjMzZjstLWMtc3RhcjogI2YyYzQ2YjstLWMtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gMzAlKTstLWMtc2hhZG93LTI6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAzNSUpLCAwIDEwcHggMjhweCAtMTJweCByZ2IoMCAwIDAgLyA2MCUpOy0tYy1zaGFkb3ctY2FyZDogMCAxcHggMCByZ2IoMjU1IDI1NSAyNTUgLyAzJSkgaW5zZXQsIDAgMThweCA0MHB4IC0yNHB4IHJnYigwIDAgMCAvIDcwJSk7Y29sb3Itc2NoZW1lOmRhcmt9OnJvb3QsW2RhdGEtdGhlbWU9ZGFya117LS1iZzogdmFyKC0tYy1iZyk7LS1iZy1zb2Z0OiB2YXIoLS1jLXN1bmspOy0tZmc6IHZhcigtLWMtaW5rKTstLWZnLXNvZnQ6IHZhcigtLWMtaW5rLTIpOy0tZmctZmFpbnQ6IHZhcigtLWMtaW5rLTMpOy0tbGluZTogdmFyKC0tYy1saW5lKTstLWFjY2VudDogdmFyKC0tYy1wcmltYXJ5KTstLWFjY2VudC1mZzogdmFyKC0tYy1vbi1wcmltYXJ5KTstLWxpbms6IHZhcigtLWMtcHJpbWFyeS1pbmspOy0tZ29vZDogdmFyKC0tYy1zdWNjZXNzLWluayk7LS1nb29kLWJnOiB2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7LS1iYWQ6IHZhcigtLWMtZXJyb3ItaW5rKTstLWJhZC1iZzogdmFyKC0tYy1lcnJvci1zb2Z0KTstLXdhcm46IHZhcigtLWMtd2FybmluZy1pbmspOy0td2Fybi1iZzogdmFyKC0tYy13YXJuaW5nLXNvZnQpOy0tcmluZzogdmFyKC0tYy1wcmltYXJ5KTstLXJhZGl1czogdmFyKC0tci1jYXJkKTstLXJhZGl1cy1zbTogdmFyKC0tci1zbSk7LS1mb250OiB2YXIoLS1mLXNhbnMpOy0tbW9ubzogdmFyKC0tZi1tb25vKTstLXNoYWRvdzogdmFyKC0tYy1zaGFkb3ctY2FyZCl9W2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH1odG1se2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Ym9keXtwYWRkaW5nOjAgMCAxNHB4fWJvZHl7Zm9udC1mYW1pbHk6dmFyKC0tZi1zYW5zKTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLWMtaW5rKTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOiJrZXJuIiwiY3YxMSJ9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjc2MHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1jYXJkKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LWNhcmQpfWJ1dHRvbixpbnB1dHtmb250LWZhbWlseTppbmhlcml0fWJ1dHRvbnstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9OndoZXJlKGJ1dHRvbixhLGlucHV0LHN1bW1hcnksW3JvbGU9YnV0dG9uXSk6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9LnAtdG90YWwsLnAtd2FzLC5wLXVuaXQsLnQtZnJvbSwuc3VtLC5tb25leS1vdXQsLmZkLXByaWNlLC5jb2wtcHJpY2UsLnBzLXByaWNlLC5jb2RlLC5uLC53diwuY2R7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5oZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWluLWhlaWdodDo2MHB4O3BhZGRpbmc6MTJweCAxNnB4IDEwcHggMjBweH0uaG9tZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttaW4td2lkdGg6MDttYXJnaW46MCBhdXRvIDAgMDtwYWRkaW5nOjRweCA2cHggNHB4IDA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLXNtKTtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgdmFyKC0tZWFzZSl9LmhvbWU6aG92ZXJ7b3BhY2l0eTouNzh9LmhlYWQgLmJyYW5ke21heC1oZWlnaHQ6MzRweDttYXgtd2lkdGg6MTUwcHg7b2JqZWN0LWZpdDpjb250YWlufVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZHtiYWNrZ3JvdW5kOiNlOWVkZjR9LmhlYWQgLnRpdGxle2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjY4MDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5oZWFkIC5zdWJ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1NTA7dGV4dC1hbGlnbjplbmQ7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5oZWFkIC5zdWI6ZW1wdHl7ZGlzcGxheTpub25lfS5tZW1iZXJjaGlwLC5oZWFkdHJpcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2hlaWdodDozMnB4O3BhZGRpbmc6MCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjIwO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0ubWVtYmVyY2hpcDpob3ZlciwuaGVhZHRyaXA6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5oZWFkdHJpcHtiYWNrZ3JvdW5kOnZhcigtLWMtaW5rKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmspO2NvbG9yOnZhcigtLWMtYmcpO3BhZGRpbmc6MCAxMnB4IDAgMTBweH0uaGVhZHRyaXA6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLWluay0yKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmstMil9LnN1YmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjAgMjBweCAxMHB4fS5iYWNrYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHg7bWF4LXdpZHRoOjUwJTtoZWlnaHQ6MzBweDtwYWRkaW5nOjAgMTJweCAwIDhweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDA7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2N1cnNvcjpwb2ludGVyfS5iYWNrYnRuOmhvdmVye2NvbG9yOnZhcigtLWMtaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZSl9LmZsb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5iYWNrYnRuOm5vdChbaGlkZGVuXSkrLmZsb3d7bWFyZ2luLWlubGluZS1zdGFydDphdXRvfS5mbG93IGxpe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5mbG93IGxpK2xpOmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjE4cHg7aGVpZ2h0OjEuNXB4O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1saW5lLTIpfS5mbG93IC5mZG90e2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZmxvdyBsaS5kb25le2NvbG9yOnZhcigtLWMtaW5rLTIpfS5mbG93IGxpLmRvbmUgLmZkb3R7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnRyYW5zcGFyZW50fS5mbG93IGxpLmRvbmUgLmZkb3Q6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjZweDt0b3A6M3B4O3dpZHRoOjRweDtoZWlnaHQ6OHB4O2JvcmRlcjpzb2xpZCB2YXIoLS1jLW9uLXByaW1hcnkpO2JvcmRlci13aWR0aDowIDJweCAycHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uZmxvdyBsaS5kb25lK2xpOmJlZm9yZSwuZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF06YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KX0uZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF17Y29sb3I6dmFyKC0tYy1pbmspfS5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXSAuZmRvdHtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLXByaW1hcnktc29mdCl9LmJ1c3liYXJ7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCAwIGF1dG87aGVpZ2h0OjNweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWNhcmQpIHZhcigtLXItY2FyZCkgMCAwO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNhcmQuYnVzeSAuYnVzeWJhcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjQwJTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCx2YXIoLS1jLXByaW1hcnkpLHRyYW5zcGFyZW50KTthbmltYXRpb246YnVzeSAxLjFzIHZhcigtLWVhc2UpIGluZmluaXRlfUBrZXlmcmFtZXMgYnVzeXswJXt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDI2MCUpfX0uY2FyZC5idXN5ICNjb250ZW50e29wYWNpdHk6LjU1O3RyYW5zaXRpb246b3BhY2l0eSAuMnMgdmFyKC0tZWFzZSkgLjEyc30uY2FyZC5idXN5IGJ1dHRvbiwuY2FyZC5idXN5IGlucHV0e3BvaW50ZXItZXZlbnRzOm5vbmV9I2NvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTZweDtwYWRkaW5nOjRweCAyMHB4IDIwcHh9LmgtbmFtZXttYXJnaW46MDtmb250LXNpemU6MjFweDtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MS4yO2xldHRlci1zcGFjaW5nOi0uMDJlbX0uaC13aGVyZXttYXJnaW4tdG9wOjRweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweH0uaC1zdW17Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS42O2NvbG9yOnZhcigtLWMtaW5rLTIpfS5ub3Rle3BhZGRpbmc6MDtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNTU7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmVtcHR5e3BhZGRpbmc6MjhweCA4cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tYy1pbmstMyl9LnByb3Nle2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS42NTtjb2xvcjp2YXIoLS1jLWluay0yKTt3aGl0ZS1zcGFjZTpwcmUtbGluZX0ucHJvc2UgaDR7bWFyZ2luOjE0cHggMCA0cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MH0ucHJvc2UgaDQ6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5zZWN7bWFyZ2luOjRweCAwIC02cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY4MDtsZXR0ZXItc3BhY2luZzotLjAxZW19LnNlYy1ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoycHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MH0uaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS5lcnIsLndhcm5ub3RlLC51bnBhaWQsLmFza2VkLC5nYXB7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtwYWRkaW5nOjEycHggMTRweCAxMnB4IDE2cHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS41NX0uZXJyOmJlZm9yZSwud2Fybm5vdGU6YmVmb3JlLC51bnBhaWQ6YmVmb3JlLC5hc2tlZDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxMHB4IGF1dG8gMTBweCAwO3dpZHRoOjNweDtib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO2JhY2tncm91bmQ6Y3VycmVudENvbG9yfS5lcnJ7YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKX0ud2Fybm5vdGV7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LnVucGFpZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmstMil9LnVucGFpZDpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8pfS51bnBhaWQgYntjb2xvcjp2YXIoLS1jLWluZm8taW5rKTtmb250LXdlaWdodDo2ODB9LmFza2Vke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LmFza2VkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZS0yKX0uYXNrZWQgYntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5hc2tlZC5mbGFne2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpfS5hc2tlZC5mbGFnOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZyl9LmFza2VkIC5mb290e21hcmdpbi10b3A6NnB4fS5kZW1vc3RyaXB7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCAwIDEycHg7cGFkZGluZzo4cHggMjBweDtib3JkZXItYmxvY2s6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fS5kZW1vc3RyaXAgYntmbGV4Om5vbmU7cGFkZGluZzoxcHggN3B4O2JvcmRlci1yYWRpdXM6NnB4O2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDhlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9W2RhdGEtdGhlbWU9ZGFya10gLmRlbW9zdHJpcCBie2JhY2tncm91bmQ6IzJmNWZkNn0uZ297ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6OHB4O21pbi1oZWlnaHQ6NDRweDtwYWRkaW5nOjAgMThweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMDVlbTtsaW5lLWhlaWdodDoxLjI7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym94LXNoYWRvdzowIDFweCAjZmZmZmZmMjkgaW5zZXQsMCAxcHggMnB4ICMxMDE4MjgxZjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSx0cmFuc2Zvcm0gLjFzIHZhcigtLWVhc2UpfS5nbzpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1ob3Zlcik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeS1ob3Zlcil9LmdvOmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1wcmVzcyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMXB4KX0uZ28gLmljb3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5nbyAucHJpY2UtaW57cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTBweDttYXJnaW4taW5saW5lLXN0YXJ0OjJweDtib3JkZXItaW5saW5lLXN0YXJ0OjFweCBzb2xpZCByZ2IoMjU1IDI1NSAyNTUgLyAzMiUpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZ28uc29mdHtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JveC1zaGFkb3c6bm9uZX0uZ28uc29mdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0LTIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnktc29mdC0yKX0uZ28uaW52ZXJ0ZWR7YmFja2dyb3VuZDp2YXIoLS1jLWluayk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rKTtjb2xvcjp2YXIoLS1jLWJnKTtib3gtc2hhZG93Om5vbmV9LmdvLmludmVydGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1pbmstMik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rLTIpfS5nby5xdWlldHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7Y29sb3I6dmFyKC0tYy1pbmspO2JveC1zaGFkb3c6bm9uZX0uZ28ucXVpZXQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluay0zKX0uZ28uZGFuZ2Vye2JhY2tncm91bmQ6I2M0MmIyYjtib3JkZXItY29sb3I6I2M0MmIyYjtjb2xvcjojZmZmfS5nby5kYW5nZXI6aG92ZXJ7YmFja2dyb3VuZDojYTkyMjIyO2JvcmRlci1jb2xvcjojYTkyMjIyfS5nby5ibG9ja3t3aWR0aDoxMDAlfS5nby5iaWd7bWluLWhlaWdodDo1MnB4O2ZvbnQtc2l6ZToxNS41cHg7Ym9yZGVyLXJhZGl1czoxNHB4fS5nby5zbXttaW4taGVpZ2h0OjM2cHg7cGFkZGluZzowIDE0cHg7Zm9udC1zaXplOjEzcHg7Ym9yZGVyLXJhZGl1czoxMHB4fS5mb290e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fS5mb290Pi5nb3tmbGV4OjEgMSBhdXRvfS5saW5reXtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXdlaWdodDo2MDA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOjFweDt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4O2N1cnNvcjpwb2ludGVyfS5zdGVwe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHg7cGFkZGluZzoycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKX0uc3RlcCBidXR0b257ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyfS5zdGVwIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnN0ZXAgLm57bWluLXdpZHRoOjIycHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwfS5zdGVwLmxpZ2h0e2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO3BhZGRpbmc6MnB4fS5zdGVwLmxpZ2h0IGJ1dHRvbnt3aWR0aDozMHB4O2hlaWdodDozMHB4fS5zdGVwLmxpZ2h0IGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmFkZHtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uYWRkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5nby5hZGR7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bztib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5nby5hZGQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktaG92ZXIpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNoaXBzLC5wbGFjZXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9LmNoaXB7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttaW4taGVpZ2h0OjMwcHg7cGFkZGluZzowIDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MjB9YnV0dG9uLmNoaXB7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9YnV0dG9uLmNoaXA6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1pbmspfS5jaGlwIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5jaGlwLnBsYWNle21pbi1oZWlnaHQ6MzRweDtwYWRkaW5nOjAgMTRweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTYwfS5jaGlwLnBsYWNlLnRhYntmb250LXdlaWdodDo2NTB9LmNoaXAucGxhY2UudGFiW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0sLmNoaXAucGxhY2UudG9vbFthcmlhLWV4cGFuZGVkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1jLWluayk7YmFja2dyb3VuZDp2YXIoLS1jLWluayk7Y29sb3I6dmFyKC0tYy1iZyl9LmNoaXAucGxhY2UudGFiW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0gc21hbGx7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi43fS5jaGlwLnBsYWNlLmdyb3VwIGltZ3toZWlnaHQ6MjBweDt3aWR0aDphdXRvO2JvcmRlci1yYWRpdXM6NXB4fS5jaGlwLnNvcnRbYXJpYS1wcmVzc2VkPXRydWVdLC5jaGlwLmFza1thcmlhLXByZXNzZWQ9dHJ1ZV17Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LmNoaXAuc29ydFthcmlhLXByZXNzZWQ9dHJ1ZV0gc21hbGx7Y29sb3I6aW5oZXJpdH0uY2hpcC5hc2tbYXJpYS1wcmVzc2VkPXRydWVdOmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjZweDtoZWlnaHQ6MTBweDttYXJnaW46LTNweCAycHggMCAwO2JvcmRlcjpzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXdpZHRoOjAgMnB4IDJweCAwO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O2hlaWdodDoyNHB4O3BhZGRpbmc6MCA5cHg7Ym9yZGVyLXJhZGl1czo3cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYyMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmJhZGdlLmdvb2R7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmJhZGdlLndhcm57YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LmJhZGdlLmJhZHtiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspfS5iYWRnZS5pbmZve2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5mby1pbmspfS5iYWRnZXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHh9LndoZW5iYXJ7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z2FwOjEwcHg7YWxpZ24taXRlbXM6c3RyZXRjaH0ud2hlbi1kYXRlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvIDFmcjthbGlnbi1pdGVtczpzdHJldGNoO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO292ZXJmbG93OmhpZGRlbn0ud2hlbi10aWxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MnB4O21pbi13aWR0aDowO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0ud2hlbi10aWxlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ud2hlbi10aWxlW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMCB2YXIoLS1jLXByaW1hcnkpfS53aGVuLXRpbGU6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDotM3B4O2JvcmRlci1yYWRpdXM6MTJweH0ud2x7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ud3Z7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS53diBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjU1MH0ud2hlbi1zYXl7Z3JpZC1jb2x1bW46MSAvIC0xO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0ud2hlbmJhci5wZW5kaW5nIC53aGVuLWRhdGVze2JvcmRlci1zdHlsZTpkYXNoZWR9LndoZW5iYXIucGVuZGluZyAud3Z7Y29sb3I6dmFyKC0tYy1pbmstMyl9LndoZW4tbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyO3BhZGRpbmc6M3B4IDhweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjY1MDt3aGl0ZS1zcGFjZTpub3dyYXB9LndoZW4tc2lkZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6c3RyZXRjaDtnYXA6OHB4fS53aGVuLXJvb21ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O3BhZGRpbmc6NnB4IDEwcHggNnB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LndoZW4tcm9vbXMgLnN0ZXAubGlnaHR7Ym9yZGVyOjA7cGFkZGluZzowO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTZweH0ud2hlbi1zaWRlIC5nb3tib3JkZXItcmFkaXVzOjE0cHh9LmNhbHtncmlkLWNvbHVtbjoxIC8gLTE7cGFkZGluZzoxNHB4IDE0cHggMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3ctMik7YW5pbWF0aW9uOnJpc2UgLjE4cyB2YXIoLS1lYXNlKX1Aa2V5ZnJhbWVzIHJpc2V7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC00cHgpfX0uY2FsLXRvcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHh9LmNhbC1zYXl7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjUwO2NvbG9yOnZhcigtLWMtaW5rKX0uY2FsLXNheSBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2FsLW5hdntkaXNwbGF5OmZsZXg7Z2FwOjRweH0uY2FsLW5hdiBidXR0b257ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDozNHB4O2hlaWdodDozNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Y3Vyc29yOnBvaW50ZXJ9LmNhbC1uYXYgYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjM1O2N1cnNvcjpkZWZhdWx0fS5jYWwtbmF2IGJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmNhbC1tb250aHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjIwcHh9LmNhbC1tb250aCsuY2FsLW1vbnRoe2Rpc3BsYXk6bm9uZX0uY2FsLW10e21hcmdpbjowIDAgNnB4IDRweDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjY4MH0uY2FsLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNyxtaW5tYXgoMCwxZnIpKTtyb3ctZ2FwOjJweH0uY2FsLWRvd3twYWRkaW5nOjRweCAwIDZweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNke3Bvc2l0aW9uOnJlbGF0aXZlO21pbi13aWR0aDowO2hlaWdodDo0MHB4O3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo1NjA7Y3Vyc29yOnBvaW50ZXJ9LmNkPnNwYW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6bWluKDM4cHgsMTAwJSk7aGVpZ2h0OjM4cHg7bWFyZ2luOjFweCBhdXRvO2JvcmRlci1yYWRpdXM6OTk5cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMgdmFyKC0tZWFzZSl9LmNkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpPnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWMtbGluZS0yKX0uY2Q6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tYy1pbmstMyk7b3BhY2l0eTouNDU7Y3Vyc29yOmRlZmF1bHR9LmNkLnRvZGF5PnNwYW46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206NXB4O2xlZnQ6NTAlO3dpZHRoOjRweDtoZWlnaHQ6NHB4O21hcmdpbi1sZWZ0Oi0ycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcn0uY2QuYmV0d2VlbjpiZWZvcmUsLmNkLmluLmhhcy1vdXQ6YmVmb3JlLC5jZC5vdXQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MXB4IDA7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LmNkLm91dDpiZWZvcmV7cmlnaHQ6NTAlfS5jZC5pbj5zcGFuLC5jZC5vdXQ+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtmb250LXdlaWdodDo3MDB9LmNkLmluOmhvdmVyPnNwYW4sLmNkLm91dDpob3Zlcj5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKTtib3gtc2hhZG93Om5vbmV9LmNkLnJlYWNoOmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjFweCAwO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5jZC5yZWFjaC1lbmQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QucmVhY2gtZW5kPnNwYW57Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxLjVweCB2YXIoLS1jLXByaW1hcnkpfS5jZC5oYXMtcD5zcGFuOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0cHg7cmlnaHQ6NnB4O3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUtMil9LmNkLmJlc3Q+c3BhbjpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfS5jYWwtYmVzdHtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo2NTB9LmNhbC1iZXN0OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjdweDtoZWlnaHQ6N3B4O21hcmdpbi1pbmxpbmUtZW5kOjZweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX0uY2QuYmxhbmt7cG9pbnRlci1ldmVudHM6bm9uZX0uY2FsLWZvb3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTBweDttYXJnaW4tdG9wOjEwcHg7cGFkZGluZy10b3A6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmZsZXgtZGF0ZXN7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1mbG93OmNvbHVtbjtncmlkLWF1dG8tY29sdW1uczptaW5tYXgoMTA4cHgsMWZyKTtnYXA6NnB4O292ZXJmbG93LXg6YXV0bztzY3JvbGxiYXItd2lkdGg6bm9uZTtzY3JvbGwtc25hcC10eXBlOnggcHJveGltaXR5O3BhZGRpbmc6MnB4O21hcmdpbjotMnB4O21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzLmF0LWVuZHttYXNrLWltYWdlOm5vbmV9LmZke3Njcm9sbC1zbmFwLWFsaWduOmNlbnRlcn0uZmxleC1kYXRlczo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfS5mZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjJweDtwYWRkaW5nOjlweCAxMXB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LmZkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5mZC1kYXl7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo2MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5mZC1wcmljZXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5mZC5vbntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLXByaW1hcnkpfS5mZC5vbiAuZmQtZGF5e2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5mZC5iZXN0IC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uZmQuYmVzdCAuZmQtZGF5OmFmdGVye2NvbnRlbnQ6IiDCtyBMb3dlc3QiO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0OjcwMH0uZmQub3V0e2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3JkZXItc3R5bGU6ZGFzaGVkfS5mZC5vdXQgLmZkLXByaWNle2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjYwMH0uaGVsbG97ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4fS5oZWxsbyAuaC1uYW1le2ZvbnQtc2l6ZToyNHB4fS5zZWFyY2h7ZGlzcGxheTpncmlkO2dhcDoxMHB4O3BhZGRpbmc6MTJweDtib3JkZXItcmFkaXVzOjE4cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zZWFyY2ggLndoZXJle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzowIDE0cHg7bWluLWhlaWdodDo1MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZTowfS5zZWFyY2ggLndoZXJlOmZvY3VzLXdpdGhpbntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLXByaW1hcnktc29mdCl9LnNlYXJjaCAud2hlcmUgLmljb3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5zZWFyY2ggLndoZXJlIGlucHV0e2ZsZXg6MTttaW4td2lkdGg6MDtoZWlnaHQ6NTBweDtib3JkZXI6MDtvdXRsaW5lOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjU1MH0uc2VhcmNoIC53aGVyZSBpbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NDUwfS5zZWFyY2ggLndoZW4tZGF0ZXMsLnNlYXJjaCAud2hlbi1yb29tc3tib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5yZWdpb257ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5jb3VudHJ5bmFtZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmNvdW50cnluYW1lIHNtYWxse2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LmRlc3R7ZGlzcGxheTpncmlkO2dhcDo4cHg7cGFkZGluZzoxMHB4IDAgMTJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5kZXN0Omxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTowfS5kZXN0LWNvdW50cnl7anVzdGlmeS1zZWxmOnN0YXJ0O3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyfS5kZXN0LWNvdW50cnkgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5kZXN0LWNvdW50cnk6aG92ZXJ7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnRvb2xiYXJ7Z2FwOjhweH0uY2hpcC5wbGFjZS50b29se2dhcDo3cHg7Zm9udC13ZWlnaHQ6NjIwfS5jaGlwLnBsYWNlLnRvb2wgLmljb3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4O29wYWNpdHk6Ljh9LmZpbHRlci1wYW5lbHtkaXNwbGF5OmdyaWQ7Z2FwOjEycHg7cGFkZGluZzoxNHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5mZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fS5zb3J0cy1re21pbi13aWR0aDo1MnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmNpdHlncm91cHtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LmNpdHlncm91cCsuY2l0eWdyb3Vwe21hcmdpbi10b3A6OHB4fS5jaXR5bmFtZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uY2l0eW5hbWUgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDB9LnRpbGVze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjIwcHgsMWZyKSk7Z2FwOjE0cHh9LnRpbGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMThzIHZhcigtLWVhc2UpLGJveC1zaGFkb3cgLjE4cyB2YXIoLS1lYXNlKSx0cmFuc2Zvcm0gLjE4cyB2YXIoLS1lYXNlKX0udGlsZTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3ctMik7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9LnRpbGU6aG92ZXIgLnQtc2hvdCBpbWd7dHJhbnNmb3JtOnNjYWxlKDEuMDMpfS50LXNob3R7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjthc3BlY3QtcmF0aW86NCAvIDM7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmZ9LnQtc2hvdCBpbWcsLmhlcm8gaW1nLC50aHVtYiBpbWcsLnJvb20tc2hvdCBpbWd7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyO3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyB2YXIoLS1lYXNlKX0udC1tYXJre3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MDtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZTozMHB4O2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMDRlbTtvcGFjaXR5Oi45fS50LWJyYW5ke3Bvc2l0aW9uOmFic29sdXRlO2luc2V0LWJsb2NrLXN0YXJ0OjEwcHg7aW5zZXQtaW5saW5lLXN0YXJ0OjEwcHg7ei1pbmRleDoyO3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6IzBhMGUxODk0O2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wMmVtO2JhY2tkcm9wLWZpbHRlcjpibHVyKDZweCl9LnQtYm9keXtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6M3B4O3BhZGRpbmc6MTJweCAxNHB4IDE0cHh9LnQtbmFtZXt0ZXh0LXdyYXA6cHJldHR5O2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWxpbmUtY2xhbXA6MjtsaW5lLWNsYW1wOjI7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjUwO2xpbmUtaGVpZ2h0OjEuMztsZXR0ZXItc3BhY2luZzotLjAxZW19LnQtd2hlcmU6ZW1wdHl7ZGlzcGxheTpub25lfS50LW1ldGF7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21pbi13aWR0aDowfS50LW1ldGEgLnJhdGV7bWFyZ2luLWlubGluZS1zdGFydDphdXRvfS50LXdoZXJle21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbjtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS50LWZvb3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7bWFyZ2luLXRvcDphdXRvO3BhZGRpbmctdG9wOjEwcHh9LnQtZnJvbXtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3NTA7bGluZS1oZWlnaHQ6MS4xNTtsZXR0ZXItc3BhY2luZzotLjAxZW19LnQtZnJvbSBzbWFsbCwudC1zdWJ7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzowfS50LWZyb20gLnQtcHJle2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjU1MDtjb2xvcjp2YXIoLS1jLWluay0zKX0udC1mcm9tLnQtbm9uZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LnJhdGV7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2NTA7d2hpdGUtc3BhY2U6bm93cmFwfS5yYXRlIHN2Z3tjb2xvcjp2YXIoLS1jLWluayl9LnJhdGUgLnQtZnJvbXtkaXNwbGF5OmlubGluZX0ucmF0ZSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LnQtdGFnc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweDttYXJnaW4tdG9wOjhweH0udC10YWdzIC5wZXJre2ZvbnQtc2l6ZToxMnB4fS50aWxlLm92ZXJ7b3BhY2l0eTouOTJ9Lmhlcm97cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttYXJnaW46LTRweCAtMjBweCAwO2FzcGVjdC1yYXRpbzoxNiAvIDg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmZ9Lmhlcm8gaW1ne29iamVjdC1wb3NpdGlvbjpjZW50ZXIgNTglfS5oZXJvOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjE7YmFja2dyb3VuZDp2YXIoLS1jLXNjcmltKX0uaGVybyAudC1tYXJre2ZvbnQtc2l6ZTo0NHB4fS5oZXJvLXR4dHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIDAgMDt6LWluZGV4OjI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O3BhZGRpbmc6MCAyMHB4IDE4cHg7Y29sb3I6I2ZmZn0uaGVyby10eHQgLnQtYnJhbmR7cG9zaXRpb246c3RhdGljO2FsaWduLXNlbGY6ZmxleC1zdGFydH0uaG90ZWwtbmFtZXttYXJnaW46MDtoeXBoZW5zOm5vbmU7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MjhweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4xO2xldHRlci1zcGFjaW5nOi0uMDFlbTt0ZXh0LXdyYXA6YmFsYW5jZTt0ZXh0LXNoYWRvdzowIDFweCAxOHB4IHJnYigwIDAgMCAvIDMwJSl9Lmhlcm8td2hlcmV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4IDEwcHg7Y29sb3I6I2ZmZmZmZmU1O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU1MH0uaGVyby13aGVyZSAucmF0ZXtjb2xvcjojZmZmfS5oZXJvLXdoZXJlIC5yYXRlIHN2Z3tjb2xvcjojZmZkMjdhfS5oZXJvLXdoZXJlIC5yYXRlIHNtYWxse2NvbG9yOiNmZmZmZmZjNztmb250LXdlaWdodDo1MDB9LmFtZW57ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHggMTZweDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4fS5hbWVuIGxpe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHh9LmFtZW4gbGk6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6NXB4O2hlaWdodDo1cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7b3BhY2l0eTouN30ucm9vbXN7ZGlzcGxheTpncmlkO2dhcDoxMnB4fS5yb29te2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTE2cHggMWZyO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgImJ1eSBidXkiO2dhcDoxMnB4IDE0cHg7cGFkZGluZzoxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE4cyB2YXIoLS1lYXNlKSxib3gtc2hhZG93IC4xOHMgdmFyKC0tZWFzZSl9LnJvb206aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucm9vbS5oZWxke2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWMtcHJpbWFyeSl9LnJvb20tc2hvdHtncmlkLWFyZWE6c2hvdDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2FzcGVjdC1yYXRpbzoxO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZjtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToyMnB4fS5yb29tLW1haW57Z3JpZC1hcmVhOm1haW47ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O21pbi13aWR0aDowfS5yb29tLW5hbWV7bWFyZ2luOjA7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuMztsZXR0ZXItc3BhY2luZzotLjAxZW19LmZhY3Rze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MnB4IDEycHg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4fS5mYWN0cyBsaXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4fS5mYWN0cyAuaWNve3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7b3BhY2l0eTouODV9LnBlcmtze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDttYXJnaW46MnB4IDAgMDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS5wZXJre2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo3cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS4zNX0ucGVyayAuaWNve21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLWMtaW5rKX0ucGVyayBie2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXdlaWdodDo2NTB9LnBlcmsud2FybiwucGVyay53YXJuIC5pY28sLnBlcmsud2FybiBie2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5wZXJrLnNhdmUsLnBlcmsuc2F2ZSAuaWNvLC5wZXJrLnNhdmUgYntjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0ucm9vbS1idXl7Z3JpZC1hcmVhOmJ1eTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0ucm9vbS1idXkgLnByaWNle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjFweDttaW4td2lkdGg6MH0ucm9vbS1idXkgLmFjdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnAtdG90YWx7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1O2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LnAtdW5pdHtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1NTB9LnAtbmlnaHR7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9LnAtd2Fze2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0ucC1tZW1iZXJ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O21hcmdpbi10b3A6M3B4O3BhZGRpbmc6MXB4IDdweDtib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMH0ubGVmdHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LnJ0eXBlIC5yb29tLXNob3QsLnJ0eXBlIC5yb29tLW1haW4sLnJ0eXBlIC5yb29tLWJ1eXtncmlkLWFyZWE6YXV0b30ucnR5cGV7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LnJ0eXBlLmhlbGR7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSl9LnJ0eXBlLWhlYWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczo5NnB4IG1pbm1heCgwLDFmcik7Z2FwOjEycHg7cGFkZGluZzoxMnB4fS5ydHlwZS1oZWFkIC5yb29tLXNob3R7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjA7YXNwZWN0LXJhdGlvOjE7YWxpZ24tc2VsZjpzdGFydH0ucnR5cGUtbntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDB9LnJhdGVze2Rpc3BsYXk6Z3JpZH0ucnJhdGV7ZGlzcGxheTpncmlkO2dhcDoxMHB4O3BhZGRpbmc6MTJweCAxNHB4IDE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0ucnJhdGUuaGVsZHtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0ucmF0ZS1tYWlue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDttaW4td2lkdGg6MH0ucmF0ZS1uYW1le2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xpbmUtaGVpZ2h0OjEuM30ucnJhdGUgLnJvb20tYnV5e3BhZGRpbmctdG9wOjA7Ym9yZGVyLXRvcDowfS5zZWd7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo0cHg7cGFkZGluZzo0cHg7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc2VnLWJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6N3B4O21pbi1oZWlnaHQ6NDBweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2MjA7Y3Vyc29yOnBvaW50ZXJ9LnNlZy1iW2FyaWEtcHJlc3NlZD10cnVlXXtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93KX0uc3RhcnRze2Rpc3BsYXk6Z3JpZDtnYXA6OHB4O21hcmdpbi10b3A6NHB4fS5zdGFydHMgLmNoaXB7bWluLWhlaWdodDozNHB4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZ29vZC10by1rbm93LC5yb3dze2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0ucm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5yb3cud2l0aHRodW1ie2dyaWQtdGVtcGxhdGUtY29sdW1uczo2NHB4IG1pbm1heCgwLDFmcikgYXV0byBhdXRvfS50aHVtYntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMH0ucm93IC5ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDttaW4td2lkdGg6MH0ucm93IC5uYW1le2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xpbmUtaGVpZ2h0OjEuM30ucm93IC5tZXRhe2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS40NX0ucm93IC5wcmljZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2dhcDoxcHg7dGV4dC1hbGlnbjplbmR9LnJvdyAucC10b3RhbHtmb250LXNpemU6MTZweH0ucm93IC5hY3Rpb257ZGlzcGxheTpmbGV4O2dhcDo4cHh9LmRheXttYXJnaW46NHB4IDAgLTZweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmJhbmR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0byAxZnI7YWxpZ24taXRlbXM6Y2VudGVyO292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmJhbmQtZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7cGFkZGluZzoxMHB4IDE0cHg7dGV4dC1hbGlnbjpzdGFydH0uYmFuZC1kOmxhc3QtY2hpbGR7YWxpZ24taXRlbXM6ZmxleC1lbmQ7dGV4dC1hbGlnbjplbmR9LmJhbmQgLndoZW4tbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uY29uZiAuYmFuZHttYXJnaW4tdG9wOjZweDtib3JkZXItc3R5bGU6ZGFzaGVkO2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnJldmlldy1oe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweH0uc3Vtc3tkaXNwbGF5OmdyaWQ7Z2FwOjhweDtwYWRkaW5nOjE0cHggMTZweDtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3Vte2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTMuNXB4fS5zdW0gc3BhbjpsYXN0LWNoaWxke2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjplbmR9LnN1bS5nb29kIHNwYW4sLnN1bS5nb29kIHNwYW46bGFzdC1jaGlsZHtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo2NTB9LnN1bS50b3RhbHthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tdG9wOjRweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwfS5zdW0udG90YWwgc3BhbjpsYXN0LWNoaWxke2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0Ojc4MDtsZXR0ZXItc3BhY2luZzotLjAyZW19LnN1bS50b3RhbCBzbWFsbHtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0uZm9ybXtkaXNwbGF5OmdyaWQ7Z2FwOjE0cHg7cGFkZGluZzoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LmZvcm0taHttYXJnaW46MDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS50d297ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxMnB4fS5mb3JtIGxhYmVse2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjY1MH0uZm9ybSBpbnB1dFt0eXBlPXRleHRdLC5mb3JtIGlucHV0W3R5cGU9ZW1haWxdLC5mb3JtIGlucHV0W3R5cGU9dGVsXSwuZm9ybSBpbnB1dFt0eXBlPXRpbWVde3dpZHRoOjEwMCU7bWluLXdpZHRoOjA7aGVpZ2h0OjQ2cHg7cGFkZGluZzowIDEzcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm94LXNoYWRvdyAuMTVzIHZhcigtLWVhc2UpfS5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tYy1lcnJvcik7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1lcnJvci1zb2Z0KX0uZmllbGQtZXJye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo2cHg7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTUwO2xpbmUtaGVpZ2h0OjEuNH0uZmllbGQtZXJyIC5pY297d2lkdGg6MTVweDtoZWlnaHQ6MTVweDttYXJnaW4tdG9wOjFweH0uZm9ybSBpbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NDAwfS5mb3JtIGlucHV0OmZvY3Vze291dGxpbmU6MDtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLXByaW1hcnktc29mdCl9LmFza3N7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtwYWRkaW5nLXRvcDoxMnB4fS5hc2tzIHN1bW1hcnl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtjdXJzb3I6cG9pbnRlcjtsaXN0LXN0eWxlOm5vbmV9LmFza3Mgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlcntkaXNwbGF5Om5vbmV9LmFza3Mgc3VtbWFyeTphZnRlcntjb250ZW50OiIiO3dpZHRoOjdweDtoZWlnaHQ6N3B4O21hcmdpbjotM3B4IDAgMCBhdXRvO2JvcmRlcjpzb2xpZCB2YXIoLS1jLWluay0zKTtib3JkZXItd2lkdGg6MCAxLjc1cHggMS43NXB4IDA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyB2YXIoLS1lYXNlKX0uYXNrc1tvcGVuXSBzdW1tYXJ5OmFmdGVye21hcmdpbi10b3A6M3B4O3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9LmFza3Mgc3VtbWFyeSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LmFza3MtYm9keXtkaXNwbGF5OmdyaWQ7Z2FwOjEycHg7bWFyZ2luLXRvcDoxMnB4fS5mb3JtIGxhYmVsLnJlbWVtYmVye2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDB9LmZvcm0gbGFiZWwucmVtZW1iZXIgaW5wdXR7bWFyZ2luOjJweCAwIDA7YWNjZW50LWNvbG9yOnZhcigtLWMtcHJpbWFyeSl9LnRydXN0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjV9LnRydXN0IC5pY297bWFyZ2luLXRvcDoxcHg7Y29sb3I6dmFyKC0tYy1pbmstMil9LmJvb2tlZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MTBweCAwIDRweDt0ZXh0LWFsaWduOmNlbnRlcn0uYm9va2VkLW1hcmt7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo1NnB4O2hlaWdodDo1NnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzKTthbmltYXRpb246cG9wIC40NXMgdmFyKC0tZWFzZSl9LmJvb2tlZC1tYXJrIC5pY297d2lkdGg6MjhweDtoZWlnaHQ6MjhweH0uYm9va2VkLW1hcmsudGVzdHtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluZm8pfUBrZXlmcmFtZXMgcG9wezAle3RyYW5zZm9ybTpzY2FsZSguNik7b3BhY2l0eTowfTYwJXt0cmFuc2Zvcm06c2NhbGUoMS4wNik7b3BhY2l0eToxfX0uYm9va2VkLXR7bWFyZ2luOjA7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi0uMDJlbX0uYm9va2VkLXN7bWF4LXdpZHRoOjQ0Y2g7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjV9LmNvbmZ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO2dhcDo0cHg7cGFkZGluZzoxOHB4IDIwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTt0ZXh0LWFsaWduOmNlbnRlcn0uY29uZiAubm90ZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDhlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmNvZGV7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtZmFtaWx5OnZhcigtLWYtbW9ubyk7Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtfS5jb25mLnRpY2tldCAud2hlcmV7cG9zaXRpb246cmVsYXRpdmV9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmUsLmNvbmYudGlja2V0IC53aGVyZTphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTBweDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmV7bGVmdDotMzFweDtjbGlwLXBhdGg6aW5zZXQoMCAwIDAgNTAlKX0uY29uZi50aWNrZXQgLndoZXJlOmFmdGVye3JpZ2h0Oi0zMXB4O2NsaXAtcGF0aDppbnNldCgwIDUwJSAwIDApfS5jb25mIC53aGVyZXttYXJnaW4tdG9wOjhweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1jLWxpbmUtMik7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo2MDB9LmNvbmYgLndoZW57Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHh9Lm1vbmV5LW91dHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZzoxNHB4IDE2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwfS5tb25leS1vdXQgc3BhbjpsYXN0LWNoaWxke2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0Ojc4MDtsZXR0ZXItc3BhY2luZzotLjAyZW19LnF1aWV0LWVuZHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOi00cHh9Lmxpbmt5LmRhbmdlcntjb2xvcjp2YXIoLS1jLWVycm9yLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS5ob21lLWxpbmtze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cHggMTBweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweH0uYXNrZWQtbGluZXtmb250LXN0eWxlOml0YWxpY30ubGVnc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjEwcHh9LmxlZ3tkaXNwbGF5OmdyaWQ7Z2FwOjRweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKX0ubGVnLndhc3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmxlZy53YXMgLmxlZ3Z7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDtjb2xvcjp2YXIoLS1jLWluay0zKX0ubGVna3tjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5sZWd2e2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MH0ubGVnbXtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4fS5zdGF0ZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MjJweCAxMnB4IDhweDt0ZXh0LWFsaWduOmNlbnRlcn0uc3RhdGUtaWNve2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NTJweDtoZWlnaHQ6NTJweDttYXJnaW4tYm90dG9tOjRweDtib3JkZXItcmFkaXVzOjE2cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5zdGF0ZS1pY28gLmljb3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4fS5zdGF0ZS5lcnJvciAuc3RhdGUtaWNve2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yKX0uc3RhdGUubGltaXQgLnN0YXRlLWljb3tiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0uc3RhdGUtdHttYXJnaW46MDtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3MjA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uc3RhdGUtZHttYXgtd2lkdGg6NDZjaDttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNTV9LnN0YXRlIC5mb290e2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDo4cHh9LnN0YXRlIC5mb290Pi5nb3tmbGV4OjAgMSBhdXRvfS5za2Vse2Rpc3BsYXk6Z3JpZDtnYXA6MTRweH1bZGF0YS10aGVtZT1kYXJrXSAuc2t7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzE3MjAzMywjMjQzMDQ5LCMxNzIwMzMpfS5za3tib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdmFyKC0tYy1zdW5rKSAwJSx2YXIoLS1jLWxpbmUpIDUwJSx2YXIoLS1jLXN1bmspIDEwMCUpO2JhY2tncm91bmQtc2l6ZToyMDAlIDEwMCU7YW5pbWF0aW9uOnNoaW1tZXIgMS40cyBsaW5lYXIgaW5maW5pdGV9LnNrLWxvZ297ZGlzcGxheTpibG9jazt3aWR0aDoxMTJweDtoZWlnaHQ6MzBweH0uc2stYmFye2hlaWdodDo2MHB4O2JvcmRlci1yYWRpdXM6MTRweH0uc2stdGlsZXN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMjBweCwxZnIpKTtnYXA6MTRweH0uc2stdGlsZXtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LnNrLWltZ3thc3BlY3QtcmF0aW86NCAvIDM7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKX0uc2stbGluZXtoZWlnaHQ6MTRweDt3aWR0aDo4MCV9LnNrLWxpbmUuc2hvcnR7d2lkdGg6NDUlfUBrZXlmcmFtZXMgc2hpbW1lcnswJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjIwMCUgMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDAlIDB9fS5jbXAtd3JhcHtvdmVyZmxvdy14OmF1dG87bWFyZ2luLWlubGluZTotMnB4O3BhZGRpbmc6MnB4fS5jbXB7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNzZweCw5NnB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDEyNHB4LDFmcikpO2FsaWduLWl0ZW1zOnN0cmV0Y2g7Y29sdW1uLWdhcDoxMHB4fS5jbXAuZm91cntncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDU2cHgsNzJweCkgcmVwZWF0KHZhcigtLWNvbHMpLG1pbm1heCgxMDRweCwxZnIpKX0uY21wLWNvcm5lcntncmlkLWNvbHVtbjoxO2dyaWQtcm93OjEgLyBzcGFuIHZhcigtLWhlYWQtcm93cywgNSl9LmNtcC1oZWFke2Rpc3BsYXk6Z3JpZDtncmlkLXJvdzoxIC8gc3BhbiB2YXIoLS1oZWFkLXJvd3MsIDUpO2dyaWQtdGVtcGxhdGUtcm93czpzdWJncmlkO3Jvdy1nYXA6OHB4O2FsaWduLWNvbnRlbnQ6c3RhcnQ7bWluLXdpZHRoOjA7cGFkZGluZy1ib3R0b206MTRweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0uY21wLWhlYWQ+LmNvbC1uYW1lLC5jbXAtaGVhZD4uY29sLXByaWNlLC5jbXAtaGVhZD4ud2h5LC5jbXAtaGVhZD4ucGN7bWFyZ2luLWlubGluZToxMnB4fS5jbXAtaGVhZC5waWNre2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWMtcHJpbWFyeSl9LmNtcC1oZWFkIC50LXNob3R7YXNwZWN0LXJhdGlvOjE2IC8gMTA7d2lkdGg6MTAwJTtwYWRkaW5nOjA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXJ9LnBpY2ttYXJre3BhZGRpbmc6NHB4IDhweDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnBpY2ttYXJrLm5vbmV7dmlzaWJpbGl0eTpoaWRkZW59LmNvbC1uYW1le21hcmdpbi10b3A6MnB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjN9LmNvbC1ncm91cHtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NTAwfS5jb2wtcHJpY2V7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzgwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LmNvbC1wcmljZSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjU1MDtsZXR0ZXItc3BhY2luZzowfS5jb2wtcHJpY2Ugc21hbGwuc3Vie2Rpc3BsYXk6YmxvY2t9LndoeXtwYWRkaW5nLWlubGluZS1zdGFydDo5cHg7Ym9yZGVyLWlubGluZS1zdGFydDoycHggc29saWQgdmFyKC0tYy1wcmltYXJ5LXNvZnQtMik7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXN0eWxlOml0YWxpYztsaW5lLWhlaWdodDoxLjV9LndoeS5ub25le3BhZGRpbmc6MDtib3JkZXI6MH0ucGN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNDV9LnBjIGRpdntkaXNwbGF5OmZsZXg7Z2FwOjZweH0ucGMgLm17ZmxleDowIDAgYXV0bztmb250LXdlaWdodDo3NTB9LnBjIC5wcm8gLm17Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnBjIC5jb24gLm17Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNtcCAuaywuY21wIC52e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo4cHggMTBweDtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNDV9LmNtcCAua3twb3NpdGlvbjpzdGlja3k7aW5zZXQtaW5saW5lLXN0YXJ0OjA7Z3JpZC1jb2x1bW46MTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjYwMH0uY21wIC52LmFsdCwuY21wIC5rOmhhcygrLnYuYWx0KXtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmRheXN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZGF5cm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MzBweCAxZnI7Z2FwOjEycHh9LmRheW51bXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fS5kYXludW0gYntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmRheW51bSBpe2ZsZXg6MTt3aWR0aDoycHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5kYXlyb3c6bGFzdC1jaGlsZCAuZGF5bnVtIGl7ZGlzcGxheTpub25lfS5kYXlib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttaW4td2lkdGg6MDtwYWRkaW5nOjNweCAwIDE4cHh9LmRheWxhYmVse2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjN9LmRheWxhYmVsIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0uZGF5bm90ZXtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU1fS5tb21lbnRze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDttYXJnaW46MnB4IDAgMDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS5tb21lbnRzIGxpe2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6ODRweCAxZnI7Z2FwOjEwcHg7YWxpZ24taXRlbXM6YmFzZWxpbmV9Lm1vbWVudHMgLndoZW57b3ZlcmZsb3ctd3JhcDphbnl3aGVyZTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA1ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5tb21lbnRzIC53aGF0e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjFweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjR9Lm1vbWVudHMgLndoYXQgYntmb250LXdlaWdodDo2MjB9Lm1vbWVudHMgLndoYXQgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9LnBsYW4tc3RheXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwNHB4IDFmcjtnYXA6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtjdXJzb3I6cG9pbnRlcn0ucGxhbi1zdGF5OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnBsYW4tc3RheSAucHMtc2hvdHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6OTJweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmfS5wbGFuLXN0YXkgLnBzLXNob3QgaW1ne3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyfS5wbGFuLXN0YXkgLnBzLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo0cHg7bWluLXdpZHRoOjA7cGFkZGluZzoxMHB4IDEycHggMTBweCAwfS5wbGFuLXN0YXkgLm5hbWV7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuM30ucGxhbi1zdGF5IC5tZXRhe2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5wbGFuLXN0YXkgLnBzLXByaWNle2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NzAwfS5wbGFuLW5pZ2h0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjhweDtwYWRkaW5nLXRvcDo2cHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWMtbGluZS0yKTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyfS5wbGFuLWl0ZW17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKX0ucGxhbi1pdGVtIC5uYW1le2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjY1MH0ucGxhbi1pdGVtIC5tZXRhe2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5pbnN0YXRle3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDt3aGl0ZS1zcGFjZTpub3dyYXB9Lmluc3RhdGUueWVze2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5pbnN0YXRlLm5ve2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uZ2Fwe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uZ2FwIGJ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0Ojc4MDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LnN1Z2dlc3R7ZGlzcGxheTpncmlkO2dhcDo2cHg7cGFkZGluZy10b3A6MTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5zdWdnZXN0IC53bHttYXJnaW4tYm90dG9tOjJweH0uY2hpcC5uZXh0e2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O3dpZHRoOjEwMCU7bWluLWhlaWdodDo0NHB4O3BhZGRpbmc6OHB4IDE0cHg7Ym9yZGVyLXJhZGl1czoxMnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246c3RhcnR9LmNoaXAubmV4dCAuaWNve2ZsZXg6bm9uZTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uc3VnZ2VzdCAuY2hpcC5zYXkgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNrLXBhZ2VyLWJ0bntoZWlnaHQ6NDBweDtib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7Zm9udC13ZWlnaHQ6NjAwfS5jay1wYWdlci1ue2NvbG9yOnZhcigtLWMtaW5rLTMpfS5wLWxpbmV7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwfS5yb3cubGluZSAucC11bml0e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0ucm93LmxpbmUgLnBlcmtze21hcmdpbi10b3A6NHB4fS5tZW1iZXItb2ZmZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4fS5tZW1iZXItb2ZmZXIgLmljbywubWVtYmVyLW9mZmVyIC5saW5reXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uYXNrLWdyb3Vwe2Rpc3BsYXk6Z3JpZDtnYXA6OHB4fS5saW5rc3tkaXNwbGF5OmdyaWQ7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpfS5saW5rLXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O21pbi1oZWlnaHQ6NDZweDtwYWRkaW5nOjAgMTRweDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1NjA7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcn0ubGluay1yb3c6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDowfS5saW5rLXJvdzpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9Lmxpbmstcm93IC5pY297Y29sb3I6dmFyKC0tYy1pbmstMyl9LnN0cmlwLWh7bWFyZ2luLWJvdHRvbTotOHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMH0uZmQubG93ZXN0IC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uZmQubG93ZXN0e2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1jLXN1Y2Nlc3MpIDQ1JSx2YXIoLS1jLWxpbmUpKX0udGlsZS5sb3dlc3QgLnQtZnJvbXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0udC1nb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LnQtZ28gLmljb3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4fS50aWxlOmhvdmVyIC50LWdve2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5yZW1pbmR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEwcHg7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NjA7bGluZS1oZWlnaHQ6MS41fS5yZW1pbmQgLmljb3ttYXJnaW4tdG9wOjFweH0uY2R7aGVpZ2h0OjUycHh9LmNkPnNwYW57d2lkdGg6bWluKDM2cHgsMTAwJSk7aGVpZ2h0OjM2cHg7bWFyZ2luLXRvcDowfS5jZC1we3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6MTtvdmVyZmxvdzpoaWRkZW47Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjkuNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzotLjAyZW07dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZC5iZXR3ZWVuOmJlZm9yZSwuY2QuaW4uaGFzLW91dDpiZWZvcmUsLmNkLm91dDpiZWZvcmUsLmNkLnJlYWNoOmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtpbnNldDoxcHggMCAxM3B4fS5jZC5oYXMtcD5zcGFuOmJlZm9yZXtkaXNwbGF5Om5vbmV9LmNkLmJlZm9yZTpub3QoOmRpc2FibGVkKXtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2Q6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjB9LmNkOmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9LmNhbC1tdHttYXJnaW4tbGVmdDowfVtkYXRhLXRoZW1lPWRhcmtdIC5jZDpkaXNhYmxlZHtvcGFjaXR5Oi42fS53di1lbXB0eXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LnNrLXNheXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LnN0ZXAgYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjM7Y3Vyc29yOmRlZmF1bHR9LnNlYXJjaC5yZXRyeXtkaXNwbGF5OmZsZXg7Z2FwOjhweDt3aWR0aDoxMDAlO21heC13aWR0aDo0NDBweDttYXJnaW46OHB4IGF1dG8gMDtwYWRkaW5nOjA7YmFja2dyb3VuZDpub25lfS5zZWFyY2gucmV0cnkgLndoZXJle2ZsZXg6MTttaW4taGVpZ2h0OjQ4cHh9LnNlYXJjaC5yZXRyeSAud2hlcmUgaW5wdXR7aGVpZ2h0OjQ2cHh9LnQtbmFtZSwuaG90ZWwtbmFtZSwucm9vbS1uYW1lLC5yYXRlLW5hbWUsLmNvbmYgLndoZXJlLC5yb3cgLm5hbWUsLmNvbC1uYW1le3dvcmQtYnJlYWs6a2VlcC1hbGw7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0uaGVhZHRyaXAtbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21pbi13aWR0aDoyMHB4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCA2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0Ojc1MH0uaGVhZCAuYnJhbmR7Ym94LXNpemluZzpjb250ZW50LWJveDtwYWRkaW5nOjVweCAxMHB4O2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7LmNhbC1tb250aHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LmNhbC1tb250aCsuY2FsLW1vbnRoe2Rpc3BsYXk6YmxvY2t9LnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE2OHB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAic2hvdCBidXkiO2FsaWduLWl0ZW1zOnN0YXJ0O3BhZGRpbmc6MTRweH0ucm9vbS1zaG90e2FzcGVjdC1yYXRpbzphdXRvO2FsaWduLXNlbGY6c3RyZXRjaDttaW4taGVpZ2h0OjE1MHB4fS5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMzJweCBtaW5tYXgoMCwxZnIpfS5oZXJve2FzcGVjdC1yYXRpbzoxNiAvIDd9LmhvdGVsLW5hbWV7Zm9udC1zaXplOjMycHh9fUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpey5oZWFke21pbi1oZWlnaHQ6NTZweDtwYWRkaW5nOjEwcHggMTJweCA4cHggMTZweH0uc3ViaGVhZHtwYWRkaW5nOjAgMTZweCA4cHh9LmRlbW9zdHJpcHtwYWRkaW5nOjhweCAxNnB4fSNjb250ZW50e2dhcDoxNHB4O3BhZGRpbmc6MnB4IDE2cHggMTZweH0uaGVyb3ttYXJnaW4taW5saW5lOi0xNnB4O2FzcGVjdC1yYXRpbzo0IC8gM30uaGVyby10eHR7cGFkZGluZzowIDE2cHggMTZweH0uaG90ZWwtbmFtZXtmb250LXNpemU6MjVweH0ud2hlbmJhcntncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0ud2hlbi1zaWRle2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0ud2hlbi1yb29tc3tmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS53aGVuLXNpZGUgLmdve21pbi1oZWlnaHQ6NDhweH0ud2hlbi1zaWRlOm5vdCg6aGFzKC5nbykpe2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LndoZW5iYXI6bm90KDpoYXMoLmdvKSl7Z2FwOjA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC53aGVuLWRhdGVze2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAud2hlbi1yb29tc3twYWRkaW5nOjhweCAxMHB4IDhweCAxNHB4O2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC5jYWx7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lfS50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoxMHB4fS50aWxle2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpzdHJldGNofS50LXNob3R7ZmxleDowIDAgMTEycHg7YXNwZWN0LXJhdGlvOmF1dG87bWluLWhlaWdodDoxMzJweH0udC1icmFuZHtpbnNldC1ibG9jay1zdGFydDo4cHg7aW5zZXQtaW5saW5lLXN0YXJ0OjhweDtwYWRkaW5nOjJweCA3cHg7Zm9udC1zaXplOjEwcHh9LnQtYm9keXtwYWRkaW5nOjExcHggMTJweCAxMnB4O21pbi13aWR0aDowfS50LW5hbWV7Zm9udC1zaXplOjE0LjVweH0udC1mcm9te2ZvbnQtc2l6ZToxN3B4fS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMTJweCAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byAxZnI7Y29sdW1uLWdhcDoxMnB4fS5zay1pbWd7Z3JpZC1yb3c6MSAvIHNwYW4gMzthc3BlY3QtcmF0aW86YXV0bztoZWlnaHQ6MTIwcHh9LnR3b3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5yb3csLnJvdy53aXRodGh1bWJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0b30ucm93IC50aHVtYntkaXNwbGF5Om5vbmV9LnJvdyAuYWN0aW9ue2dyaWQtY29sdW1uOjEgLyAtMTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnJvdyAuYWN0aW9uOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93IC5mbGFiZWx7ZGlzcGxheTpub25lfS5iYWNrYnRuOm5vdChbaGlkZGVuXSkrLmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdIC5mbGFiZWx7ZGlzcGxheTppbmxpbmV9LmZsb3cgbGkrbGk6YmVmb3Jle3dpZHRoOjEycHh9LmxlZ3N7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uY21we2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNjhweCw4NHB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDExOHB4LDFmcikpfS5nb3ttaW4taGVpZ2h0OjQ4cHh9LnJvb20tYnV5e2ZsZXgtd3JhcDp3cmFwfS5yb29tLWJ1eSAuYWN0aW9ue2ZsZXg6MSAxIDEwMCV9LnJvb20tYnV5IC5hY3Rpb24gLmdve2ZsZXg6MSAxIDB9LnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjc2cHggbWlubWF4KDAsMWZyKX0uZ28uc217bWluLWhlaWdodDo0MHB4fS5jaGlwLC5jaGlwLnBsYWNle21pbi1oZWlnaHQ6MzhweH0ubWVtYmVyY2hpcCwuaGVhZHRyaXB7aGVpZ2h0OjM2cHh9LnN0ZXAubGlnaHQgYnV0dG9uLC5zdGVwIGJ1dHRvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4fX0jY29udGVudC5lbnRlcj4qe2FuaW1hdGlvbjplbnRlciAuMjhzIHZhcigtLWVhc2UpIGJvdGh9I2NvbnRlbnQuZW50ZXI+Om50aC1jaGlsZCgyKXthbmltYXRpb24tZGVsYXk6LjAzc30jY29udGVudC5lbnRlcj46bnRoLWNoaWxkKDMpe2FuaW1hdGlvbi1kZWxheTouMDZzfSNjb250ZW50LmVudGVyPjpudGgtY2hpbGQobis0KXthbmltYXRpb24tZGVsYXk6LjA5c31Aa2V5ZnJhbWVzIGVudGVyezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg2cHgpfX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2UpeyosKjpiZWZvcmUsKjphZnRlcnthbmltYXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0uY2FyZC5idXN5IC5idXN5YmFyOmJlZm9yZXt3aWR0aDoxMDAlO3RyYW5zZm9ybTpub25lO29wYWNpdHk6LjZ9LnNre2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX19LmJvb2tlZC1tYXJrLnBheXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5wYXlib3h7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweDtwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ucGF5LWFtb3VudHtmb250LXNpemU6MzBweDtmb250LXdlaWdodDo3MjA7bGluZS1oZWlnaHQ6MS4xO2xldHRlci1zcGFjaW5nOi0uMDFlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7Y29sb3I6dmFyKC0tYy1pbmspfS5wYXktYnl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjV9LnBheS1ieSAuY291bnRkb3due2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30udW5wYWlkLnBhaWR7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCl9LnVucGFpZC5wYWlkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LnVucGFpZC5wYWlkIGJ7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmNhbC1ncmlke3Jvdy1nYXA6NHB4fS5jZHtoZWlnaHQ6NTBweH0uY2Q+c3BhbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxcHg7d2lkdGg6Y2FsYygxMDAlIC0gNHB4KTttYXgtd2lkdGg6NjRweDtoZWlnaHQ6MTAwJTttYXJnaW46MCBhdXRvO2JvcmRlci1yYWRpdXM6MTBweH0uY2Qtbntmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuMX0uY2QtcHtwb3NpdGlvbjpzdGF0aWM7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY2QubG93ZXN0IC5jZC1we2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0Ojc1MH0uY2QudG9kYXk+c3BhbjphZnRlcntkaXNwbGF5Om5vbmV9LmNkLnRvZGF5IC5jZC1ue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgMnB4O3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHh9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZSwuY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2luc2V0OjB9LmNkLmluLmhhcy1vdXQ6YmVmb3Jle2xlZnQ6NTAlfS5jZC5vdXQ6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QuaW4+c3BhbiwuY2Qub3V0PnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNkLmluIC5jZC1wLC5jZC5vdXQgLmNkLXB7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uY2Q6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjFweH0uY2QuaW46Zm9jdXMtdmlzaWJsZT5zcGFuLC5jZC5vdXQ6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmUtY29sb3I6dmFyKC0tYy1pbmspfS5jYWwtbGVnZW5ke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDttaW4td2lkdGg6MH0uY2FsLWxlZ2VuZCBzbWFsbHtmb250LXNpemU6MTEuNXB4O2xpbmUtaGVpZ2h0OjEuNDtjb2xvcjp2YXIoLS1jLWluay0zKX0uZmxleC1kYXRlc3tzY3JvbGwtc25hcC10eXBlOnggbWFuZGF0b3J5O3Njcm9sbC1wYWRkaW5nLWlubGluZToycHg7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4LCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzIC5mZHtzY3JvbGwtc25hcC1hbGlnbjpzdGFydH0uZmxleC1kYXRlcy5hdC1zdGFydHttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI4cHgpLHRyYW5zcGFyZW50KX0uZmxleC1kYXRlcy5hdC1lbmR7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4KX0uZmxleC1kYXRlcy5hdC1zdGFydC5hdC1lbmR7bWFzay1pbWFnZTpub25lfS5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXSwuZm9ybSBpbnB1dFthcmlhLWludmFsaWQ9dHJ1ZV06Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWMtZXJyb3IpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtZXJyb3Itc29mdCl9LmZvcm0tZXJye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjQ1fS5mb3JtLWVyciAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O21hcmdpbi10b3A6MXB4fS5zdGF0ZSAuZm9vdD4uZ297d2hpdGUtc3BhY2U6bm93cmFwfS5zdGF0ZSAubGlua3N7YWxpZ24tc2VsZjpzdHJldGNoO21hcmdpbi10b3A6NnB4O3RleHQtYWxpZ246c3RhcnR9LmxpbmstZ297ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250LXdlaWdodDo2NTB9LmxpbmstZ28gLmljb3tjb2xvcjppbmhlcml0fUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpey5zdGF0ZSAuZm9vdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24tc2VsZjpzdHJldGNofS5zdGF0ZSAuZm9vdD4uZ297d2lkdGg6MTAwJX19LmhlYWQgLmJyYW5ke21heC1oZWlnaHQ6MzhweDtwYWRkaW5nOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7cGFkZGluZzo0cHggOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2RmZTVlZTtmaWx0ZXI6YnJpZ2h0bmVzcyguOSl9LmJhbmQgLndoZW4tbntsaW5lLWhlaWdodDoxLjI1O3RleHQtYWxpZ246Y2VudGVyfS5iYW5kIC53aGVuLW4gc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtvcGFjaXR5Oi44NX0uaGVhZCAudGl0bGU6ZW1wdHl7ZGlzcGxheTpub25lfS5zay1sb2dve29yZGVyOi0xfS5za2Vse2dhcDoxMnB4fS5zay1zdWJ7d2lkdGg6NTglO2hlaWdodDoxNHB4O21hcmdpbi10b3A6LTZweH0uc2stYmFye2hlaWdodDoxMThweH0uc2stY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4fS5zay1jaGlwe3dpZHRoOjE2OHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHh9LnNrLWNoaXAuc2hvcnR7d2lkdGg6MTA0cHh9LnNrLXNheXtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uc3RlcCBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouNDV9Lm5ie2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlO292ZXJmbG93LXdyYXA6YW55d2hlcmV9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmUsLmNvbmYudGlja2V0IC53aGVyZTphZnRlcntjbGlwLXBhdGg6bm9uZTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jLWxpbmUpO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jLWxpbmUpfS5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jLWxpbmUpO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWMtbGluZSl9LnF1aWV0LWVuZHttYXJnaW4tdG9wOjZweH0uc3RlcCBidXR0b24sLnN0ZXAubGlnaHQgYnV0dG9uLC5jYWwtbmF2IGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4fS5jYWwtZm9vdCAubGlua3l7bWluLWhlaWdodDo0MHB4O3BhZGRpbmc6MCA2cHg7bWFyZ2luOi04cHggLTZweH0udC1tZXRhOm5vdCg6aGFzKC5yYXRlKSk6aGFzKC50LXdoZXJlOmVtcHR5KXtkaXNwbGF5Om5vbmV9LnN0YXRlIC5saW5rLXJvd3t3aWR0aDoxMDAlfS5saW5rLXJvdz5zcGFuOmZpcnN0LWNoaWxke2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOnN0YXJ0fS5saW5rLWdve2ZsZXg6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNvbmYgLndoZW4gLm5ie2Rpc3BsYXk6YmxvY2t9LmNvbmYgLndoZW4gLm5iK3NwYW5bYXJpYS1oaWRkZW5de2Rpc3BsYXk6bm9uZX0uc2lte2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1pbmxpbmUtZW5kOjZweDtwYWRkaW5nOjFweCA2cHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6dmFyKC0tZi1zYW5zKTtmb250LXNpemU6LjVlbTtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjAyZW07bGluZS1oZWlnaHQ6MS41O3ZlcnRpY2FsLWFsaWduOi4zNWVtO29wYWNpdHk6Ljh9LnQtbmFtZSAuc2ltLC5jb25mIC53aGVyZSAuc2lte2ZvbnQtc2l6ZToxMC41cHg7dmVydGljYWwtYWxpZ246LjE1ZW19LnNpbS1ub3Rle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo3cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fS5zaW0tbm90ZSAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O21hcmdpbi10b3A6MnB4fS5yb29tLWxlYWR7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjR9LmxlYWQta3tkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MXB4O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06bGFuZyh6aCkgLmxlYWQta3tsZXR0ZXItc3BhY2luZzouMDJlbX0uaC1mcmVle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttYXJnaW4tdG9wOjZweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0uaC1mcmVlIC5pY297d2lkdGg6MTRweDtoZWlnaHQ6MTRweH06cm9vdHstLXItbGc6IDEycHh9OnJvb3QgLmgtbmFtZXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfTpyb290IC53diw6cm9vdCAudC1mcm9tLDpyb290IC5wLXRvdGFsLDpyb290IC5mZC1wcmljZSw6cm9vdCAuZmQtZG4sOnJvb3QgLmNkLXB7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zIGxpbmluZy1udW1zfTpyb290IC53dntmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX06cm9vdCAudGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAudGlsZXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6c3RyZXRjaDtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC50aWxlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3gtc2hhZG93Om5vbmU7dHJhbnNmb3JtOm5vbmV9OnJvb3QgLnRpbGUubG93ZXN0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgYXV0byAwIDA7d2lkdGg6M3B4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX06cm9vdCAudC1zaG90e2ZsZXg6MCAwIDEwNHB4O3dpZHRoOjEwNHB4O21pbi1oZWlnaHQ6MDthc3BlY3QtcmF0aW86MTttYXJnaW46MTRweCAwIDE0cHggMTJweDtib3JkZXItcmFkaXVzOjEwcHg7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fTpyb290IC50LWJyYW5ke2Rpc3BsYXk6bm9uZX06cm9vdCAudC1ib2R5e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dyaWQtdGVtcGxhdGUtYXJlYXM6Im5hbWUgZm9vdCIgIm1ldGEgZm9vdCIgInRhZ3MgZm9vdCI7YWxpZ24tY29udGVudDpzdGFydDtnYXA6NXB4IDE0cHg7cGFkZGluZzoxNHB4IDEycHggMTRweCAxNHB4fTpyb290IC50LW5hbWV7Z3JpZC1hcmVhOm5hbWU7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTcuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjI7bGV0dGVyLXNwYWNpbmc6LS4wMDVlbTstd2Via2l0LWxpbmUtY2xhbXA6MztsaW5lLWNsYW1wOjN9OnJvb3QgLnQtbWV0YXtncmlkLWFyZWE6bWV0YTtmbGV4LXdyYXA6d3JhcDtnYXA6MnB4IDEwcHh9OnJvb3QgLnQtbWV0YSAucmF0ZXttYXJnaW4taW5saW5lLXN0YXJ0OjB9OnJvb3QgLnQtd2hlcmV7d2hpdGUtc3BhY2U6bm9ybWFsO292ZXJmbG93OnZpc2libGV9OnJvb3QgLnQtdGFnc3tncmlkLWFyZWE6dGFnczttYXJnaW4tdG9wOjNweH06cm9vdCAudC1mb290e2dyaWQtYXJlYTpmb290O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDttYXJnaW46MDtwYWRkaW5nOjA7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZnJvbXtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo3NTB9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOjc2cHg7bWFyZ2luLXRvcDoycHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO2ZvbnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0OjEuMzt3aGl0ZS1zcGFjZTpub3JtYWx9OnJvb3QgLnQtZ297ZGlzcGxheTpub25lfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LXNob3R7ZmxleC1iYXNpczoxMzZweDt3aWR0aDoxMzZweH06cm9vdCAudC1uYW1le2ZvbnQtc2l6ZToxOXB4fTpyb290IC50LWZyb20gc21hbGwsOnJvb3QgLnQtc3Vie21heC13aWR0aDpub25lfX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaGVyb3tvcmRlcjotNjthc3BlY3QtcmF0aW86MTYgLyA5fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5zaW0tbm90ZXtvcmRlcjotNTttYXJnaW4tdG9wOi02cHh9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LnNlZ3tvcmRlcjotNH06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4ud2hlbmJhcntvcmRlcjotM306cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uc3RyaXAtaHtvcmRlcjotMjttYXJnaW4tYm90dG9tOi04cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3Q6bGFuZyh6aCkgLnN0cmlwLWh7bGV0dGVyLXNwYWNpbmc6LjAyZW19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmZsZXgtZGF0ZXN7b3JkZXI6LTE7Z3JpZC1hdXRvLWZsb3c6Y29sdW1uO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heChtYXgtY29udGVudCwxZnIpO2dhcDowO21hcmdpbjowO3BhZGRpbmc6MDtvdmVyZmxvdy14OmF1dG87Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxMnB4O21hc2staW1hZ2U6bm9uZX06cm9vdCAuZmR7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHg7cGFkZGluZzo5cHggNnB4IDExcHg7Ym9yZGVyOjA7Ym9yZGVyLWlubGluZS1lbmQ6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzpub25lO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMjVzIHZhcigtLWVhc2UpLGNvbG9yIC4yNXMgdmFyKC0tZWFzZSl9OnJvb3QgLmZkOmxhc3QtY2hpbGR7Ym9yZGVyLWlubGluZS1lbmQ6MH06cm9vdCAuZmQtZGF5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDowO2NvbG9yOnZhcigtLWMtaW5rLTMpfTpyb290IC5mZC1tb24sOnJvb3QgLmZkLWRvd3tmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3QgLmZkLW1vbntjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX06cm9vdCAuZmQtZG57Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2NTB9OnJvb3QgLmZkLm9ue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2JveC1zaGFkb3c6bm9uZX06cm9vdCAuZmQub24gLmZkLWRheSw6cm9vdCAuZmQub24gLmZkLWRuLDpyb290IC5mZC5vbiAuZmQtbW9uLDpyb290IC5mZC5vbiAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX06cm9vdCAuZmQubG93ZXN0Om5vdCgub24pe2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpfTpyb290IC5mZC5iZXN0IC5mZC1kYXk6YWZ0ZXJ7Y29udGVudDpub25lfTpyb290IC5mZC1sb3d7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC1zaXplOjkuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3QgLmZkLm9uIC5mZC1sb3d7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAuaGVyb3thc3BlY3QtcmF0aW86MjEgLyA5fX06cm9vdCAucm9vbXN7Z2FwOjA7Ym9yZGVyLXRvcDoxLjVweCBzb2xpZCB2YXIoLS1jLWluayl9OnJvb3QgLnJ0eXBlLDpyb290IC5yb29te2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9OnJvb3QgLnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IiAibWFpbiIgImJ1eSI7cGFkZGluZzoxNnB4IDB9OnJvb3QgLnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MTJweDtwYWRkaW5nOjE2cHggMCA4cHh9OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FsaWduLXNlbGY6c3RhcnQ7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzthc3BlY3QtcmF0aW86MTYgLyA5O2JvcmRlci1yYWRpdXM6MTBweH06cm9vdCAucm9vbS1uYW1le2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0Ojc1MH06cm9vdCAucnJhdGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtwYWRkaW5nOjEycHggMDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lKX06cm9vdCAucnJhdGUgLnJvb20tYnV5LDpyb290IC5yb29tIC5yb29tLWJ1eXtib3JkZXItdG9wOjA7cGFkZGluZy10b3A6MH06cm9vdCAucC10b3RhbHtmb250LXNpemU6MjBweH1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjQwcHggbWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJzaG90IGJ1eSI7Z2FwOjEwcHggMThweH06cm9vdCAucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjQwcHggbWlubWF4KDAsMWZyKTtnYXA6MThweH06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjQgLyAzfTpyb290IC5ycmF0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2FsaWduLWl0ZW1zOnN0YXJ0O2dhcDoxOHB4fTpyb290IC5ycmF0ZSAucm9vbS1idXl7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO3RleHQtYWxpZ246ZW5kfTpyb290IC5ycmF0ZSAucm9vbS1idXkgLnByaWNle2FsaWduLWl0ZW1zOmZsZXgtZW5kfX06cm9vdCAuZ297d2hpdGUtc3BhY2U6bm93cmFwfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7OnJvb3QgLnRpbGUsOnJvb3QgLmZkLDpyb290IC50LXNob3QgaW1ne3RyYW5zaXRpb246bm9uZX19LmxlYWQta3tkaXNwbGF5OmlubGluZTttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1NTA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5sZWFkLWs6YWZ0ZXJ7Y29udGVudDoiOiAifTpsYW5nKHpoKSAubGVhZC1rOmFmdGVye2NvbnRlbnQ6Iu+8miJ9QG1lZGlhKG1heC13aWR0aDo1MjBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjg4cHg7d2lkdGg6ODhweH06cm9vdCAudC1ib2R5e2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBuYW1lIiAibWV0YSBtZXRhIiAidGFncyBmb290IjthbGlnbi1pdGVtczplbmR9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTdweDstd2Via2l0LWxpbmUtY2xhbXA6dW5zZXQ7bGluZS1jbGFtcDpub25lO2Rpc3BsYXk6YmxvY2t9OnJvb3QgLnQtdGFnc3thbGlnbi1zZWxmOmVuZDttYXJnaW4tdG9wOjZweH06cm9vdCAudC10YWdzOmVtcHR5e2dyaWQtY29sdW1uOjEgLyAtMX19OnJvb3QgLmZke3BhZGRpbmc6OXB4IDNweCAxMXB4fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTEuNXB4O2xldHRlci1zcGFjaW5nOi0uMDJlbX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7cGFkZGluZzo1cHggOXB4O2JvcmRlci1yYWRpdXM6OXB4O2JhY2tncm91bmQ6I2QzZDllMztib3gtc2hhZG93Om5vbmU7ZmlsdGVyOmJyaWdodG5lc3MoLjgpfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZC5kYXJrLWFydHtwYWRkaW5nOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZTtmaWx0ZXI6bm9uZX0ud2hlbmJhciAud2hlbi1yb29tcy53aGVuLXBhcnR5LC5zZWFyY2ggLndoZW4tcm9vbXMud2hlbi1wYXJ0eXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtnYXA6MDtwYWRkaW5nOjB9LnBhcnR5LXRpbGV7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2NvbHVtbi1nYXA6OHB4O3Jvdy1nYXA6MnB4O3dpZHRoOjEwMCU7bWluLWhlaWdodDo1MnB4O3BhZGRpbmc6OHB4IDEycHggOHB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9LnBhcnR5LXRpbGUgLndse2dyaWQtY29sdW1uOjF9LnBhcnR5LXZ7Z3JpZC1jb2x1bW46MTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30ucGFydHktdGlsZSAuaWNve2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MSAvIHNwYW4gMjtjb2xvcjp2YXIoLS1jLWluay0zKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgdmFyKC0tZWFzZSl9LnBhcnR5LXRpbGVbYXJpYS1leHBhbmRlZD10cnVlXSAuaWNve3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5wYXJ0eS10aWxlOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6LTJweDtib3JkZXItcmFkaXVzOjEycHh9LnBhcnR5LXBhbmVse2Rpc3BsYXk6Z3JpZDtnYXA6MnB4O3BhZGRpbmc6NHB4IDEwcHggOHB4IDE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0ucGFydHktcGFuZWxbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnBhcnR5LXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjAwfS5wYXJ0eS1yb3cgLnN0ZXAubGlnaHR7Ym9yZGVyOjA7cGFkZGluZzowfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnBhcnR5LXRpbGUgLmljb3t0cmFuc2l0aW9uOm5vbmV9fS5wYXJ0eS12e3doaXRlLXNwYWNlOm5vd3JhcH06cm9vdCAuZmxleC1kYXRlczpub3QoLmF0LWVuZCl7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzAwMCBjYWxjKDEwMCUgLSAyNHB4KSx0cmFuc3BhcmVudCl9OnJvb3QgLmZsZXgtZGF0ZXM6bm90KC5hdC1zdGFydCk6bm90KC5hdC1lbmQpe21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMwMDAgMTJweCwjMDAwIGNhbGMoMTAwJSAtIDI0cHgpLHRyYW5zcGFyZW50KX06cm9vdCAuZmxleC1kYXRlcy5hdC1lbmQ6bm90KC5hdC1zdGFydCl7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4KX06cm9vdCAuZmR7cGFkZGluZzo5cHggMnB4IDExcHh9OnJvb3QgLmZkLWxvd3tmb250LXNpemU6OXB4O2xldHRlci1zcGFjaW5nOjB9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMXB4fS5oLXdoZXJlIC5zaW17Zm9udC1zaXplOjEwcHg7dmVydGljYWwtYWxpZ246LjFlbX0uY29uZiAuYmFuZCAud3Z7Zm9udC1zaXplOjE3cHh9QG1lZGlhKG1heC13aWR0aDo0MjBweCl7LmNvbmYgLmJhbmQgLnd2IHNtYWxse2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjFweCAwIDB9LmNvbmYgLmJhbmQtZHtwYWRkaW5nOjlweCAxMHB4fX0ucGF5LWZvcntkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LnBheS1mb3IgLndoZXJle2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NjAwfS5wYXktZm9yIC5ub3Rle2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fXAucXVpZXQtZW5ke21hcmdpbjo2cHggMCAwO3RleHQtYWxpZ246Y2VudGVyfS5saW5rcyAubGluay1yb3d7Ym9yZGVyLXJhZGl1czowfSNjb250ZW50Omhhcygud2hlbmJhciAuY2FsKT4uc3RyaXAtaCwjY29udGVudDpoYXMoLndoZW5iYXIgLmNhbCk+LmZsZXgtZGF0ZXN7ZGlzcGxheTpub25lfS5jZC5iZWZvcmU6bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tYy1pbmspfS5jZC5pbjpmb2N1cy12aXNpYmxlPnNwYW4sLmNkLm91dDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZS1jb2xvcjp2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9LmNhbC1mb290IC5nb3ttaW4taGVpZ2h0OjM2cHh9OnJvb3QgLnQtZm9vdHtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NnB4fTpyb290IC50LWZvb3QgLnQtZnJvbXt0ZXh0LWFsaWduOmVuZH06cm9vdCAudC1nb3tkaXNwbGF5OmdyaWQ7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDttYXJnaW4tdG9wOjJweDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTMpfTpyb290IC50aWxlOmhvdmVyIC50LWdve2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjE1MnB4O3dpZHRoOjE1MnB4O2FzcGVjdC1yYXRpbzo0IC8gM319OnJvb3QgLnQtZnJvbS50LW5vbmV7bWF4LXdpZHRoOjEwOHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOjEwNHB4fS5wYXJ0eS1yb3cgLnN0ZXAgYnV0dG9uLC53aGVuLXJvb21zIC5zdGVwIGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5wYXJ0eS1yb3cgLnN0ZXAgYnV0dG9uOmRpc2FibGVkLC53aGVuLXJvb21zIC5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5zZWctYlthcmlhLXByZXNzZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxLjVweCB2YXIoLS1jLXByaW1hcnkpfS5yb29tLWhvdXJze2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDRweCAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byAxZnI7Y29sdW1uLWdhcDoxNHB4fS5zay1pbWd7Z3JpZC1yb3c6MSAvIHNwYW4gMzthc3BlY3QtcmF0aW86YXV0bztoZWlnaHQ6MTA0cHh9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE1MnB4IDFmcn0uc2staW1ne2hlaWdodDoxMTRweH19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmhlcm97YXNwZWN0LXJhdGlvOjIgLyAxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve2FzcGVjdC1yYXRpbzozIC8gMX19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmgtc3VtOm5vdCguc2ltLW5vdGUpLDpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5hbWVue29yZGVyOjF9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmdvb2QtdG8ta25vd3tvcmRlcjoyfTpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86MiAvIDF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzo0IC8gM319OnJvb3QgLnJvb20uaG91cmx5e2dyaWQtdGVtcGxhdGUtY29sdW1uczo5NnB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAiYnV5IGJ1eSJ9OnJvb3QgLnJvb20uaG91cmx5IC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2NvbHVtbi1nYXA6MjJweH06cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6MTA4cHg7d2lkdGg6MTA4cHg7YXNwZWN0LXJhdGlvOjF9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTdweH0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwOHB4IDFmcn0uc2staW1ne2hlaWdodDoxMDhweH19OnJvb3QgLnQtc3ViIC5uYntkaXNwbGF5OmJsb2NrfTpyb290IC50LXN1YiAudC1zZXB7ZGlzcGxheTpub25lfS5jaGlwOm5vdCgudG9vbCk6bm90KC5uZXh0KXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfWJ1dHRvbi5jaGlwOm5vdCgudG9vbCk6bm90KC5uZXh0KTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmNoaXBbYXJpYS1wcmVzc2VkPXRydWVdOm5vdCgudG9vbCl7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnN0ZXB7Z2FwOjRweDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uc3RlcCBidXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3RlcCBidXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC5yb3dze2dhcDowO2JvcmRlci10b3A6MS41cHggc29saWQgdmFyKC0tYy1pbmspfTpyb290IC5yb3dzPi5yb3d7cGFkZGluZzoxNHB4IDA7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ucGF5LWNoZWNre2p1c3RpZnktc2VsZjpjZW50ZXI7bWluLWhlaWdodDozNnB4O2ZvbnQtc2l6ZToxM3B4fS5zdGF0ZS1ke3RleHQtd3JhcDpwcmV0dHl9Lmhlcm8td2hlcmUgLnJhdGUgc3Zne2NvbG9yOiNmZmZ9LnN0cmlwLWtleXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6OHB4O2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LnN0cmlwLWtleTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLXN1Y2Nlc3MpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LWJvZHl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztncmlkLXRlbXBsYXRlLWFyZWFzOiJuYW1lIG5hbWUiICJtZXRhIG1ldGEiICJ0YWdzIGZvb3QiO2FsaWduLWl0ZW1zOmVuZH06cm9vdCAudC1uYW1le2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC1saW5lLWNsYW1wOnVuc2V0O2xpbmUtY2xhbXA6bm9uZX06cm9vdCAudC10YWdzOmVtcHR5e2dyaWQtY29sdW1uOjEgLyAtMX19OnJvb3QgLnQtZm9vdHtncmlkLWFyZWE6Zm9vdDtqdXN0aWZ5LXNlbGY6ZW5kfTpyb290IC50LXN1Ynt0ZXh0LWFsaWduOmVuZH1AbWVkaWEobWF4LXdpZHRoOjQyMHB4KXs6cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjEwLjVweDtsZXR0ZXItc3BhY2luZzotLjAzZW19OnJvb3QgLmZkLWRue2ZvbnQtc2l6ZToxOHB4fX0ucGFydHktdnt3aGl0ZS1zcGFjZTpub3JtYWx9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmFtZW57b3JkZXI6LTV9LnJldmlldy1oIC5oLXdoZXJle21hcmdpbi10b3A6MnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjYwMH0uYmFuZC1kOmxhc3QtY2hpbGR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt0ZXh0LWFsaWduOnN0YXJ0fS5yb29tLWhvdXJze2NvbG9yOnZhcigtLWMtaW5rLTIpfS5yb3cgLmFjdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnJvdyAuYWN0aW9uIC53bHttYXJnaW46MH06cm9vdHstLWMtYWNjZW50OiB2YXIoLS1jLWluayl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jYXJke2JvcmRlci10b3A6M3B4IHNvbGlkIHZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLnRpbGVzLDpyb290W2RhdGEtYWNjZW50XSAucm9vbXMsOnJvb3RbZGF0YS1hY2NlbnRdIC5yb3dze2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuaGVyby10eHQ6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDoyOHB4O2hlaWdodDoycHg7bWFyZ2luLWJvdHRvbToycHg7YmFja2dyb3VuZDp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5wYXktZm9yIC53aGVyZTpiZWZvcmUsOnJvb3RbZGF0YS1hY2NlbnRdIC5yZXZpZXctaCAuaC13aGVyZTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDttYXJnaW4tYm90dG9tOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmNvbmYgLndoZXJle2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuZmQub257Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCB2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jZC5pbj5zcGFuLDpyb290W2RhdGEtYWNjZW50XSAuY2Qub3V0PnNwYW57Ym94LXNoYWRvdzowIDAgMCAycHggdmFyKC0tYy1iZyksMCAwIDAgMy41cHggdmFyKC0tYy1hY2NlbnQpfS5ib29raW5nLXJvd3tjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uYm9va2luZy1yb3c6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfTpyb290IC5yb3dzPi5ib29raW5nLXJvd3twYWRkaW5nLWlubGluZTo4cHg7bWFyZ2luLWlubGluZTotOHB4O2JvcmRlci1yYWRpdXM6MTBweH0ub3Blbi1nb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTMpO2N1cnNvcjpwb2ludGVyfS5vcGVuLWdvOmhvdmVyLC5ib29raW5nLXJvdzpob3ZlciAub3Blbi1nb3tjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0ub3Blbi1nbzpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjFweH0uYm9va2VkLndhaXRpbmcgLmJvb2tlZC1tYXJre2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5ib29rZWQuZW5kZWQgLmJvb2tlZC1tYXJre2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0zKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucnR5cGV7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMDBweCBtaW5tYXgoMCwxZnIpO2NvbHVtbi1nYXA6MjBweDtwYWRkaW5nOjE2cHggMCA2cHh9OnJvb3QgLnJ0eXBlLWhlYWR7ZGlzcGxheTpjb250ZW50c306cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2dyaWQtY29sdW1uOjE7Z3JpZC1yb3c6MSAvIHNwYW4gMjthc3BlY3QtcmF0aW86NCAvIDN9OnJvb3QgLnJ0eXBlIC5yb29tLW1haW57Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoxO3BhZGRpbmctYm90dG9tOjRweH06cm9vdCAucnR5cGUgLnJhdGVze2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MjthbGlnbi1zZWxmOnN0YXJ0fTpyb290IC5ycmF0ZXtwYWRkaW5nOjEwcHggMDtnYXA6MTRweH06cm9vdCAucnJhdGUgLnJhdGUtbWFpbntnYXA6NHB4fTpyb290IC5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMDBweCBtaW5tYXgoMCwxZnIpO2dhcDo4cHggMjBweDtwYWRkaW5nOjE2cHggMH06cm9vdCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzo0IC8gM306cm9vdCAuZmxleC1kYXRlc3t3aWR0aDptYXgtY29udGVudDttYXgtd2lkdGg6MTAwJTtncmlkLWF1dG8tY29sdW1uczptaW5tYXgoODRweCwxMDRweCl9OnJvb3QgLmZke3BhZGRpbmc6OHB4IDZweCAxMHB4fX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucnJhdGUgLnJvb20tYnV5e2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE2cHh9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eSAucHJpY2V7YWxpZ24taXRlbXM6ZmxleC1lbmQ7dGV4dC1hbGlnbjplbmR9fTpyb290W2RhdGEtYWNjZW50XXstLWMtYWNjZW50OiB2YXIoLS1hY2NlbnQtcmF3KX06cm9vdFtkYXRhLXRoZW1lPWRhcmtdW2RhdGEtYWNjZW50LWRpbV17LS1jLWFjY2VudDogdmFyKC0tYy1saW5lLTIpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5mbGV4LWRhdGVze3dpZHRoOm1pbigxMDAlLGNhbGModmFyKC0tbiwgNykgKiAxMThweCkpO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heCgwLDFmcil9OnJvb3QgLmZke2dhcDozcHg7cGFkZGluZzoxMnB4IDhweCAxNHB4fTpyb290IC5mZC1kbntmb250LXNpemU6MjJweH06cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzowfX06cm9vdHstLWMtZm9jdXM6IHZhcigtLWMtcHJpbWFyeSl9OnJvb3RbZGF0YS1icmFuZF06bm90KFtkYXRhLXRoZW1lPWRhcmtdKXstLWMtcHJpbWFyeTogdmFyKC0tYnJhbmQpOy0tYy1wcmltYXJ5LWhvdmVyOiB2YXIoLS1icmFuZC1ob3Zlcik7LS1jLXByaW1hcnktcHJlc3M6IHZhcigtLWJyYW5kLXByZXNzKTstLWMtb24tcHJpbWFyeTogdmFyKC0tYnJhbmQtb24pOy0tYy1wcmltYXJ5LWluazogdmFyKC0tYnJhbmQtaW5rKTstLWMtcHJpbWFyeS1zb2Z0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYnJhbmQpIDEyJSwgI2ZmZmZmZik7LS1jLXByaW1hcnktc29mdC0yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYnJhbmQpIDIyJSwgI2ZmZmZmZik7LS1jLWZvY3VzOiB2YXIoLS1icmFuZC1mb2N1cyl9W2RhdGEtdGhlbWU9ZGFya106cm9vdFtkYXRhLWJyYW5kXTpub3QoW2RhdGEtYnJhbmQtZGFyay1kaW1dKXstLWMtcHJpbWFyeTogdmFyKC0tYnJhbmQpOy0tYy1wcmltYXJ5LWhvdmVyOiB2YXIoLS1icmFuZC1ob3Zlcik7LS1jLXByaW1hcnktcHJlc3M6IHZhcigtLWJyYW5kLXByZXNzKTstLWMtb24tcHJpbWFyeTogdmFyKC0tYnJhbmQtb24pOy0tYy1wcmltYXJ5LWluazogdmFyKC0tYnJhbmQtaW5rLWRhcmspOy0tYy1wcmltYXJ5LXNvZnQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1icmFuZCkgMTYlLCAjMTExNzIzKTstLWMtcHJpbWFyeS1zb2Z0LTI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1icmFuZCkgMjYlLCAjMTExNzIzKTstLWMtZm9jdXM6IHZhcigtLWJyYW5kLWZvY3VzLWRhcmspfS5iYWRnZS53YXJue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9LmJhZGdlLndhcm4gLmljb3t3aWR0aDoxMnB4O2hlaWdodDoxMnB4O2ZsZXg6bm9uZX0uaG91ci1ub3Rle2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweCAxMHB4O3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTJweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NTB9LmhvdXItbm90ZSAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5ob3VyLW5vdGUgc3BhbntmbGV4OjEgMSAyMDBweH0uaG91ci1ub3RlIC5saW5reXttaW4taGVpZ2h0OjMycHh9OnJvb3RbZGF0YS1mb250LW51bV0gOmlzKC50LWZyb20sLnN1bSwubW9uZXktb3V0LC5mZC1wcmljZSwuY29sLXByaWNlLC5wcy1wcmljZSwubiwud3YsLmNkLXAsLnAtdG90YWwsLmZkLWRuLC5wYXktYW1vdW50LC5wcmljZS1pbil7Zm9udC1mYW1pbHk6dmFyKC0tZi1udW0pfS5mYWlsZWR7bWFyZ2luLXRvcDoxOHB4fS5mYWlsZWQgLmZhaWx7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7cGFkZGluZzoxMnB4IDE0cHg7bWFyZ2luLXRvcDoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYmFkLWJnKX0uZmFpbGVkIC5mYWlsLWh7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Y29sb3I6dmFyKC0tYmFkKX0uZmFpbGVkIC5mYWlsLWggLndoZXJle2NvbG9yOnZhcigtLWZnKX0uZmFpbGVkIC5mYWlsLXdoeXttYXJnaW46OHB4IDAgMDtjb2xvcjp2YXIoLS1mZyl9LmZhaWxlZCAuZmFpbC1hbHRze21hcmdpbi10b3A6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWJnKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7cGFkZGluZzo4cHggMTBweH0uZmFpbGVkIC5hbHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nOjhweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpfS5mYWlsZWQgLmFsdDpmaXJzdC1vZi10eXBle2JvcmRlci10b3A6MH0uZmFpbGVkIC5hbHQtdHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDowfS5mYWlsZWQgLmFsdC10IHNtYWxse2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZmFpbGVkIC5mYWlsLWZvb3R7ZGlzcGxheTpmbGV4O2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tdG9wOjEwcHh9PC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgPCEtLSBBIGNhbGwgb3V0IHRvIHRoZSBzZXJ2ZXI6IGEgbGluZSBhbG9uZyB0aGUgdG9wIC0gc2VlIGBzZXRCdXN5YC4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImJ1c3liYXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iaGVhZCI+CiAgICAgICAgPCEtLSBUaGUgZ3JvdXAncyB3b3JkbWFyayBhcnJpdmVzIFdJVEggVEhFIERBVEEgYXMgYGxvZ29VcmxgLiBOb3RoaW5nIGlzCiAgICAgICAgICAgICBiYWtlZCBpbiBoZXJlOiBhIGxvZ28gY29tcGlsZWQgaW50byB0aGUgY2FyZCBpcyB0aGUgZmlyc3QgYnJhbmQncywKICAgICAgICAgICAgIGFuZCBldmVyeSBob3RlbCBncm91cCBhZnRlciB0aGVtIHdvdWxkIHdlYXIgaXQuIFRoZSBicmFuZCBpcyBhbHNvCiAgICAgICAgICAgICB0aGUgd2F5IGhvbWUsIG9uIGV2ZXJ5IHZpZXcgKHJvYmluLCAyMDI2LTA5LTE4KS4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaG9tZSIgaWQ9ImhvbWUiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiIGFyaWEtbGFiZWw9IkJhY2sgdG8gdGhlIGhvdGVscyI+CiAgICAgICAgICA8aW1nIGNsYXNzPSJicmFuZCIgaWQ9ImJyYW5kIiBhbHQ9IiIgaGlkZGVuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlIiBpZD0idGl0bGUiPjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzayBzay1sb2dvIiBpZD0ic2tsb2dvIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgogICAgICAgIDwvYnV0dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdWIiIGlkPSJzdWIiPjwvc3Bhbj4KICAgICAgICA8IS0tIFRoZSB0aWVyLCBvciB0aGUgd2F5IGluLiBBIG1lbWJlciByYXRlIGlzIGEgZmFjdCBhYm91dCBldmVyeSBwcmljZQogICAgICAgICAgICAgb24gdGhlIGNhcmQsIHNvIGl0IGJlbG9uZ3MgaW4gdGhlIGhlYWRlciByYXRoZXIgdGhhbiBvbiBvbmUgdmlldy4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibWVtYmVyY2hpcCIgaWQ9Im1lbWJlcmNoaXAiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImFzay1zaWduLWluIiBoaWRkZW4+PC9idXR0b24+CiAgICAgICAgPCEtLSBUaGUgdHJpcCwgZnJvbSB0aGUgdG9wOiBhIGZvb3Rlci1vbmx5IGNhcnQgbWVhbnMgc2Nyb2xsaW5nIHBhc3QKICAgICAgICAgICAgIHR3ZW50eSB0aWxlcyB0byByZWFjaCBpdCAodGhlIHNob3BwaW5nIGNhcmQsIDIwMjYtMDktMTcpLiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJoZWFkdHJpcCIgaWQ9ImhlYWR0cmlwIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJ0cmlwIiBoaWRkZW4gYXJpYS1sYWJlbD0iVmlldyB0aGUgdHJpcCI+CiAgICAgICAgICA8IS0tIEEgc3VpdGNhc2U6IGEgdHJpcCBvZiBzdGF5cywgbm90IGEgc2hvcHBpbmcgYmFnLiAtLT4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIgogICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICA8cmVjdCB4PSIzLjUiIHk9IjciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMi41IiByeD0iMi41IiAvPgogICAgICAgICAgICA8cGF0aCBkPSJNOSA3VjUuNUExLjUgMS41IDAgMCAxIDEwLjUgNGgzQTEuNSAxLjUgMCAwIDEgMTUgNS41VjdNMy41IDEyLjVoMTciIC8+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICAgIDxzcGFuIGlkPSJoZWFkdHJpcHdvcmQiPlRyaXA8L3NwYW4+PHNwYW4gY2xhc3M9ImhlYWR0cmlwLW4iIGlkPSJoZWFkdHJpcG4iPjA8L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8IS0tIEV2ZXJ5IHJhdGUgb24gYSBkZW1vbnN0cmF0aW9uIHdhcyBtYWRlIHVwOiBzYWlkIG9uY2UsIGhlcmUsIG9uIGV2ZXJ5CiAgICAgICAgICAgdmlldyAtIHNlZSBcYHBhaW50RGVtb1xgLiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZGVtb3N0cmlwIiBpZD0iZGVtb3N0cmlwIiByb2xlPSJub3RlIiBoaWRkZW4+PGIgaWQ9ImRlbW9sYWJlbCI+RGVtbzwvYj48c3BhbiBpZD0iZGVtb3RleHQiPjwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic3ViaGVhZCIgaWQ9InN1YmhlYWQiIGhpZGRlbj4KICAgICAgICA8IS0tIE9uZSBzdGVwIGJhY2sgSU5TSURFIHRoZSBjYXJkIC0gdGhlIHRocmVlIGhvdGVscyB0aGV5IHdlcmUgY29tcGFyaW5nCiAgICAgICAgICAgICB3aGVuIHRoZXkgdGFwcGVkIG9uZSAocm9iaW4sIDIwMjYtMDktMjEpLiBUaGUgYnJhbmQgYWJvdmUgZ29lcyBob21lLAogICAgICAgICAgICAgd2hpY2ggaXMgYSBkaWZmZXJlbnQgYW5zd2VyLiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJiYWNrYnRuIiBpZD0iYmFja2J0biIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYmFjayIgaGlkZGVuPjwvYnV0dG9uPgogICAgICAgIDwhLS0gQm9va2luZyBhIHJvb20gaXMgdGhyZWUgc3RlcHMsIGFuZCB0aGUgY2FyZCBzYXlzIHdoaWNoIG9uZSB0aGlzIGlzLiAtLT4KICAgICAgICA8b2wgY2xhc3M9ImZsb3ciIGlkPSJmbG93IiBhcmlhLWxhYmVsPSJCb29raW5nIHN0ZXBzIiBoaWRkZW4+CiAgICAgICAgICA8bGkgZGF0YS1zdGVwPSIxIj48c3BhbiBjbGFzcz0iZmRvdCI+MTwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhYmVsIiBpZD0iZmxvdzEiPkhvdGVsPC9zcGFuPjwvbGk+CiAgICAgICAgICA8bGkgZGF0YS1zdGVwPSIyIj48c3BhbiBjbGFzcz0iZmRvdCI+Mjwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhYmVsIiBpZD0iZmxvdzIiPlJvb208L3NwYW4+PC9saT4KICAgICAgICAgIDxsaSBkYXRhLXN0ZXA9IjMiPjxzcGFuIGNsYXNzPSJmZG90Ij4zPC9zcGFuPjxzcGFuIGNsYXNzPSJmbGFiZWwiIGlkPSJmbG93MyI+Qm9vazwvc3Bhbj48L2xpPgogICAgICAgIDwvb2w+CiAgICAgIDwvZGl2PgogICAgICA8IS0tIEJlZm9yZSB0aGUgZmlyc3QgYW5zd2VyOiB0aGUgc2hhcGVzIG9mIHdoYXQgaXMgY29taW5nLCBub3QgYSB3b3JkLiAtLT4KICAgICAgPGRpdiBpZD0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2tlbCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxhYmVsPSJMb2FkaW5nIj4KICAgICAgICAgIDwhLS0gVGhlIHNoYXBlcyBvZiB0aGUgbGlzdCB0aGF0IGlzIGNvbWluZywgd2hlcmUgdGhleSB3aWxsIGJlOiBhCiAgICAgICAgICAgICAgIHRpdGxlLCBpdHMgbGluZSwgdGhlIGRhdGVzLCB0aGUgc29ydCBhbmQgZmlsdGVycywgdGhlIHRpbGVzLiAtLT4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXNheSI+RmluZGluZyBob3RlbHPigKY8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrIHNrLWxpbmUgc2stc3ViIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzay1jaGlwcyI+PGRpdiBjbGFzcz0ic2sgc2stY2hpcCI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stY2hpcCBzaG9ydCI+PC9kaXY+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzay10aWxlcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXRpbGUiPjxkaXYgY2xhc3M9InNrIHNrLWltZyI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSBzaG9ydCI+PC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXRpbGUiPjxkaXYgY2xhc3M9InNrIHNrLWltZyI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSBzaG9ydCI+PC9kaXY+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K', 'base64').toString('utf8');
|
|
5
|
+
export const HOTEL_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgPHRpdGxlPkhvdGVsczwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+Y29uc3QgV2c9KGZ1bmN0aW9uKCl7Y29uc3QgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtyZXR1cm4gdCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCJ9KSgpLFZnPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSx6dT17fSxKZz1mdW5jdGlvbih0LG4sbyl7bGV0IHM9UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IGk9ZnVuY3Rpb24ocCl7cmV0dXJuIFByb21pc2UuYWxsKHAubWFwKGg9PlByb21pc2UucmVzb2x2ZShoKS50aGVuKGY9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmZ9KSxmPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpmfSkpKSl9O2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSx1PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLGQ9dT8ubm9uY2V8fHU/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtzPWkobi5tYXAocD0+e2lmKHA9VmcocCxvKSxwIGluIHp1KXJldHVybjt6dVtwXT0hMDtjb25zdCBoPXAuZW5kc1dpdGgoIi5jc3MiKSxmPWg/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgej1hLmxlbmd0aC0xO3o+PTA7ei0tKXtjb25zdCBBPWFbel07aWYoQS5ocmVmPT09cCYmKCFofHxBLnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke3B9Il0ke2Z9YCkpcmV0dXJuO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGsucmVsPWg/InN0eWxlc2hlZXQiOldnLGh8fChrLmFzPSJzY3JpcHQiKSxrLmNyb3NzT3JpZ2luPSIiLGsuaHJlZj1wLGQmJmsuc2V0QXR0cmlidXRlKCJub25jZSIsZCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrKSxoKXJldHVybiBuZXcgUHJvbWlzZSgoeixBKT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIseiksay5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PkEobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7cH1gKSkpfSl9KSl9ZnVuY3Rpb24gcihpKXtjb25zdCBhPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoYS5wYXlsb2FkPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksIWEuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBpfXJldHVybiBzLnRoZW4oaT0+e2Zvcihjb25zdCBhIG9mIGl8fFtdKWEuc3RhdHVzPT09InJlamVjdGVkIiYmcihhLnJlYXNvbik7cmV0dXJuIHQoKS5jYXRjaChyKX0pfTtmdW5jdGlvbiBLZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBHZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBQcygpe3JldHVybiBlPT5lfWZ1bmN0aW9uIFlnKGUpe31mdW5jdGlvbiBRZyhlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIFhnKGUpe31mdW5jdGlvbiBoaShlKXtjb25zdCB0PU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW28sc10pPT50LmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sc10pPT5zKX1mdW5jdGlvbiBtaShlLHQ9InwiKXtyZXR1cm4gZS5tYXAobj0+RmkobikpLmpvaW4odCl9ZnVuY3Rpb24gcHMoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKTp0fWNsYXNzIGVie2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX2dldHRlcjtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMuX3ZhbHVlPXQoKSx0aGlzLl9nZXR0ZXI9dm9pZCAwKSx0aGlzLl92YWx1ZX19ZnVuY3Rpb24gRm4oZSl7cmV0dXJuIG5ldyBlYihlKX1mdW5jdGlvbiBEaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBsdChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxuPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsbil9ZnVuY3Rpb24geGQoZSx0KXtjb25zdCBuPWUvdCxvPU1hdGgucm91bmQobikscz00Kk51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKG4pLDEpO3JldHVybiBNYXRoLmFicyhuLW8pPHM/MDpuLW99Y29uc3QgeHU9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gSWQoZSx0LG4pe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2lmKG8hPT14dSlyZXR1cm4gbz09PXZvaWQgMCYmKG89eHUsbz1uKCkpLG99LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpzfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIHRiKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9ZnVuY3Rpb24gUnQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBFcyhlKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwic2hhcGUiKTtyZXR1cm4gdD8uZ2V0P3QuZ2V0LnJhdzp0Py52YWx1ZX1mdW5jdGlvbiBZZShlKXtyZXR1cm4gRXMoZS5fem9kLmRlZik/P2UuX3pvZC5kZWYuc2hhcGV9ZnVuY3Rpb24gQWQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2NvbnN0IG89bigpO3JldHVybiBSdCh0aGlzLHQsbyksb30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBDZChlLHQsbil7dCBpbiBlP1J0KGUsdCxuKTplW3RdPW59ZnVuY3Rpb24gd3QoZSx0LG4sbyl7Y29uc3Qgcz1ZZSh0KTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKTtpLmVudW1lcmFibGUmJihpLmdldD9BZChlLHIsKCk9Pntjb25zdCBhPXQuX3pvZC5kZWYuc2hhcGVbcl07cmV0dXJuIG8/byhhLHIpOmF9KTpDZChlLHIsbz9vKGkudmFsdWUscik6aS52YWx1ZSkpfX1mdW5jdGlvbiBuYihlLHQpe2Zvcihjb25zdCBuIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7by5lbnVtZXJhYmxlJiYoby5nZXQ/QWQoZSxuLCgpPT50W25dKTpDZChlLG4sby52YWx1ZSkpfX1mdW5jdGlvbiB5ZSguLi5lKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobik7T2JqZWN0LmFzc2lnbih0LG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSx0KX1mdW5jdGlvbiBvYihlKXtyZXR1cm4geWUoZS5fem9kLmRlZil9ZnVuY3Rpb24gc2IoZSx0KXtyZXR1cm4gdD90LnJlZHVjZSgobixvKT0+bj8uW29dLGUpOmV9ZnVuY3Rpb24gcmIoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQubWFwKG89PmVbb10pO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKG89Pntjb25zdCBzPXt9O2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXNbdFtyXV09b1tyXTtyZXR1cm4gc30pfWZ1bmN0aW9uIGliKGU9MTApe2NvbnN0IHQ9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgbj0iIjtmb3IobGV0IG89MDtvPGU7bysrKW4rPXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKV07cmV0dXJuIG59ZnVuY3Rpb24gUGQoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIEVkKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgQmk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwmJiFBcnJheS5pc0FycmF5KGUpfWNvbnN0IFJkPUZuKCgpPT57aWYoU2Uuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCBlPUZ1bmN0aW9uO3JldHVybiBuZXcgZSgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gZHQoZSl7aWYoV3QoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMHx8dHlwZW9mIHQhPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKFd0KG4pPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gUnMoZSl7cmV0dXJuIGR0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplIGluc3RhbmNlb2YgTWFwP25ldyBNYXAoZSk6ZSBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KGUpOmV9ZnVuY3Rpb24gYWIoZSl7bGV0IHQ9MDtmb3IoY29uc3QgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0Kys7cmV0dXJuIHR9Y29uc3QgY2I9ZT0+e2NvbnN0IHQ9dHlwZW9mIGU7c3dpdGNoKHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmU9PT1udWxsPyJudWxsIjplLnRoZW4mJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiImJmUuY2F0Y2gmJnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmZSBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJmUgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKX19LGhzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksT2Q9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBhZShlLHQsbil7Y29uc3Qgbz1uZXcgZS5fem9kLmNvbnN0cih0Pz9lLl96b2QuZGVmKTtyZXR1cm4oIXR8fG4/LnBhcmVudCkmJihvLl96b2QucGFyZW50PWUpLG99ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWU7aWYoIXQpcmV0dXJue307aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+dH07aWYodD8ubWVzc2FnZSE9PXZvaWQgMCl7aWYodD8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTt0LmVycm9yPXQubWVzc2FnZX1yZXR1cm4gZGVsZXRlIHQubWVzc2FnZSx0eXBlb2YgdC5lcnJvcj09InN0cmluZyI/ey4uLnQsZXJyb3I6KCk9PnQuZXJyb3J9OnR9ZnVuY3Rpb24gbGIoZSl7bGV0IHQ7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KG4sbyxzKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldCh0LG8scyl9LHNldChuLG8scyxyKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LnNldCh0LG8scyxyKX0saGFzKG4sbyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5oYXModCxvKX0sZGVsZXRlUHJvcGVydHkobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbyl9LG93bktleXMobil7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5vd25LZXlzKHQpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pfSxkZWZpbmVQcm9wZXJ0eShuLG8scyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8scyl9fSl9ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIHR5cGVvZiBlPT0iYmlnaW50Ij9lLnRvU3RyaW5nKCkrIm4iOnR5cGVvZiBlPT0ic3RyaW5nIj9gIiR7ZX0iYDpgJHtlfWB9ZnVuY3Rpb24gTmQoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZpbHRlcih0PT5lW3RdLl96b2Qub3B0aW4hPT12b2lkIDAmJmVbdF0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBaZD17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0samQ9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIE1kKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9e307cmV0dXJuIHd0KHIsZSxPcyhlLHQpKSxhZShlLHllKG4se3NoYXBlOnIsY2hlY2tzOltdfSkpfWZ1bmN0aW9uIE9zKGUsdCl7Y29uc3Qgbj1ZZShlKSxvPVtdO2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixzKT8uZW51bWVyYWJsZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke1N0cmluZyhzKX0iYCk7dFtzXSYmby5wdXNoKHMpfXJldHVybiBvfWZ1bmN0aW9uIHFkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9bmV3IFNldChPcyhlLHQpKSxpPXt9O3JldHVybiB3dChpLGUsUmVmbGVjdC5vd25LZXlzKFllKGUpKS5maWx0ZXIoYT0+IXIuaGFzKGEpKSksYWUoZSx5ZShuLHtzaGFwZTppLGNoZWNrczpbXX0pKX1mdW5jdGlvbiBMZChlLHQpe2lmKCFkdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IG49ZS5fem9kLmRlZi5jaGVja3M7aWYobiYmbi5sZW5ndGg+MCl7Y29uc3Qgcz1ZZShlKTtmb3IoY29uc3QgciBvZiBSZWZsZWN0Lm93bktleXModCkpaWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1yZXR1cm4gYWUoZSx5ZShlLl96b2QuZGVmLHtzaGFwZTpEZChlLHQpfSkpfWZ1bmN0aW9uIERkKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gd3QobixlLFJlZmxlY3Qub3duS2V5cyhZZShlKSkpLG5iKG4sdCksbn1mdW5jdGlvbiBCZChlLHQpe2lmKCFkdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtyZXR1cm4gYWUoZSx5ZShlLl96b2QuZGVmLHtzaGFwZTpEZChlLHQpfSkpfWZ1bmN0aW9uIEZkKGUsdCl7aWYoIXQ/Ll96b2Q/LmRlZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gbWVyZ2U6IGV4cGVjdGVkIGFuIG9iamVjdCBzY2hlbWEuIFRvIG1lcmdlIGEgcGxhaW4gc2hhcGUsIHVzZSBgLmV4dGVuZCgpYC4iKTtpZihlLl96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCBuPXt9O3d0KG4sZSxSZWZsZWN0Lm93bktleXMoWWUoZSkpKSx3dChuLHQsUmVmbGVjdC5vd25LZXlzKFllKHQpKSk7Y29uc3Qgbz15ZShlLl96b2QuZGVmLHtzaGFwZTpuLGdldCBjYXRjaGFsbCgpe3JldHVybiB0Ll96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6dC5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIGFlKGUsbyl9ZnVuY3Rpb24gZmkoZSx0LG4sbz0icGFydGlhbCIpe2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoYC4ke299KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c2ApO2NvbnN0IGE9bj9uZXcgU2V0KE9zKHQsbikpOnZvaWQgMCx1PXt9O3JldHVybiB3dCh1LHQsUmVmbGVjdC5vd25LZXlzKFllKHQpKSxlJiYoKGQscCk9PmEmJiFhLmhhcyhwKT9kOm5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmR9KSkpLGFlKHQseWUodC5fem9kLmRlZix7c2hhcGU6dSxjaGVja3M6W119KSl9ZnVuY3Rpb24gVWQoZSx0LG4pe2NvbnN0IG89bj9uZXcgU2V0KE9zKHQsbikpOnZvaWQgMCxzPXt9O3JldHVybiB3dChzLHQsUmVmbGVjdC5vd25LZXlzKFllKHQpKSwocixpKT0+byYmIW8uaGFzKGkpP3I6bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6cn0pKSxhZSh0LHllKHQuX3pvZC5kZWYse3NoYXBlOnN9KSl9ZnVuY3Rpb24geGUoZSx0PTApe2lmKGUuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgbj10O248ZS5pc3N1ZXMubGVuZ3RoO24rKylpZihlLmlzc3Vlc1tuXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBIZChlLHQ9MCl7aWYoZS5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCBuPXQ7bjxlLmlzc3Vlcy5sZW5ndGg7bisrKWlmKGUuaXNzdWVzW25dPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFplKGUsdCl7cmV0dXJuIHQubWFwKG49Pnt2YXIgbztyZXR1cm4obz1uKS5wYXRoPz8oby5wYXRoPVtdKSxuLnBhdGgudW5zaGlmdChlKSxufSl9ZnVuY3Rpb24gTXQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9ZnVuY3Rpb24gZ2koZSx0LG4pe3ZhciBvO2ZvcihsZXQgcz10O3M8ZS5sZW5ndGg7cysrKShvPWVbc10pLnNjaGVtYT8/KG8uc2NoZW1hPW4pfWZ1bmN0aW9uIHFlKGUsdCxuKXt2YXIgbztjb25zdCBzPWUuaW5zdD8uX3pvZD8udHJhaXRzO3M/LmhhcygiJFpvZFR5cGUiKSYmKHMuaGFzKCIkWm9kQ2hlY2siKT8obz1lKS5zY2hlbWE/PyhvLnNjaGVtYT1lLmluc3QpOmUuc2NoZW1hPWUuaW5zdCk7Y29uc3Qgcj1lLnNjaGVtYSE9PWUuaW5zdD9lLnNjaGVtYT8uX3pvZC5kZWY/LmVycm9yOnZvaWQgMCxpPWUubWVzc2FnZT9lLm1lc3NhZ2U6TXQoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P010KHI/LihlKSk/P010KHQ/LmVycm9yPy4oZSkpPz9NdChuLmN1c3RvbUVycm9yPy4oZSkpPz9NdChuLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCIsYT17fTtmb3IoY29uc3QgdSBvZiBPYmplY3Qua2V5cyhlKSl1PT09Imluc3QifHx1PT09InNjaGVtYSJ8fHU9PT0iY29udGludWUifHx1PT09ImlucHV0Inx8dT09PSJfX3Byb3RvX18ifHwoYVt1XT1lW3VdKTtyZXR1cm4gYS5wYXRoPz8oYS5wYXRoPVtdKSxhLm1lc3NhZ2U9aSx0Py5yZXBvcnRJbnB1dCYmKGEuaW5wdXQ9ZS5pbnB1dCksYX1mdW5jdGlvbiBOcyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9Y29uc3QgdWI9L1tcdUQ4MDAtXHVEQkZGXS87ZnVuY3Rpb24gWnMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZighdWIudGVzdChlKSlyZXR1cm4gdDtsZXQgbj10O2ZvcihsZXQgbz0wO288dC0xO28rKykoZS5jaGFyQ29kZUF0KG8pJjY0NTEyKT09PTU1Mjk2JiYoZS5jaGFyQ29kZUF0KG8rMSkmNjQ1MTIpPT09NTYzMjAmJihuLS0sbysrKTtyZXR1cm4gbn1mdW5jdGlvbiBqcyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gV2QoZSl7Y29uc3QgdD10eXBlb2YgZTtzd2l0Y2godCl7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZihlPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iYXJyYXkiO2NvbnN0IG49ZTtpZihuJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YobikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gbiYmbi5jb25zdHJ1Y3RvcilyZXR1cm4gbi5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gdH1mdW5jdGlvbiBWdCguLi5lKXtjb25zdFt0LG4sb109ZTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3ttZXNzYWdlOnQsY29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6b306ey4uLnR9fWZ1bmN0aW9uIGRiKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0LG5dKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludCh0LDEwKSkpLm1hcCh0PT50WzFdKX1mdW5jdGlvbiBWZChlKXtjb25zdCB0PWF0b2IoZSksbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXT10LmNoYXJDb2RlQXQobyk7cmV0dXJuIG59ZnVuY3Rpb24gSmQoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTtyZXR1cm4gYnRvYSh0KX1mdW5jdGlvbiBwYihlKXtjb25zdCB0PWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIiksbj0iPSIucmVwZWF0KCg0LXQubGVuZ3RoJTQpJTQpO3JldHVybiBWZCh0K24pfWZ1bmN0aW9uIGhiKGUpe3JldHVybiBKZChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gbWIoZSl7Y29uc3QgdD1lLnJlcGxhY2UoL14weC8sIiIpO2lmKHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKW5bby8yXT1OdW1iZXIucGFyc2VJbnQodC5zbGljZShvLG8rMiksMTYpO3JldHVybiBufWZ1bmN0aW9uIGZiKGUpe3JldHVybiBBcnJheS5mcm9tKGUpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIGdie2NvbnN0cnVjdG9yKC4uLnQpe319ZnVuY3Rpb24gS2QoZSx0KXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvLmdldD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHsuLi5vLGVudW1lcmFibGU6ITF9KTpiYihlLG4sby52YWx1ZSl9fWZ1bmN0aW9uIFhlKGUsdCxuLG89ITApe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTpvLHZhbHVlOm59KSxufWZ1bmN0aW9uIE1zKGUsdCxuKXtyZXR1cm4gWGUoZSx0LG4sITEpfWZ1bmN0aW9uIFVuKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBYZSh0aGlzLG4sbyh0aGlzKSl9LHNldChzKXtYZSh0aGlzLG4scyl9fSl9cmV0dXJuIHR9ZnVuY3Rpb24gYmIoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcz09bnVsbD9uOlhlKHRoaXMsdCxuLmJpbmQodGhpcykpfSxzZXQobyl7WGUodGhpcyx0LG8pfX0pfWZ1bmN0aW9uIHZiKGUsdCl7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQgaW4gbj92b2lkIDA6bn1sZXQgc2ksb3Q9ITE7Y29uc3QgeWI9e2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtvdD0hMH19O2Z1bmN0aW9uIEYoZSx0LG4pe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKGUuX3pvZCk7aWYodCBpbiBvJiZzaSE9PWUuX3pvZCl7c2k9dm9pZCAwO3JldHVybn1zaT1lLl96b2QsT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQseWIpO2NvbnN0IHM9b3Q7b3Q9ITE7dHJ5e2NvbnN0IHI9bih0aGlzKTtyZXR1cm4gb3Q/ZGVsZXRlIHRoaXNbdF06T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KSxvdD1vdHx8cyxyfWNhdGNoKHIpe3Rocm93IGRlbGV0ZSB0aGlzW3RdLG90PW90fHxzLHJ9fSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnN9KX19KX1mdW5jdGlvbiBHZChlLHQsbixvKXtjb25zdCBzPXZiKGUsdCk7cyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2NvbnN0IHI9e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlPW4odGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlfSxzZXQocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6byx2YWx1ZTpyfSl9fSl9Y29uc3QgWWQ9In5jb25zdGFudENhdGNoIjtmdW5jdGlvbiBVaShlKXtjb25zdCB0PSgpPT5lO3JldHVybiB0W1lkXT0hMCx0fWNvbnN0IEhpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpqZCxDT05TVEFOVF9DQVRDSDpZZCxDbGFzczpnYixOVU1CRVJfRk9STUFUX1JBTkdFUzpaZCxhYm9ydGVkOnhlLGFsbG93c0V2YWw6UmQsYXNzZXJ0OlhnLGFzc2VydEVxdWFsOktnLGFzc2VydElzOllnLGFzc2VydE5ldmVyOlFnLGFzc2VydE5vdEVxdWFsOkdnLGFzc2lnblByb3A6UnQsYXR0YWNoU2NoZW1hOmdpLGJhc2U2NFRvVWludDhBcnJheTpWZCxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6cGIsY2FjaGVkOkZuLGNhcHR1cmVTdGFja1RyYWNlOkJpLGNsZWFuRW51bTpkYixjbGVhblJlZ2V4Omx0LGNsb25lOmFlLGNsb25lRGVmOm9iLGNvZGVQb2ludExlbmd0aDpacyxjb25zdGFudENhdGNoOlVpLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6bGIsZGVmaW5lTGF6eTpJZCxkZWZpbmVMYXp5SW50ZXJuYWw6RixkZXJpdmVkOlVuLGVzYzpQZCxlc2NhcGVSZWdleDpRZSxleHBsaWNpdGx5QWJvcnRlZDpIZCxleHRlbmQ6TGQsZmluYWxpemVJc3N1ZTpxZSxmbG9hdFNhZmVSZW1haW5kZXI6eGQsZ2V0RWxlbWVudEF0UGF0aDpzYixnZXRFbnVtVmFsdWVzOmhpLGdldExlbmd0aGFibGVPcmlnaW46anMsZ2V0UGFyc2VkVHlwZTpjYixnZXRTaXphYmxlT3JpZ2luOk5zLGhleFRvVWludDhBcnJheTptYixoaWRlOk1zLGluc3RhbGxMYXp5UHJvcDpHZCxpc09iamVjdDpXdCxpc1BsYWluT2JqZWN0OmR0LGlzc3VlOlZ0LGpvaW5WYWx1ZXM6bWksanNvblN0cmluZ2lmeVJlcGxhY2VyOnBzLG1lbWJlcnM6S2QsbWVyZ2U6RmQsbWVyZ2VEZWZzOnllLG5vcm1hbGl6ZVBhcmFtczp3LG51bGxpc2g6RGksbnVtS2V5czphYixvYmplY3RDbG9uZTp0YixvbWl0OnFkLG9wdGlvbmFsS2V5czpOZCxvd246WGUscGFyc2VkVHlwZTpXZCxwYXJ0aWFsOmZpLHBpY2s6TWQscHJlZml4SXNzdWVzOlplLHByaW1pdGl2ZVR5cGVzOk9kLHByb21pc2VBbGxPYmplY3Q6cmIscHJvcGVydHlLZXlUeXBlczpocyxyYW5kb21TdHJpbmc6aWIscmF3U2hhcGU6RXMscmVxdWlyZWQ6VWQsc2FmZUV4dGVuZDpCZCxzaGFsbG93Q2xvbmU6UnMsc2x1Z2lmeTpFZCxzdHJpbmdpZnlQcmltaXRpdmU6RmksdG9ab2Q6UHMsdWludDhBcnJheVRvQmFzZTY0OkpkLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpoYix1aW50OEFycmF5VG9IZXg6ZmIsdW53cmFwTWVzc2FnZTpNdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgSXU7Y29uc3QgV2k9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pLHJpPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX07bGV0IEF1PSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvcjpudWxsO2Z1bmN0aW9uICRiKGUpe2NvbnN0IHQ9QXU7aWYodCl7Y29uc3Qgbj10LnN0YWNrVHJhY2VMaW1pdDtpZih0eXBlb2Ygbj09Im51bWJlciIpe3RyeXt0LnN0YWNrVHJhY2VMaW1pdD0wfWNhdGNoe3JldHVybiBBdT1udWxsLG5ldyBlfXRyeXtyZXR1cm4gbmV3IGV9ZmluYWxseXt0LnN0YWNrVHJhY2VMaW1pdD1ufX19cmV0dXJuIG5ldyBlfWZ1bmN0aW9uIG0oZSx0LG4sbyl7Y29uc3Qgcz17fTtmdW5jdGlvbiByKGYpe3RoaXMuZGVmPWYsdGhpcy5jb25zdHI9aCx0aGlzLnRyYWl0cz1uZXcgU2V0fXIucHJvdG90eXBlPXM7Y29uc3QgaT1uLGE9aSYmbmV3IFdlYWtTZXQ7ZnVuY3Rpb24gdShmLCQpe2lmKGYuX3pvZCl7aWYoZi5fem9kLnRyYWl0cy5oYXMoZSkpcmV0dXJufWVsc2V7cmkudmFsdWU9bmV3IHIoJCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJfem9kIixyaSl9ZmluYWxseXtyaS52YWx1ZT12b2lkIDB9fWlmKGYuX3pvZC50cmFpdHMuYWRkKGUpLHQoZiwkKSxhKXtjb25zdCB6PU9iamVjdC5nZXRQcm90b3R5cGVPZihmKSxBPWYuX3pvZC5jb25zdHIucHJvdG90eXBlO2xldCB4PXo7Zm9yKDt4JiZ4IT09QTspeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoeCk7Y29uc3QgVD14Pz96O2EuaGFzKFQpfHwoYS5hZGQoVCksS2QoVCxpKSl9Y29uc3Qgaz1oLnByb3RvdHlwZTtmb3IoY29uc3QgeiBpbiBrKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLHopJiYoeiBpbiBmfHwoZlt6XT1rW3pdLmJpbmQoZikpKX1jb25zdCBkPW8/LlBhcmVudD8/T2JqZWN0O2NsYXNzIHAgZXh0ZW5kcyBke31PYmplY3QuZGVmaW5lUHJvcGVydHkocCwibmFtZSIse3ZhbHVlOmV9KTtmdW5jdGlvbiBoKGYpe2NvbnN0ICQ9bz8uUGFyZW50PyRiKHApOnRoaXM7dSgkLGYpO2NvbnN0IGs9JC5fem9kLmRlZmVycmVkO2lmKGspe2Zvcihjb25zdCBBIG9mIGspQSgpOyQuX3pvZC5kZWZlcnJlZD12b2lkIDB9Y29uc3Qgej1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZz8ucG9zdFByb2Nlc3NvcjtyZXR1cm4geiYmeigkKSwkfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiaW5pdCIse3ZhbHVlOnV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmY9Pm8/LlBhcmVudCYmZiBpbnN0YW5jZW9mIG8uUGFyZW50PyEwOmY/Ll96b2Q/LnRyYWl0cz8uaGFzKGUpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIm5hbWUiLHt2YWx1ZTplfSksaH1jb25zdCBWaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIHV0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIHFzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke3R9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fShJdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/PyhJdS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IFNlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIGhlKGUpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKFNlLGUpLFNlfWZ1bmN0aW9uIGtiKCl7Y29uc3QgZT10aGlzLl96b2Q7cmV0dXJuIGUubWVzc2FnZT8/KGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmRlZixwcywyKSksZS5tZXNzYWdlfWZ1bmN0aW9uIHdiKGUpe3RoaXMuX3pvZC5tZXNzYWdlPWV9Y29uc3QgX2I9e2dldDprYixzZXQ6d2IsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LGlpPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX0sQ3U9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSksUWQ9KGUsdCk9PntlLm5hbWU9IiRab2RFcnJvciIsaWkudmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaXNzdWVzIixpaSksaWkudmFsdWU9dm9pZCAwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtZXNzYWdlIixfYik7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7Q3UuaGFzKG4pfHwoQ3UuYWRkKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89KCk9PnRoaXMubWVzc2FnZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KSl9LFhkPW0oIiRab2RFcnJvciIsUWQpLFJlPW0oIiRab2RFcnJvciIsUWQsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBTYihlLHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHwodD09PSJfX3Byb3RvX18iP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4oKSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbdF09bigpKSxlW3RdfWZ1bmN0aW9uIExzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30sbz1bXTtmb3IoY29uc3QgcyBvZiBlLmlzc3VlcylzLnBhdGgubGVuZ3RoPjA/U2IobixzLnBhdGhbMF0sKCk9PltdKS5wdXNoKHQocykpOm8ucHVzaCh0KHMpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOm59fWZ1bmN0aW9uIERzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e19lcnJvcnM6W119LG89KHMscj1bXSk9Pntmb3IoY29uc3QgaSBvZiBzLmlzc3VlcylpZihpLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmkuZXJyb3JzLmxlbmd0aClpLmVycm9ycy5tYXAoYT0+byh7aXNzdWVzOmF9LFsuLi5yLC4uLmkucGF0aF0pKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmkuaXNzdWVzfSxbLi4uciwuLi5pLnBhdGhdKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczppLmlzc3Vlc30sWy4uLnIsLi4uaS5wYXRoXSk7ZWxzZXtjb25zdCBhPVsuLi5yLC4uLmkucGF0aF07aWYoYS5sZW5ndGg9PT0wKW4uX2Vycm9ycy5wdXNoKHQoaSkpO2Vsc2V7bGV0IHU9bixkPTA7Zm9yKDtkPGEubGVuZ3RoOyl7Y29uc3QgcD1hW2RdLGg9ZD09PWEubGVuZ3RoLTE7aWYocD09PSJfZXJyb3JzIil7aCYmdS5fZXJyb3JzLnB1c2godChpKSksZCsrO2NvbnRpbnVlfU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LHApfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodSxwLHt2YWx1ZTp7X2Vycm9yczpbXX0sZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBmPXVbcF07aCYmZi5fZXJyb3JzLnB1c2godChpKSksdT1mLGQrK319fX07cmV0dXJuIG8oZSksbn1mdW5jdGlvbiBKaShlLHQ9bj0+bi5tZXNzYWdlKXtjb25zdCBuPXtlcnJvcnM6W119LG89KHMscj1bXSk9Pnt2YXIgaTtmb3IoY29uc3QgYSBvZiBzLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAodT0+byh7aXNzdWVzOnV9LFsuLi5yLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uciwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLnIsLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCB1PVsuLi5yLC4uLmEucGF0aF07aWYodS5sZW5ndGg9PT0wKXtuLmVycm9ycy5wdXNoKHQoYSkpO2NvbnRpbnVlfWxldCBkPW4scD0wO2Zvcig7cDx1Lmxlbmd0aDspe2NvbnN0IGg9dVtwXSxmPXA9PT11Lmxlbmd0aC0xO3R5cGVvZiBoPT0ic3RyaW5nIj8oZC5wcm9wZXJ0aWVzPz8oZC5wcm9wZXJ0aWVzPXt9KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZC5wcm9wZXJ0aWVzLGgpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm9wZXJ0aWVzLGgse3ZhbHVlOntlcnJvcnM6W119LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZD1kLnByb3BlcnRpZXNbaF0pOihkLml0ZW1zPz8oZC5pdGVtcz1bXSksKGk9ZC5pdGVtcylbaF0/PyhpW2hdPXtlcnJvcnM6W119KSxkPWQuaXRlbXNbaF0pLGYmJmQuZXJyb3JzLnB1c2godChhKSkscCsrfX19O3JldHVybiBvKGUpLG59ZnVuY3Rpb24gZXAoZSl7Y29uc3QgdD1bXSxuPWUubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiBuKXR5cGVvZiBvPT0ibnVtYmVyIj90LnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj90LnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/dC5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KHQubGVuZ3RoJiZ0LnB1c2goIi4iKSx0LnB1c2gobykpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIEtpKGUpe2NvbnN0IHQ9W10sbj1bLi4uZS5pc3N1ZXNdLnNvcnQoKG8scyk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKHMucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2Ygbil0LnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmdC5wdXNoKGAgIOKGkiBhdCAke2VwKG8ucGF0aCl9YCk7cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIEJzKGUsdCl7cmV0dXJue2NhbGxlZTp0Py5jYWxsZWU/P2UsRXJyOnQ/LkVycn19Y29uc3QgSG49ZT0+e2NvbnN0IHQ9KG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6byxpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB1dDtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHU9bmV3KHI/LkVycj8/ZSkoYS5pc3N1ZXMubWFwKGQ9PnFlKGQsaSxoZSgpKSkpO3Rocm93IEJpKHUscj8uY2FsbGVlPz90KSx1fXJldHVybiBhLnZhbHVlfTtyZXR1cm4gdH0sYmk9SG4oUmUpLFduPWU9Pntjb25zdCB0PWFzeW5jKG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOm8saXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCB1PW5ldyhyPy5FcnI/P2UpKGEuaXNzdWVzLm1hcChkPT5xZShkLGksaGUoKSkpKTt0aHJvdyBCaSh1LHI/LmNhbGxlZT8/dCksdX1yZXR1cm4gYS52YWx1ZX07cmV0dXJuIHR9LHZpPVduKFJlKSxWbj1lPT4odCxuLG8pPT57Y29uc3Qgcz1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO2lmKHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB1dDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoP25wKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sdHA9Vm4oUmUpO2Z1bmN0aW9uIG5wKGUsdCxuKXtsZXQgbztyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtyZXR1cm4gb3x8KG89bmV3IGUodC5tYXAocz0+cWUocyxuLGhlKCkpKSksdD12b2lkIDAsbj12b2lkIDApLG99LHNldCBlcnJvcihzKXtvPXMsdD12b2lkIDAsbj12b2lkIDB9fX1jb25zdCBKbj1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZSYmKHI9YXdhaXQgciksci5pc3N1ZXMubGVuZ3RoP25wKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sVGI9Sm4oUmUpLHpiPVN5bWJvbC5mb3IoInpvZC5jb21waWxlLmludmFsaWQiKSx4Yj1TeW1ib2wuZm9yKCJ6b2QuY29tcGlsZS5mYWxsYmFjayIpLEZzPSgoZSx0LG4pPT57Y29uc3Qgbz1lLl96b2QuYmFnLnZhbGlkYXRvcjtpZihvIT09dm9pZCAwKXtpZihvKHQpIT09emIpcmV0dXJuITA7aWYoby5kZWZpbml0ZT09PSEwJiZuPT09dm9pZCAwKXJldHVybiExfXJldHVybiBJYihlLHQsbil9KTtmdW5jdGlvbiBJYihlLHQsbil7Y29uc3Qgbz1uP3suLi5uLGFzeW5jOiExLGFib3J0RWFybHk6ITB9Onthc3luYzohMSxhYm9ydEVhcmx5OiEwfSxzPWUuX3pvZC5iYWcuZmFsbGJhY2tSdW47bGV0IHI7aWYocz8ob1t4Yl09ITAscj1zKHt2YWx1ZTp0LGlzc3VlczpbXX0sbykpOnI9ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG8pLHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB1dDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoPT09MH1jb25zdCBVcz1hc3luYyhlLHQsbik9Pntjb25zdCBvPW4/ey4uLm4sYXN5bmM6ITAsYWJvcnRFYXJseTohMH06e2FzeW5jOiEwLGFib3J0RWFybHk6ITB9O2xldCBzPWUuX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD09PTB9LEdpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT57Y29uc3QgYT1yP3suLi5yLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB0KG8scyxhLEJzKG4saSkpfTtyZXR1cm4gbn0sQWI9R2koUmUpLFlpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT50KG8scyxyLEJzKG4saSkpO3JldHVybiBufSxDYj1ZaShSZSksUWk9ZT0+e2NvbnN0IHQ9V24oZSksbj1hc3luYyhvLHMscixpKT0+e2NvbnN0IGE9cj97Li4ucixkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gYXdhaXQgdChvLHMsYSxCcyhuLGkpKX07cmV0dXJuIG59LFBiPVFpKFJlKSxYaT1lPT57Y29uc3QgdD1XbihlKSxuPWFzeW5jKG8scyxyLGkpPT5hd2FpdCB0KG8scyxyLEJzKG4saSkpO3JldHVybiBufSxFYj1YaShSZSksZWE9ZT0+KHQsbixvKT0+e2NvbnN0IHM9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gVm4oZSkodCxuLHMpfSxSYj1lYShSZSksdGE9ZT0+KHQsbixvKT0+Vm4oZSkodCxuLG8pLE9iPXRhKFJlKSxuYT1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIEpuKGUpKHQsbixzKX0sTmI9bmEoUmUpLG9hPWU9PmFzeW5jKHQsbixvKT0+Sm4oZSkodCxuLG8pLFpiPW9hKFJlKSxvcD0vXltjQ11bMC05YS16XXs2LH0kLyxzcD0vXlswLTlhLXpdKyQvLHJwPS9eWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQvLGlwPS9eWzAtOWEtdkEtVl17MjB9JC8sYXA9L15bQS1aYS16MC05XXsyN30kLyxjcD0vXlthLXpBLVowLTlfLV17MjF9JC87ZnVuY3Rpb24gbHAoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bYS16QS1aMC05Xy1deyR7ZX19JGApfWNvbnN0IHVwPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLGpiPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sZHA9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLEp0PWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxNYj1KdCg0KSxxYj1KdCg2KSxMYj1KdCg3KSxwcD0vXig/OltBLVphLXowLTlfJytcLV0rXC4pKltBLVphLXowLTlfJytcLV0qW0EtWmEtejAtOV8rLV1AKD86W0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxEYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxCYj0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxocD0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxGYj1ocCxVYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxIYj0iXig/PVtcXHNcXFNdKltcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxccHtSZWdpb25hbF9JbmRpY2F0b3J9XFx1MjBFM10pW1xccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9XFxwe0Vtb2ppX0NvbXBvbmVudH1dKyQiO2Z1bmN0aW9uIG1wKCl7cmV0dXJuIG5ldyBSZWdFeHAoSGIsInUiKX1jb25zdCBmcD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sZ3A9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxicD1lPT57Y29uc3QgdD1RZShlPz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke3R9KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke3R9KXs1fVswLTlhLWZdezJ9JGApfSx2cD0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8seXA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sV2I9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sVmI9L14oPzpbQS1aYS16MC05Xy1dezR9KSooPzpbQS1aYS16MC05Xy1dezIsM30pPyQvLCRwPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxrcD0vXig/PS57MSwyNTN9JCkoW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsNjN9JC8sc2E9L15odHRwcz8kLyx3cD0vXlwrWzEtOV1cZHs2LDE0fSQvLHJhPS9eXGQoPzpbIC1dP1xkKXsxMSwxOH0kLyxfcD0vXig/OkFFRHxBRk58QUxMfEFNRHxBT0F8QVJTfEFVRHxBV0d8QVpOfEJBTXxCQkR8QkRUfEJIRHxCSUZ8Qk1EfEJORHxCT0J8Qk9WfEJSTHxCU0R8QlROfEJXUHxCWU58QlpEfENBRHxDREZ8Q0hFfENIRnxDSFd8Q0xGfENMUHxDTll8Q09QfENPVXxDUkN8Q1VQfENWRXxDWkt8REpGfERLS3xET1B8RFpEfEVHUHxFUk58RVRCfEVVUnxGSkR8RktQfEdCUHxHRUx8R0hTfEdJUHxHTUR8R05GfEdUUXxHWUR8SEtEfEhOTHxIVEd8SFVGfElEUnxJTFN8SU5SfElRRHxJUlJ8SVNLfEpNRHxKT0R8SlBZfEtFU3xLR1N8S0hSfEtNRnxLUFd8S1JXfEtXRHxLWUR8S1pUfExBS3xMQlB8TEtSfExSRHxMU0x8TFlEfE1BRHxNREx8TUdBfE1LRHxNTUt8TU5UfE1PUHxNUlV8TVVSfE1WUnxNV0t8TVhOfE1YVnxNWVJ8TVpOfE5BRHxOR058TklPfE5PS3xOUFJ8TlpEfE9NUnxQQUJ8UEVOfFBHS3xQSFB8UEtSfFBMTnxQWUd8UUFSfFJPTnxSU0R8UlVCfFJXRnxTQVJ8U0JEfFNDUnxTREd8U0VLfFNHRHxTSFB8U0xFfFNPU3xTUkR8U1NQfFNUTnxTVkN8U1lQfFNaTHxUSEJ8VEpTfFRNVHxUTkR8VE9QfFRSWXxUVER8VFdEfFRaU3xVQUh8VUdYfFVTRHxVU058VVlJfFVZVXxVWVd8VVpTfFZFRHxWRVN8Vk5EfFZVVnxXU1R8WEFEfFhBRnxYQUd8WEFVfFhCQXxYQkJ8WEJDfFhCRHxYQ0R8WENHfFhEUnxYT0Z8WFBEfFhQRnxYUFR8WFNVfFhUU3xYVUF8WFhYfFlFUnxaQVJ8Wk1XfFpXRykkLyxpYT0vXltBLVpdezJ9KD8hMDB8MDF8OTkpXGR7Mn1bQS1aMC05XXsxMSwzMH0kLyxTcD0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSI7ZnVuY3Rpb24gSmIoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2V9JGApfWNvbnN0IFRwPUpiKFNwKTtmdW5jdGlvbiB5aShlKXtjb25zdCB0PSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgZS5wcmVjaXNpb249PSJudW1iZXIiP2UucHJlY2lzaW9uPT09LTE/YCR7dH1gOmUucHJlY2lzaW9uPT09MD9gJHt0fTpbMC01XVxcZGA6YCR7dH06WzAtNV1cXGRcXC5cXGR7JHtlLnByZWNpc2lvbn19YDplLnNlY29uZHM/YCR7dH06WzAtNV1cXGQoPzpcXC5cXGQrKT9gOmAke3R9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHpwKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHt5aShlKX0kYCl9ZnVuY3Rpb24geHAoZSl7Y29uc3QgdD1bIloiXTtlLm9mZnNldCYmdC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBuPWAke3lpKHtwcmVjaXNpb246ZS5wcmVjaXNpb24sc2Vjb25kczohMH0pfSg/OiR7dC5qb2luKCJ8Iil9KWAsbz1lLmxvY2FsP2Ake259fCR7eWkoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pfWA6bjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7U3B9VCg/OiR7b30pJGApfWNvbnN0IElwPS9eW1xzXFNdezAsfSQvLEFwPWU9Pntjb25zdCB0PWU/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dH0kYCl9LENwPS9eLT9cZCtuPyQvLFBwPS9eLT9cZCskLyxIcz0vXi0/XGQrKD86XC5cZCspPyQvLEVwPS9eKD86dHJ1ZXxmYWxzZSkkL2ksUnA9L15udWxsJC9pLE9wPS9edW5kZWZpbmVkJC9pLE5wPS9eW15BLVpdKiQvLFpwPS9eW15hLXpdKiQvLGpwPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gS24oZSx0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtlfX0ke3R9JGApfWZ1bmN0aW9uIEduKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske2V9fSRgKX1jb25zdCBLYj0vXlswLTlhLWZBLUZdezMyfSQvLEdiPUtuKDIyLCI9PSIpLFliPUduKDIyKSxRYj0vXlswLTlhLWZBLUZdezQwfSQvLFhiPUtuKDI3LCI9IiksZXY9R24oMjcpLHR2PS9eWzAtOWEtZkEtRl17NjR9JC8sbnY9S24oNDMsIj0iKSxvdj1Hbig0Myksc3Y9L15bMC05YS1mQS1GXXs5Nn0kLyxydj1Lbig2NCwiIiksaXY9R24oNjQpLGF2PS9eWzAtOWEtZkEtRl17MTI4fSQvLGN2PUtuKDg2LCI9PSIpLGx2PUduKDg2KSxXcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYW55U3RyaW5nOklwLGJhc2U2NDpXYixiYXNlNjR1cmw6VmIsYmlnaW50OkNwLGJvb2xlYW46RXAsYnJvd3NlckVtYWlsOlViLGNpZHJ2NDp2cCxjaWRydjY6eXAsY3JlZGl0Q2FyZDpyYSxjdWlkOm9wLGN1aWQyOnNwLGN1cnJlbmN5Q29kZTpfcCxkYXRlOlRwLGRhdGV0aW1lOnhwLGRvbWFpbjprcCxkdXJhdGlvbjp1cCxlMTY0OndwLGVtYWlsOnBwLGVtb2ppOm1wLGV4dGVuZGVkRHVyYXRpb246amIsZ3VpZDpkcCxoZXg6anAsaG9zdG5hbWU6JHAsaHRtbDVFbWFpbDpEYixodHRwUHJvdG9jb2w6c2EsaWJhbjppYSxpZG5FbWFpbDpGYixpbnRlZ2VyOlBwLGlwdjQ6ZnAsaXB2NjpncCxrc3VpZDphcCxsb3dlcmNhc2U6TnAsbWFjOmJwLG1kNV9iYXNlNjQ6R2IsbWQ1X2Jhc2U2NHVybDpZYixtZDVfaGV4OktiLG5hbm9pZDpjcCxuYW5vaWRPZkxlbmd0aDpscCxudWxsOlJwLG51bWJlcjpIcyxyZmM1MzIyRW1haWw6QmIsc2hhMV9iYXNlNjQ6WGIsc2hhMV9iYXNlNjR1cmw6ZXYsc2hhMV9oZXg6UWIsc2hhMjU2X2Jhc2U2NDpudixzaGEyNTZfYmFzZTY0dXJsOm92LHNoYTI1Nl9oZXg6dHYsc2hhMzg0X2Jhc2U2NDpydixzaGEzODRfYmFzZTY0dXJsOml2LHNoYTM4NF9oZXg6c3Ysc2hhNTEyX2Jhc2U2NDpjdixzaGE1MTJfYmFzZTY0dXJsOmx2LHNoYTUxMl9oZXg6YXYsc3RyaW5nOkFwLHRpbWU6enAsdWxpZDpycCx1bmRlZmluZWQ6T3AsdW5pY29kZUVtYWlsOmhwLHVwcGVyY2FzZTpacCx1dWlkOkp0LHV1aWQ0Ok1iLHV1aWQ2OnFiLHV1aWQ3OkxiLHhpZDppcH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxpZT1tKCIkWm9kQ2hlY2siLChlLHQpPT57dmFyIG47ZS5fem9kPz8oZS5fem9kPXt9KSxlLl96b2QuZGVmPXQsKG49ZS5fem9kKS5vbmF0dGFjaD8/KG4ub25hdHRhY2g9W10pfSksYWE9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hRGkodCkmJnQuc2l6ZSE9PXZvaWQgMH0sY2E9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hRGkodCkmJnQubGVuZ3RoIT09dm9pZCAwfSxtcz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxsYT1tKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsdCk9PntpZS5pbml0KGUsdCk7Y29uc3Qgbj1tc1t0eXBlb2YgdC52YWx1ZV07ZS5fem9kLmNoZWNrPW89PnsodC5pbmNsdXNpdmU/by52YWx1ZTw9dC52YWx1ZTpvLnZhbHVlPHQudmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46bXNbdHlwZW9mIG8udmFsdWVdPz9uLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksdWE9bSgiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49bXNbdHlwZW9mIHQudmFsdWVdO2UuX3pvZC5jaGVjaz1vPT57KHQuaW5jbHVzaXZlP28udmFsdWU+PXQudmFsdWU6by52YWx1ZT50LnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOm1zW3R5cGVvZiBvLnZhbHVlXT8/bixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTXA9bSgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKGUsdCk9PntpZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntpZih0eXBlb2Ygbi52YWx1ZSE9dHlwZW9mIHQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSE9PUJpZ0ludCgwKSYmbi52YWx1ZSV0LnZhbHVlPT09QmlnSW50KDApOnhkKG4udmFsdWUsdC52YWx1ZSk9PT0wKXx8bi5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBuLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjp0LnZhbHVlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSkscXA9bSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSx0KT0+e2llLmluaXQoZSx0KSx0LmZvcm1hdD10LmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IG49dC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPW4/ImludCI6Im51bWJlciIsW3Mscl09WmRbdC5mb3JtYXRdO2UuX3pvZC5jaGVjaz1pPT57Y29uc3QgYT1pLnZhbHVlO2lmKG4pe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDp0LmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmEsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihhKSl7YT4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohdC5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufX1hPHMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxhPnImJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19iaWciLG1heGltdW06cixpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTHA9bSgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwoZSx0KT0+e2llLmluaXQoZSx0KTtjb25zdFtuLG9dPWpkW3QuZm9ybWF0XTtlLl96b2QuY2hlY2s9cz0+e2NvbnN0IHI9cy52YWx1ZTtyPG4mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxyPm8mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRHA9bSgiJFpvZENoZWNrTWF4U2l6ZSIsKGUsdCk9Pnt2YXIgbjtpZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1hYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWU7cy5zaXplPD10Lm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpOcyhzKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxCcD1tKCIkWm9kQ2hlY2tNaW5TaXplIiwoZSx0KT0+e3ZhciBuO2llLmluaXQoZSx0KSwobj1lLl96b2QuZGVmKS53aGVuPz8obi53aGVuPWFhKSxlLl96b2QuY2hlY2s9bz0+e2NvbnN0IHM9by52YWx1ZTtzLnNpemU+PXQubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOk5zKHMpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OnMsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRnA9bSgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKGUsdCk9Pnt2YXIgbjtpZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1hYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWUscj1zLnNpemU7aWYocj09PXQuc2l6ZSlyZXR1cm47Y29uc3QgaT1yPnQuc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46TnMocyksLi4uaT97Y29kZToidG9vX2JpZyIsbWF4aW11bTp0LnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dC5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxVcD1tKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLChlLHQpPT57dmFyIG47aWUuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49Y2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj50Lm1heGltdW0/WnMocyk6cik8PXQubWF4aW11bSlyZXR1cm47Y29uc3QgYT1qcyhzKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxIcD1tKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLChlLHQpPT57dmFyIG47aWUuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49Y2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj49dC5taW5pbXVtJiZyPHQubWluaW11bSoyP1pzKHMpOnIpPj10Lm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9anMocyk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxXcD1tKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLHQpPT57dmFyIG47aWUuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49Y2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGgsaT10eXBlb2Ygcz09InN0cmluZyImJnI+PXQubGVuZ3RoJiZyPD10Lmxlbmd0aCoyP1pzKHMpOnI7aWYoaT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBhPWpzKHMpLHU9aT50Lmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi51P3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxZbj1tKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLHQpPT57dmFyIG4sbztpZS5pbml0KGUsdCksdC5wYXR0ZXJuPyhuPWUuX3pvZCkuY2hlY2s/PyhuLmNoZWNrPXM9Pnt0LnBhdHRlcm4ubGFzdEluZGV4PTAsIXQucGF0dGVybi50ZXN0KHMudmFsdWUpJiZzLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDp0LmZvcm1hdCxpbnB1dDpzLnZhbHVlLC4uLnQucGF0dGVybj97cGF0dGVybjp0LnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9KToobz1lLl96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksVnA9bSgiJFpvZENoZWNrUmVnZXgiLChlLHQpPT57WW4uaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57dC5wYXR0ZXJuLmxhc3RJbmRleD0wLCF0LnBhdHRlcm4udGVzdChuLnZhbHVlKSYmbi5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpuLnZhbHVlLHBhdHRlcm46dC5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksSnA9bSgiJFpvZENoZWNrTG93ZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1OcCksWW4uaW5pdChlLHQpfSksS3A9bSgiJFpvZENoZWNrVXBwZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1acCksWW4uaW5pdChlLHQpfSksR3A9bSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49UWUodC5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiB0LnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHt0LnBvc2l0aW9ufSx9JHtufWA6bik7dC5wYXR0ZXJuPW8sZS5fem9kLmNoZWNrPXM9PntzLnZhbHVlLmluY2x1ZGVzKHQuaW5jbHVkZXMsdC5wb3NpdGlvbil8fHMuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6dC5pbmNsdWRlcyxpbnB1dDpzLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLFlwPW0oIiRab2RDaGVja1N0YXJ0c1dpdGgiLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49bmV3IFJlZ0V4cChgXiR7UWUodC5wcmVmaXgpfS4qYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW4pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKHQucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6dC5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxRcD1tKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsdCk9PntpZS5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgUmVnRXhwKGAuKiR7UWUodC5zdWZmaXgpfSRgKTt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49biksZS5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKHQuc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnQuc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gZnMoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSl9Y29uc3QgWHA9bSgiJFpvZENoZWNrUHJvcGVydHkiLChlLHQpPT57aWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz10LnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZVt0LnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKHM9PmZzKHMsbix0LnByb3BlcnR5KSk7ZnMobyxuLHQucHJvcGVydHkpfX0pLGVoPW0oIiRab2RDaGVja1Byb3BlcnRpZXMiLChlLHQpPT57aWUuaW5pdChlLHQpLE1zKGUsU3ltYm9sLml0ZXJhdG9yLGZ1bmN0aW9uKigpe3lpZWxkIGV9KTtsZXQgbjtlLl96b2QuY2hlY2s9bz0+e2lmKG8udmFsdWU9PW51bGwpe28uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6by52YWx1ZSxpbnN0OmV9KTtyZXR1cm59bj8/KG49UmVmbGVjdC5vd25LZXlzKHQuc2hhcGUpLm1hcChpPT5baSx0LnNoYXBlW2ldXSkpO2NvbnN0IHM9by52YWx1ZTtsZXQgcjtmb3IoY29uc3RbaSxhXW9mIG4pe2NvbnN0IHU9YS5fem9kLnJ1bih7dmFsdWU6c1tpXSxpc3N1ZXM6W119LHt9KTt1IGluc3RhbmNlb2YgUHJvbWlzZT8ocj8/KHI9W10pLHIucHVzaCh1LnRoZW4oZD0+ZnMoZCxvLGkpKSkpOmZzKHUsbyxpKX1pZihyKXJldHVybiBQcm9taXNlLmFsbChyKS50aGVuKCgpPT57fSl9fSksdGg9bSgiJFpvZENoZWNrTWltZVR5cGUiLChlLHQpPT57aWUuaW5pdChlLHQpO2NvbnN0IG49bmV3IFNldCh0Lm1pbWUpO2UuX3pvZC5jaGVjaz1vPT57bi5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksbmg9bSgiJFpvZENoZWNrT3ZlcndyaXRlIiwoZSx0KT0+e2llLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e24udmFsdWU9dC50eChuLnZhbHVlKX19KTtjbGFzcyBvaHtjb25zdHJ1Y3Rvcih0PVtdLG49e30pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMuYXJncz10LHRoaXMuY2xvc2VkPW59aW5kZW50ZWQodCl7dGhpcy5pbmRlbnQrPTE7dHJ5e3QodGhpcyl9ZmluYWxseXt0aGlzLmluZGVudC09MX19d3JpdGUodCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3QodGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLHQodGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz10LnNwbGl0KGAKYCkuZmlsdGVyKGk9PmkpLHM9TWF0aC5taW4oLi4uby5tYXAoaT0+aS5sZW5ndGgtaS50cmltU3RhcnQoKS5sZW5ndGgpKSxyPW8ubWFwKGk9Pmkuc2xpY2UocykpLm1hcChpPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2kpO2Zvcihjb25zdCBpIG9mIHIpdGhpcy5jb250ZW50LnB1c2goaSl9Y29tcGlsZSgpe2NvbnN0IHQ9RnVuY3Rpb24sbj10aGlzPy5jb250ZW50Pz9bIiJdO3JldHVybiBuZXcgdCguLi5PYmplY3Qua2V5cyh0aGlzLmNsb3NlZCksYHJldHVybiBmdW5jdGlvbiAoJHt0aGlzLmFyZ3Muam9pbigiLCAiKX0pIHsKJHtuLmpvaW4oYApgKX0KfTtgKSguLi5PYmplY3QudmFsdWVzKHRoaXMuY2xvc2VkKSl9fWNvbnN0IHNoPXttYWpvcjo0LG1pbm9yOjYscGF0Y2g6NX0sTT1tKCIkWm9kVHlwZSIsKGUsdCk9Pnt2YXIgbjtlPz8oZT17fSksZS5fem9kLmRlZj10LGUuX3pvZC5iYWc9ZS5fem9kLmJhZ3x8e30sZS5fem9kLnZlcnNpb249c2g7Y29uc3Qgbz1lLl96b2QuZGVmLmNoZWNrcyxzPWUuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKT9bZSwuLi5vPz9bXV06bz8ubGVuZ3RoP1suLi5vXTpbXTtmb3IoY29uc3QgciBvZiBzKWZvcihjb25zdCBpIG9mIHIuX3pvZC5vbmF0dGFjaClpKGUpO2lmKHMubGVuZ3RoPT09MCkobj1lLl96b2QpLmRlZmVycmVkPz8obi5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57ZS5fem9kLnJ1bj1lLl96b2QucGFyc2V9KTtlbHNle2NvbnN0IHI9KGEsdSxkKT0+e2lmKGEubWVtbylyZXR1cm4gYTtsZXQgcD14ZShhKSxoO2Zvcihjb25zdCBmIG9mIHUpe2lmKGYuX3pvZC5kZWYud2hlbil7aWYoSGQoYSl8fCFmLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZihwKWNvbnRpbnVlO2NvbnN0ICQ9YS5pc3N1ZXMubGVuZ3RoLGs9Zi5fem9kLmNoZWNrKGEpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlJiZkPy5hc3luYz09PSExKXRocm93IG5ldyB1dDtpZihofHxrIGluc3RhbmNlb2YgUHJvbWlzZSloPShoPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgayxhLmlzc3Vlcy5sZW5ndGghPT0kJiYoZ2koYS5pc3N1ZXMsJCxlKSxwfHwocD14ZShhLCQpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PSQpY29udGludWU7Z2koYS5pc3N1ZXMsJCxlKSxwfHwocD14ZShhLCQpKX19cmV0dXJuIGg/aC50aGVuKCgpPT5hKTphfSxpPShhLHUsZCk9PntpZih4ZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgcD1yKHUscyxkKTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoZC5hc3luYz09PSExKXRocm93IG5ldyB1dDtyZXR1cm4gcC50aGVuKGg9PmUuX3pvZC5wYXJzZShoLGQpKX1yZXR1cm4gZS5fem9kLnBhcnNlKHAsZCl9O2UuX3pvZC5ydW49KGEsdSk9PntpZih1LnNraXBDaGVja3MpcmV0dXJuIGUuX3pvZC5wYXJzZShhLHUpO2lmKHUuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgcD1lLl96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4udSxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHAgaW5zdGFuY2VvZiBQcm9taXNlP3AudGhlbihoPT5pKGgsYSx1KSk6aShwLGEsdSl9Y29uc3QgZD1lLl96b2QucGFyc2UoYSx1KTtpZihkIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYodS5hc3luYz09PSExKXRocm93IG5ldyB1dDtyZXR1cm4gZC50aGVuKHA9PnIocCxzLHUpKX1yZXR1cm4gcihkLHMsdSl9fX0se2dldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIE1zKHRoaXMsIn5zdGFuZGFyZCIsZGEodGhpcykpfSxzZXQifnN0YW5kYXJkIihlKXtYZSh0aGlzLCJ+c3RhbmRhcmQiLGUpfX0pLHJoPShlLHQpPT5lLmlzc3Vlcy5sZW5ndGg/e2lzc3VlczplLmlzc3Vlcy5tYXAobj0+cWUobix0LGhlKCkpKX06e3ZhbHVlOmUudmFsdWV9O2FzeW5jIGZ1bmN0aW9uIHV2KGUsdCl7Y29uc3Qgbj17YXN5bmM6ITB9O3JldHVybiByaChhd2FpdCBlLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbiksbil9ZnVuY3Rpb24gZGEoZSl7cmV0dXJue3ZhbGlkYXRlOnQ9Pntjb25zdCBuPXthc3luYzohMX07dHJ5e2NvbnN0IG89ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG4pO2lmKCEobyBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiByaChvLG4pfWNhdGNoe31yZXR1cm4gdXYoZSx0KX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX19Y29uc3QgUW49bSgiJFpvZFN0cmluZyIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj10LnBhdHRlcm4/P0lwLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPVN0cmluZyhuLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiBuLnZhbHVlPT0ic3RyaW5nInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG59fSksdGU9bSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsdCk9PntZbi5pbml0KGUsdCksUW4uaW5pdChlLHQpfSksaWg9bSgiJFpvZEdVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWRwKSx0ZS5pbml0KGUsdCl9KSxhaD1tKCIkWm9kVVVJRCIsKGUsdCk9PntpZih0LnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bdC52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3QudmVyc2lvbn0iYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUp0KG8pKX1lbHNlIHQucGF0dGVybj8/KHQucGF0dGVybj1KdCgpKTt0ZS5pbml0KGUsdCl9KSxjaD1tKCIkWm9kRW1haWwiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXBwKSx0ZS5pbml0KGUsdCl9KSxwYT0xLFpuPTI7ZnVuY3Rpb24gaGEoZSl7dHJ5e3JldHVybiB0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIFVSTC5jYW5QYXJzZT09ImZ1bmN0aW9uIj9VUkwuY2FuUGFyc2UoZSk6KG5ldyBVUkwoZSksITApfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBsaChlLHQpe3JldHVybiEoIm5vcm1hbGl6ZSJpbiB0KSYmISgiaG9zdG5hbWUiaW4gdCkmJiEoInByb3RvY29sImluIHQpP2hhKGUpfHxabjp1aChlLHQpfWZ1bmN0aW9uIHVoKGUsdCl7aWYoIXQubm9ybWFsaXplJiZ0LnByb3RvY29sPy5zb3VyY2U9PT1zYS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChlKSlyZXR1cm4gcGE7dHJ5e2lmKHR5cGVvZiBVUkw8InUiKXtjb25zdCBuPVVSTDtpZih0eXBlb2Ygbi5wYXJzZT09ImZ1bmN0aW9uIilyZXR1cm4gbi5wYXJzZShlKT8/Wm59cmV0dXJuIG5ldyBVUkwoZSl9Y2F0Y2h7cmV0dXJuIFpufX1jb25zdCBkdj0vW1x0XG5ccl0vZztmdW5jdGlvbiAkaShlKXtyZXR1cm4gZS5yZXBsYWNlKGR2LCIiKX1mdW5jdGlvbiBkaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLmhvc3RuYW1lKX1mdW5jdGlvbiBwaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKX1jb25zdCBoaD1tKCIkWm9kVVJMIiwoZSx0KT0+e3RlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3RyeXtjb25zdCBvPW4udmFsdWUudHJpbSgpLHM9bGgobyx0KTtpZihzPT09cGEpe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pO3JldHVybn1pZihzPT09Wm4pe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KTtyZXR1cm59aWYocz09PSEwKXtuLnZhbHVlPSRpKG8pO3JldHVybn10Lmhvc3RuYW1lJiYhZGgocyx0Lmhvc3RuYW1lKSYmbi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOnQuaG9zdG5hbWUuc291cmNlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSksdC5wcm90b2NvbCYmIXBoKHMsdC5wcm90b2NvbCkmJm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjp0LnByb3RvY29sLnNvdXJjZSxpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pLG4udmFsdWU9dC5ub3JtYWxpemU/cy5ocmVmOiRpKG8pO3JldHVybn1jYXRjaHtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fX0pLG1oPW0oIiRab2RFbW9qaSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49bXAoKSksdGUuaW5pdChlLHQpfSksZmg9bSgiJFpvZE5hbm9JRCIsKGUsdCk9PntpZih0Lmxlbmd0aCE9PXZvaWQgMCYmKCFOdW1iZXIuaXNJbnRlZ2VyKHQubGVuZ3RoKXx8dC5sZW5ndGg8MSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5hbm9pZCBsZW5ndGg6ICR7dC5sZW5ndGh9YCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXQubGVuZ3RoPT09dm9pZCAwP2NwOmxwKHQubGVuZ3RoKSksdGUuaW5pdChlLHQpfSksZ2g9bSgiJFpvZENVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW9wKSx0ZS5pbml0KGUsdCl9KSxiaD1tKCIkWm9kQ1VJRDIiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXNwKSx0ZS5pbml0KGUsdCl9KSx2aD1tKCIkWm9kVUxJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49cnApLHRlLmluaXQoZSx0KX0pLHloPW0oIiRab2RYSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWlwKSx0ZS5pbml0KGUsdCl9KSwkaD1tKCIkWm9kS1NVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWFwKSx0ZS5pbml0KGUsdCl9KSxraD1tKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXhwKHQpKSx0ZS5pbml0KGUsdCl9KSx3aD1tKCIkWm9kSVNPRGF0ZSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49VHApLHRlLmluaXQoZSx0KX0pLF9oPW0oIiRab2RJU09UaW1lIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj16cCh0KSksdGUuaW5pdChlLHQpfSksU2g9bSgiJFpvZElTT0R1cmF0aW9uIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj11cCksdGUuaW5pdChlLHQpfSksVGg9bSgiJFpvZElQdjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWZwKSx0ZS5pbml0KGUsdCl9KSxwdj0vXlswLTlhLWZBLUY6Ll0rJC87ZnVuY3Rpb24gbWEoZSl7cmV0dXJuIHB2LnRlc3QoZSk/aGEoYGh0dHA6Ly9bJHtlfV1gKTohMX1jb25zdCB6aD1tKCIkWm9kSVB2NiIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49Z3ApLHRlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e21hKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLHhoPW0oIiRab2RNQUMiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWJwKHQuZGVsaW1pdGVyKSksdGUuaW5pdChlLHQpfSksSWg9bSgiJFpvZENJRFJ2NCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49dnApLHRlLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEFoKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLyIpO2lmKHQubGVuZ3RoIT09MilyZXR1cm4hMTtjb25zdFtuLG9dPXQ7aWYoIW8pcmV0dXJuITE7Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuYCR7c31gIT09b3x8czwwfHxzPjEyOD8hMTptYShuKX1jb25zdCBDaD1tKCIkWm9kQ0lEUnY2IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj15cCksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57QWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KTtmdW5jdGlvbiBmYShlKXtpZihlPT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KGUpfHxlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IFBoPS9eWzAtOWEtekEtWisvXSo9ezAsMn0kLyxFaD1tKCIkWm9kQmFzZTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1QaCksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57ZmEobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxnYT0vXltBLVphLXowLTlfLV0qJC87ZnVuY3Rpb24gUmgoZSl7aWYoIWdhLnRlc3QoZSkpcmV0dXJuITE7Y29uc3QgdD1lLnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLG49dC5wYWRFbmQoTWF0aC5jZWlsKHQubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gZmEobil9Y29uc3QgT2g9bSgiJFpvZEJhc2U2NFVSTCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49Z2EpLHRlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e1JoKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTmg9bSgiJFpvZEUxNjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXdwKSx0ZS5pbml0KGUsdCl9KSxodj0vWy0gXS9nO2Z1bmN0aW9uIG12KGUpe2xldCB0PWUubGVuZ3RoLG49MSxvPTA7Zm9yKDt0Oyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoLS10KS00ODtuXj0xLG8rPW4/WzAsMiw0LDYsOCwxLDMsNSw3LDldW3NdOnN9cmV0dXJuIG8lMTA9PT0wfWZ1bmN0aW9uIFpoKGUpe3JldHVybiByYS50ZXN0KGUpP212KGUucmVwbGFjZShodiwiIikpOiExfWNvbnN0IGpoPW0oIiRab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1yYSksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Wmgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNyZWRpdF9jYXJkIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pO2Z1bmN0aW9uIGZ2KGUpe2xldCB0PTA7Y29uc3Qgbj1lLmxlbmd0aDtmb3IobGV0IG89NDtvPG47bysrKXtjb25zdCBzPWUuY2hhckNvZGVBdChvKTt0PShzPj02NT90KjEwMCsocy01NSk6dCoxMCsocy00OCkpJTk3fWZvcihsZXQgbz0wO288NDtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO3Q9KHM+PTY1P3QqMTAwKyhzLTU1KTp0KjEwKyhzLTQ4KSklOTd9cmV0dXJuIHQ9PT0xfWZ1bmN0aW9uIE1oKGUpe3JldHVybiBpYS50ZXN0KGUpP2Z2KGUpOiExfWNvbnN0IHFoPW0oIiRab2RJQkFOIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1pYSksdGUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57TWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImliYW4iLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gTGgoZSx0PW51bGwpe3RyeXtjb25zdCBuPWUuc3BsaXQoIi4iKTtpZihuLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109bjtpZighbylyZXR1cm4hMTtjb25zdCBzPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIHMmJnM/LnR5cCE9PSJKV1QifHwhcy5hbGd8fHQmJighKCJhbGciaW4gcyl8fHMuYWxnIT09dCkpfWNhdGNoe3JldHVybiExfX1jb25zdCBEaD1tKCIkWm9kSldUIiwoZSx0KT0+e3RlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e0xoKG4udmFsdWUsdC5hbGcpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksQmg9bSgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9Pnt0ZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt0LmZuKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnQuZm9ybWF0LGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksYmE9bSgiJFpvZE51bWJlciIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1IcyxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT1OdW1iZXIobi52YWx1ZSl9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtpZih0eXBlb2Ygcz09Im51bWJlciImJiFOdW1iZXIuaXNOYU4ocykmJk51bWJlci5pc0Zpbml0ZShzKSlyZXR1cm4gbjtjb25zdCByPXR5cGVvZiBzPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4ocyk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKHMpP3ZvaWQgMDpTdHJpbmcocyk6dm9pZCAwO3JldHVybiBuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplLC4uLnI/e3JlY2VpdmVkOnJ9Ont9fSksbn19KSxGaD1tKCIkWm9kTnVtYmVyRm9ybWF0IiwoZSx0KT0+e3FwLmluaXQoZSx0KSxiYS5pbml0KGUsdCl9KSx2YT1tKCIkWm9kQm9vbGVhbiIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1FcCxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT0hIW4udmFsdWV9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJib29sZWFuInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLHlhPW0oIiRab2RCaWdJbnQiLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49Q3AsZS5fem9kLnBhcnNlPShuLG8pPT57aWYodC5jb2VyY2UpdHJ5e24udmFsdWU9QmlnSW50KG4udmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIG4udmFsdWU9PSJiaWdpbnQifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbn19KSxVaD1tKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSx0KT0+e0xwLmluaXQoZSx0KSx5YS5pbml0KGUsdCl9KSxIaD1tKCIkWm9kU3ltYm9sIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJzeW1ib2wifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxXaD1tKCIkWm9kVW5kZWZpbmVkIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPU9wLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz4idSJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFZoPW0oIiRab2ROdWxsIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPVJwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gcz09PW51bGx8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxKaD1tKCIkWm9kQW55IiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT1uPT5ufSksS2g9bSgiJFpvZFVua25vd24iLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPW49Pm59KSxHaD1tKCIkWm9kTmV2ZXIiLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT4obi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbil9KSxZaD1tKCIkWm9kVm9pZCIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBzPiJ1Inx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFFoPW0oIiRab2REYXRlIiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPW5ldyBEYXRlKG4udmFsdWUpfWNhdGNoe31jb25zdCBzPW4udmFsdWUscj1zIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gciYmIU51bWJlci5pc05hTihzLmdldFRpbWUoKSl8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsLi4ucj97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6ZX0pLG59fSk7ZnVuY3Rpb24gUHUoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSksdC52YWx1ZVtuXT1lLnZhbHVlfWNvbnN0IFhoPW0oIiRab2RBcnJheSIsKGUsdCk9PntNLmluaXQoZSx0KTtjb25zdCBuPVNlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLGluc3Q6ZX0pLG87by52YWx1ZT1uP24uYWxsb2MoZSxvLEFycmF5KHIubGVuZ3RoKSxzKTpBcnJheShyLmxlbmd0aCk7Y29uc3QgaT1bXSxhPXM/LmFib3J0RWFybHk7Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2NvbnN0IGQ9clt1XSxwPXQuZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKWkucHVzaChwLnRoZW4oaD0+UHUoaCxvLHUpKSk7ZWxzZSBpZihQdShwLG8sdSksYSYmcC5pc3N1ZXMubGVuZ3RoIT09MCYmeGUocCkpYnJlYWt9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gZ3MoZSx0LG4sbyxzLHIpe2NvbnN0IGk9biBpbiBvLGE9cj09PSJvcHRpb25hbCI7aWYoISghaSYmYSYmcz09PSJvcHRpb25hbCIpKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKHMhPT12b2lkIDAmJmEmJiFpKXJldHVybjt0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKX1pZighaSYmcz09PXZvaWQgMCl7ZS5pc3N1ZXMubGVuZ3RofHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W25dfSk7cmV0dXJufWUudmFsdWU9PT12b2lkIDA/KGl8fHM9PT0iZGVmYXVsdGVkIiYmIWEpJiYodC52YWx1ZVtuXT12b2lkIDApOnQudmFsdWVbbl09ZS52YWx1ZX19Y29uc3QgZ3Y9W107ZnVuY3Rpb24gZW0oZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlLnNoYXBlKSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZS5zaGFwZSksbz1uLmxlbmd0aD9uOmd2LHM9by5sZW5ndGg/Wy4uLnQsLi4ub106dDtmb3IoY29uc3QgaSBvZiBzKWlmKCFlLnNoYXBlPy5baV0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtTdHJpbmcoaSl9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1OZChlLnNoYXBlKTtyZXR1cm57Li4uZSxhbGxLZXlzOnMsc3ltYm9sS2V5czpvLGtleVNldDpuZXcgU2V0KHQpLG51bUtleXM6dC5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIHRtKGUsdCxuLG8scyxyLGkpe2NvbnN0IGE9W10sdT1zLmtleVNldCxkPXMuY2F0Y2hhbGwuX3pvZCxwPWQuZGVmLnR5cGUsaD1kLm9wdGluLGY9ZC5vcHRvdXQ7bGV0ICQ9MDtmb3IoY29uc3QgayBpbiB0KXtpZihpJiZuLmlzc3Vlcy5sZW5ndGghPT0kKXtpZih4ZShuLCQpKWJyZWFrOyQ9bi5pc3N1ZXMubGVuZ3RofWlmKHUuaGFzKGspKWNvbnRpbnVlO2lmKGs9PT0iX19wcm90b19fIil7cD09PSJuZXZlciImJmEucHVzaChrKTtjb250aW51ZX1pZihwPT09Im5ldmVyIil7YS5wdXNoKGspO2NvbnRpbnVlfWNvbnN0IHo9ZC5ydW4oe3ZhbHVlOnRba10saXNzdWVzOltdfSxvKTt6IGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goei50aGVuKEE9PmdzKEEsbixrLHQsaCxmKSkpOmdzKHosbixrLHQsaCxmKX1yZXR1cm4gYS5sZW5ndGgmJm4uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6dCxpbnN0OnIsY29udGludWU6ITB9KSxlLmxlbmd0aD9Qcm9taXNlLmFsbChlKS50aGVuKCgpPT5uKTpufWNvbnN0IG5tPW0oIiRab2RPYmplY3QiLChlLHQpPT57TS5pbml0KGUsdCk7Y29uc3Qgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsInNoYXBlIiksbz1uPy5nZXQ/bi5nZXQucmF3OnQuc2hhcGU/P3t9O2lmKG8pe2NvbnN0IGQ9KCk9Pntjb25zdCBwPXsuLi5vfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNoYXBlIix7dmFsdWU6cH0pLGQucmF3PXAscH07ZC5yYXc9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2hhcGUiLHtnZXQ6ZH0pfWNvbnN0IHM9Rm4oKCk9PmVtKHQpKTtGKGUsInByb3BWYWx1ZXMiLGQ9Pntjb25zdCBwPWQuZGVmLnNoYXBlLGg9e307Zm9yKGNvbnN0IGYgaW4gcCl7Y29uc3QgJD1wW2ZdLl96b2Q7aWYoJC52YWx1ZXMpe09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLGYpfHxSdChoLGYsbmV3IFNldCk7Zm9yKGNvbnN0IGsgb2YgJC52YWx1ZXMpaFtmXS5hZGQoayk7JC5vcHRpbiE9PXZvaWQgMCYmaFtmXS5hZGQodm9pZCAwKX19cmV0dXJuIGh9KTtjb25zdCByPVd0LGk9dC5jYXRjaGFsbDtsZXQgYTtjb25zdCB1PVNlLm1lbW9pemVyO3U/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KGQscCk9PnthPz8oYT1zLnZhbHVlKTtjb25zdCBoPWQudmFsdWU7aWYoIXIoaCkpcmV0dXJuIGQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCxpbnN0OmV9KSxkO2QudmFsdWU9dT91LmFsbG9jKGUsZCx7fSxwKTp7fTtjb25zdCBmPVtdLCQ9YS5zaGFwZSxrPXA/LmFib3J0RWFybHk7bGV0IHo9ZC5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCBBIG9mIGEuYWxsS2V5cyl7aWYoayYmZC5pc3N1ZXMubGVuZ3RoIT09eil7aWYoeGUoZCx6KSlicmVhazt6PWQuaXNzdWVzLmxlbmd0aH1pZihBPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgeD0kW0FdLFQ9eC5fem9kLm9wdGluLFo9eC5fem9kLm9wdG91dCxzZT14Ll96b2QucnVuKHt2YWx1ZTpoW0FdLGlzc3VlczpbXX0scCk7c2UgaW5zdGFuY2VvZiBQcm9taXNlP2YucHVzaChzZS50aGVuKEo9PmdzKEosZCxBLGgsVCxaKSkpOmdzKHNlLGQsQSxoLFQsWil9cmV0dXJuIGk/dG0oZixoLGQscCxzLnZhbHVlLGUsaz09PSEwKTpmLmxlbmd0aD9Qcm9taXNlLmFsbChmKS50aGVuKCgpPT5kKTpkfX0pLG9tPW0oIiRab2RPYmplY3RKSVQiLChlLHQpPT57bm0uaW5pdChlLHQpO2NvbnN0IG49ZS5fem9kLnBhcnNlLG89Rm4oKCk9PmVtKHQpKSxzPVNlLm1lbW9pemVyLHI9JD0+e2NvbnN0IGs9by52YWx1ZSx6PWsuc3ltYm9sS2V5cyxBPW5ldyBvaChbInBheWxvYWQiLCJjdHgiXSx7c2hhcGU6JCxpbnN0OmUsbWVtbzpzLHN5bXM6en0pLHg9Sj0+YHNoYXBlWyR7Sn1dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Sn1dLCBpc3N1ZXM6IFtdIH0sIGN0eClgLFQ9KEosVik9PmAKICAgICAgICAgIGxldCAke0p9X2FiID0gZmFsc2U7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICR7Sn0uaXNzdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IGlzcyA9ICR7Sn0uaXNzdWVzW2ldOwogICAgICAgICAgICBpc3MucGF0aCA9IGlzcy5wYXRoID8gWyR7Vn0sIC4uLmlzcy5wYXRoXSA6IFske1Z9XTsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaChpc3MpOwogICAgICAgICAgICBpZiAoaXNzLmNvbnRpbnVlICE9PSB0cnVlKSAke0p9X2FiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgke0p9X2FiICYmIGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH1gO0Eud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBaPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHNlPTA7Zm9yKGNvbnN0IEogb2Ygay5hbGxLZXlzKVpbSl09YGtleV8ke3NlKyt9YDtBLndyaXRlKHM/ImNvbnN0IG5ld1Jlc3VsdCA9IG1lbW8uYWxsb2MoaW5zdCwgcGF5bG9hZCwge30sIGN0eCk7IjoiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEogb2Ygay5hbGxLZXlzKXtpZihKPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgVj1aW0pdLEM9dHlwZW9mIEo9PSJzeW1ib2wiP2BzeW1zWyR7ei5pbmRleE9mKEopfV1gOlBkKEopLEdlPWAke0N9IGluIGlucHV0YCx2dD0kW0pdLGp0PXZ0Py5fem9kPy5vcHRpbixTbj1qdCE9PXZvaWQgMCxXPXZ0Py5fem9kPy5vcHRvdXQ9PT0ib3B0aW9uYWwiO2lmKEEud3JpdGUoYGNvbnN0ICR7Vn0gPSAke3goQyl9O2ApLFNuJiZXKXtjb25zdCBHbz1qdD09PSJvcHRpb25hbCI/YCR7Vn1fcHJlc2VudGA6YCR7Vn0udmFsdWUgIT09IHVuZGVmaW5lZCB8fCAke1Z9X3ByZXNlbnRgO0Eud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Vn1fcHJlc2VudCA9ICR7R2V9OwogICAgICAgIGlmICghJHtWfS5pc3N1ZXMubGVuZ3RoIHx8ICR7Vn1fcHJlc2VudCkgewogICAgICAgICAgaWYgKCR7Vn0uaXNzdWVzLmxlbmd0aCkgeyR7VChWLEMpfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICgke0dvfSkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtDfV0gPSAke1Z9LnZhbHVlOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgIGApfWVsc2UgU24/KEEud3JpdGUoYAogICAgICAgIGlmICgke1Z9Lmlzc3Vlcy5sZW5ndGgpIHske1QoVixDKX0KICAgICAgICB9CiAgICAgIGApLGp0PT09ImRlZmF1bHRlZCI/QS53cml0ZShgbmV3UmVzdWx0WyR7Q31dID0gJHtWfS52YWx1ZTtgKTpBLndyaXRlKGAKICAgICAgICBpZiAoJHtWfS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICR7R2V9KSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtDfV0gPSAke1Z9LnZhbHVlOwogICAgICAgIH0KICAgICAgYCkpOkEud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Vn1fcHJlc2VudCA9ICR7R2V9OwogICAgICAgIGlmICgke1Z9Lmlzc3Vlcy5sZW5ndGgpIHske1QoVixDKX0KICAgICAgICB9CiAgICAgICAgaWYgKCEke1Z9X3ByZXNlbnQgJiYgISR7Vn0uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7CiAgICAgICAgICAgIGNvZGU6ICJpbnZhbGlkX3R5cGUiLAogICAgICAgICAgICBleHBlY3RlZDogIm5vbm9wdGlvbmFsIiwKICAgICAgICAgICAgaW5wdXQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgcGF0aDogWyR7Q31dCiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChjdHggJiYgY3R4LmFib3J0RWFybHkpIHsKICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsKICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHtWfV9wcmVzZW50KSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtDfV0gPSAke1Z9LnZhbHVlOwogICAgICAgIH0KCiAgICAgIGApfXJldHVybiBBLndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLEEud3JpdGUoInJldHVybiBwYXlsb2FkOyIpLEEuY29tcGlsZSgpfTtsZXQgaTtjb25zdCBhPVd0LHU9IVNlLmppdGxlc3MscD11JiZSZC52YWx1ZSxoPXQuY2F0Y2hhbGw7bGV0IGY7ZS5fem9kLnBhcnNlPSgkLGspPT57Zj8/KGY9by52YWx1ZSk7Y29uc3Qgej0kLnZhbHVlO3JldHVybiBhKHopP3UmJnAmJms/LmFzeW5jPT09ITEmJmsuaml0bGVzcyE9PSEwPyhpfHwoaT1yKHQuc2hhcGUpKSwkPWkoJCxrKSxoP3RtKFtdLHosJCxrLGYsZSxrPy5hYm9ydEVhcmx5PT09ITApOiQpOm4oJCxrKTooJC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp6LGluc3Q6ZX0pLCQpfX0pO2Z1bmN0aW9uIEV1KGUsdCxuLG8pe2Zvcihjb25zdCByIG9mIGUpaWYoci5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gdC52YWx1ZT1yLnZhbHVlLHQ7Y29uc3Qgcz1lLmZpbHRlcihyPT4heGUocikpO3JldHVybiBzLmxlbmd0aD09PTE/KHQudmFsdWU9c1swXS52YWx1ZSxzWzBdKToodC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOmUubWFwKHI9PnIuaXNzdWVzLm1hcChpPT5xZShpLG8saGUoKSkpKX0pLHQpfWNvbnN0IFZzPW0oIiRab2RVbmlvbiIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsIm9wdGluIixvPT5vLmRlZi5vcHRpb25zLnNvbWUocz0+cy5fem9kLm9wdGluPT09ImRlZmF1bHRlZCIpPyJkZWZhdWx0ZWQiOm8uZGVmLm9wdGlvbnMuc29tZShzPT5zLl96b2Qub3B0aW4hPT12b2lkIDApPyJvcHRpb25hbCI6dm9pZCAwKSxGKGUsIm9wdG91dCIsbz0+by5kZWYub3B0aW9ucy5zb21lKHM9PnMuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksRihlLCJ2YWx1ZXMiLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG8uZGVmLm9wdGlvbnMuZmxhdE1hcChzPT5BcnJheS5mcm9tKHMuX3pvZC52YWx1ZXMpKSl9KSxGKGUsInBhdHRlcm4iLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgcz1vLmRlZi5vcHRpb25zLm1hcChyPT5yLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtzLm1hcChyPT5sdChyLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IG49dC5vcHRpb25zLmxlbmd0aD09PTE/dC5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7ZS5fem9kLnBhcnNlPShvLHMpPT57aWYobilyZXR1cm4gbihvLHMpO2xldCByPSExO2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgdC5vcHRpb25zKXtjb25zdCB1PWEuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxzKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSlpLnB1c2godSkscj0hMDtlbHNle2lmKHUuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIHU7aS5wdXNoKHUpfX1yZXR1cm4gcj9Qcm9taXNlLmFsbChpKS50aGVuKGE9PkV1KGEsbyxlLHMpKTpFdShpLG8sZSxzKX19KTtmdW5jdGlvbiBSdShlLHQsbixvKXtjb25zdCBzPVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uaXNzdWVzLmxlbmd0aD09PTAmJnMucHVzaChyKTtyZXR1cm4gcy5sZW5ndGg9PT0xPyh0LnZhbHVlPWVbc1swXV0udmFsdWUsdCk6KHMubGVuZ3RoPT09MD90Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDp0LnZhbHVlLGluc3Q6bixlcnJvcnM6ZS5tYXAocj0+ci5pc3N1ZXMubWFwKGk9PnFlKGksbyxoZSgpKSkpfSk6dC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOltdLGluY2x1c2l2ZTohMSxtYXRjaGVzOnN9KSx0KX1jb25zdCBzbT1tKCIkWm9kWG9yIiwoZSx0KT0+e1ZzLmluaXQoZSx0KSx0LmluY2x1c2l2ZT0hMTtjb25zdCBuPXQub3B0aW9ucy5sZW5ndGg9PT0xP3Qub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO2UuX3pvZC5wYXJzZT0obyxzKT0+e2lmKG4pcmV0dXJuIG4obyxzKTtsZXQgcj0hMTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIHQub3B0aW9ucyl7Y29uc3QgdT1hLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0scyk7dSBpbnN0YW5jZW9mIFByb21pc2U/KGkucHVzaCh1KSxyPSEwKTppLnB1c2godSl9cmV0dXJuIHI/UHJvbWlzZS5hbGwoaSkudGhlbihhPT5SdShhLG8sZSxzKSk6UnUoaSxvLGUscyl9fSk7ZnVuY3Rpb24gJGEoZSx0KXtjb25zdCBuPWUuX3pvZDtsZXQgbz1uLmJhZy5vcHRpb25zTWFwO298fChvPXJtKG4uZGVmKSxuLmJhZy5vcHRpb25zTWFwPW8pO2NvbnN0IHM9by5nZXQodCk7aWYocz09PW51bGwpdGhyb3cgbmV3IEVycm9yKGBBbWJpZ3VvdXMgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcodCl9ImApO3JldHVybiBzfWZ1bmN0aW9uIHJtKGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3QgbiBvZiBlLm9wdGlvbnMpe2NvbnN0IG89bi5fem9kLnByb3BWYWx1ZXM/LltlLmRpc2NyaW1pbmF0b3JdO2lmKCFvfHxvLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtlLm9wdGlvbnMuaW5kZXhPZihuKX0iYCk7Zm9yKGNvbnN0IHMgb2YgbylpZih0LmhhcyhzKSl7aWYocyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7dC5zZXQocyxudWxsKX1lbHNlIHQuc2V0KHMsbil9cmV0dXJuIHR9Y29uc3QgaW09bSgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKGUsdCk9Pnt0LmluY2x1c2l2ZT0hMSxWcy5pbml0KGUsdCk7Y29uc3Qgbj1lLl96b2QucGFyc2U7RihlLCJwcm9wVmFsdWVzIixzPT57Y29uc3Qgcj17fTtsZXQgaT0wO2Zvcihjb25zdCBhIG9mIHMuZGVmLm9wdGlvbnMpe2NvbnN0IHU9YS5fem9kLnByb3BWYWx1ZXM7aWYoIXV8fE9iamVjdC5rZXlzKHUpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3MuZGVmLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7dVtzLmRlZi5kaXNjcmltaW5hdG9yXT8uaGFzKHZvaWQgMCkmJmkrKztmb3IoY29uc3RbZCxwXW9mIE9iamVjdC5lbnRyaWVzKHUpKXtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixkKXx8UnQocixkLG5ldyBTZXQpO2Zvcihjb25zdCBoIG9mIHApcltkXS5hZGQoaCl9fXJldHVybiFzLmRlZi51bmlvbkZhbGxiYWNrJiZpPjEmJnJbcy5kZWYuZGlzY3JpbWluYXRvcl0/LmRlbGV0ZSh2b2lkIDApLHJ9KSx0Lm9wdGlvbnMuZm9yRWFjaCgocyxyKT0+e2NvbnN0IGk9RXMocy5fem9kLmRlZik7aWYoaSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHQuZGlzY3JpbWluYXRvcikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3J9ImApfSk7Y29uc3Qgbz1GbigoKT0+cm0odCkpO2UuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtpZighV3QoaSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6aSxpbnN0OmV9KSxzO2NvbnN0IGE9aT8uW3QuZGlzY3JpbWluYXRvcl0sdT1vLnZhbHVlLmdldChhKTtyZXR1cm4gdSYmKGEhPT12b2lkIDB8fHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIik/dS5fem9kLnJ1bihzLHIpOnQudW5pb25GYWxsYmFja3x8ci5kaXJlY3Rpb249PT0iYmFja3dhcmQiP24ocyxyKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6dC5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSkuZmlsdGVyKGQ9Pm8udmFsdWUuZ2V0KGQpIT09bnVsbCksaW5wdXQ6aSxwYXRoOlt0LmRpc2NyaW1pbmF0b3JdLGluc3Q6ZX0pLHMpfX0pLGFtPW0oIiRab2RJbnRlcnNlY3Rpb24iLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlLHI9dC5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyksaT10LnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlfHxpIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcixpXSkudGhlbigoW3UsZF0pPT5PdShuLHUsZCkpOk91KG4scixpKX19KTtmdW5jdGlvbiBicyhlLHQpe2lmKGU9PT10KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSYmK2U9PSt0KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGR0KGUpJiZkdCh0KSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPU9iamVjdC5rZXlzKGUpLmZpbHRlcihyPT5uLmluZGV4T2YocikhPT0tMSkscz17Li4uZSwuLi50fTtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywiX19wcm90b19fIikmJmRlbGV0ZSBzLl9fcHJvdG9fXztmb3IoY29uc3QgciBvZiBvKXtpZihyPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgaT1icyhlW3JdLHRbcl0pO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5pLm1lcmdlRXJyb3JQYXRoXX07c1tyXT1pLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6c319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IG49W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9ZVtvXSxyPXRbb10saT1icyhzLHIpO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5pLm1lcmdlRXJyb3JQYXRoXX07bi5wdXNoKGkuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6bn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBPdShlLHQsbil7Y29uc3Qgbz1uZXcgTWFwO2xldCBzO2NvbnN0IHI9bmV3IE1hcCxpPShkLHApPT57bGV0IGg7aWYoZC5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIiYmIWQucGF0aD8ubGVuZ3RoKXM/PyhzPWQpLGg9ZC5rZXlzO2Vsc2UgaWYoZC5jb2RlPT09ImludmFsaWRfa2V5IiYmZC5vcmlnaW49PT0icmVjb3JkIiYmZC5wYXRoPy5sZW5ndGg9PT0xKXtjb25zdCBmPVN0cmluZyhkLnBhdGhbMF0pO3IuaGFzKGYpfHxyLnNldChmLGQpLGg9W2ZdfWVsc2UgcmV0dXJuITE7Zm9yKGNvbnN0IGYgb2YgaClvLmhhcyhmKXx8by5zZXQoZix7fSksby5nZXQoZilbcF09ITA7cmV0dXJuITB9O2Zvcihjb25zdCBkIG9mIHQuaXNzdWVzKWkoZCwibCIpfHxlLmlzc3Vlcy5wdXNoKGQpO2Zvcihjb25zdCBkIG9mIG4uaXNzdWVzKWkoZCwiciIpfHxlLmlzc3Vlcy5wdXNoKGQpO2NvbnN0IGE9Wy4uLm9dLmZpbHRlcigoWyxkXSk9PmQubCYmZC5yKS5tYXAoKFtkXSk9PmQpO2lmKGEubGVuZ3RoKXtjb25zdCBkPXM/YS5maWx0ZXIocD0+cy5rZXlzLmluY2x1ZGVzKHApKTpbXTtkLmxlbmd0aCYmZS5pc3N1ZXMucHVzaCh7Li4ucyxrZXlzOmR9KTtmb3IoY29uc3QgcCBvZiBhKSFkLmluY2x1ZGVzKHApJiZyLmhhcyhwKSYmZS5pc3N1ZXMucHVzaChyLmdldChwKSl9Y29uc3QgdT1icyh0LnZhbHVlLG4udmFsdWUpO2lmKCF1LnZhbGlkKXtpZih4ZShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KHUubWVyZ2VFcnJvclBhdGgpfWApfXJldHVybiBlLnZhbHVlPXUuZGF0YSxlfWNvbnN0IGthPW0oIiRab2RUdXBsZSIsKGUsdCk9PntNLmluaXQoZSx0KTtjb25zdCBuPXQuaXRlbXMsbz1TZS5tZW1vaXplcjtvPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShzLHIpPT57Y29uc3QgaT1zLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtpbnB1dDppLGluc3Q6ZSxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzO3MudmFsdWU9bz9vLmFsbG9jKGUscyxbXSxyKTpbXTtjb25zdCBhPVtdLHU9TnUobiwib3B0aW4iKSxkPU51KG4sIm9wdG91dCIpO2lmKCF0LnJlc3Qpe2lmKGkubGVuZ3RoPHUpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTp1LGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6ZSxvcmlnaW46ImFycmF5In0pLHM7aS5sZW5ndGg+bi5sZW5ndGgmJnMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDplLG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgcD1uZXcgQXJyYXkobi5sZW5ndGgpLGg9dC5yZXN0P3I/LmFib3J0RWFybHk6dm9pZCAwO2xldCBmPSExO2ZvcihsZXQgJD0wOyQ8bi5sZW5ndGg7JCsrKXtjb25zdCBrPW5bJF0uX3pvZC5ydW4oe3ZhbHVlOmlbJF0saXNzdWVzOltdfSxyKTtrIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goay50aGVuKHo9PntwWyRdPXp9KSk6KHBbJF09ayxoJiYhZiYmay5pc3N1ZXMubGVuZ3RoJiYoZj14ZShrKSkpfWlmKHQucmVzdCYmIWYpe2xldCAkPW4ubGVuZ3RoLTE7Y29uc3Qgaz1pLnNsaWNlKG4ubGVuZ3RoKTtsZXQgej1zLmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0IEEgb2Ygayl7aWYoaCYmcy5pc3N1ZXMubGVuZ3RoIT09eil7aWYoeGUocyx6KSlicmVhazt6PXMuaXNzdWVzLmxlbmd0aH0kKys7Y29uc3QgeD10LnJlc3QuX3pvZC5ydW4oe3ZhbHVlOkEsaXNzdWVzOltdfSxyKTt4IGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goeC50aGVuKFQ9Plp1KFQscywkKSkpOlp1KHgscywkKX19cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pmp1KHAscyxuLGksZCkpOmp1KHAscyxuLGksZCl9fSk7ZnVuY3Rpb24gTnUoZSx0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZighKHQ9PT0ib3B0aW4iP2Vbbl0uX3pvZC5vcHRpbiE9PXZvaWQgMDplW25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIikpcmV0dXJuIG4rMTtyZXR1cm4gMH1mdW5jdGlvbiBadShlLHQsbil7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKSx0LnZhbHVlW25dPWUudmFsdWV9ZnVuY3Rpb24ganUoZSx0LG4sbyxzKXtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgaT1lW3JdLGE9cjxvLmxlbmd0aDtpZighYSYmcj49cyYmbltyXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7dC52YWx1ZS5sZW5ndGg9cjticmVha31pZihpLmlzc3Vlcy5sZW5ndGgpe2lmKCFhJiZyPj1zKXt0LnZhbHVlLmxlbmd0aD1yO2JyZWFrfXQuaXNzdWVzLnB1c2goLi4uWmUocixpLmlzc3VlcykpfXQudmFsdWVbcl09aS52YWx1ZX1mb3IobGV0IHI9dC52YWx1ZS5sZW5ndGgtMTtyPj1vLmxlbmd0aCYmKG5bcl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZ0LnZhbHVlW3JdPT09dm9pZCAwKTtyLS0pdC52YWx1ZS5sZW5ndGg9cjtyZXR1cm4gdH1jb25zdCBjbT1tKCIkWm9kUmVjb3JkIiwoZSx0KT0+e00uaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighZHQocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cixpbnN0OmV9KSxvO2NvbnN0IGk9W10sYT10LmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSYmIXQucGFydGlhbCl7by52YWx1ZT1uP24uYWxsb2MoZSxvLHt9LHMpOnt9O2NvbnN0IHU9bmV3IFNldDtmb3IoY29uc3QgcCBvZiBhKWlmKHR5cGVvZiBwPT0ic3RyaW5nInx8dHlwZW9mIHA9PSJudW1iZXIifHx0eXBlb2YgcD09InN5bWJvbCIpe2lmKHUuYWRkKHR5cGVvZiBwPT0ibnVtYmVyIj9wLnRvU3RyaW5nKCk6cCkscD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0IGg9dC5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYoaC5pc3N1ZXMubGVuZ3RoKXtvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpoLmlzc3Vlcy5tYXAoaz0+cWUoayxzLGhlKCkpKSxpbnB1dDpwLHBhdGg6W3BdLGluc3Q6ZX0pO2NvbnRpbnVlfWNvbnN0IGY9aC52YWx1ZTtpZihmPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgJD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cltwXSxpc3N1ZXM6W119LHMpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaCgkLnRoZW4oaz0+e2suaXNzdWVzLmxlbmd0aCYmby5pc3N1ZXMucHVzaCguLi5aZShwLGsuaXNzdWVzKSksby52YWx1ZVtmXT1rLnZhbHVlfSkpOigkLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUocCwkLmlzc3VlcykpLG8udmFsdWVbZl09JC52YWx1ZSl9bGV0IGQ7Zm9yKGNvbnN0IHAgaW4gcilpZighdS5oYXMocCkpaWYodC5tb2RlPT09Imxvb3NlIil7aWYocD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO28udmFsdWVbcF09cltwXX1lbHNlIGQ9ZD8/W10sZC5wdXNoKHApO2QmJmQubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOmQsY29udGludWU6ITB9KX1lbHNle28udmFsdWU9bj9uLmFsbG9jKGUsbyx7fSxzKTp7fTtsZXQgdTtmb3IoY29uc3QgZCBvZiBSZWZsZWN0Lm93bktleXMocikpe2lmKGQ9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChyLGQpKWNvbnRpbnVlO2xldCBwPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIiYmSHMudGVzdChkKSYmcC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBrPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKGQpLGlzc3VlczpbXX0scyk7aWYoayBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7ay5pc3N1ZXMubGVuZ3RoPT09MCYmKHA9ayl9aWYocC5pc3N1ZXMubGVuZ3RoKXt0Lm1vZGU9PT0ibG9vc2UiP28udmFsdWVbZF09cltkXTphPyh1PXU/P1tdLHUucHVzaChkKSk6by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6cC5pc3N1ZXMubWFwKGs9PnFlKGsscyxoZSgpKSksaW5wdXQ6ZCxwYXRoOltkXSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBmPXAudmFsdWU7aWYoZj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0ICQ9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnJbZF0saXNzdWVzOltdfSxzKTskIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goJC50aGVuKGs9PntrLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUoZCxrLmlzc3VlcykpLG8udmFsdWVbZl09ay52YWx1ZX0pKTooJC5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlplKGQsJC5pc3N1ZXMpKSxvLnZhbHVlW2ZdPSQudmFsdWUpfXUmJnUubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOnUsY29udGludWU6ITB9KX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+byk6b319KSxsbT1tKCIkWm9kTWFwIiwoZSx0KT0+e00uaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighKHIgaW5zdGFuY2VvZiBNYXApKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztjb25zdCBpPVtdO28udmFsdWU9bj9uLmFsbG9jKGUsbyxuZXcgTWFwLHMpOm5ldyBNYXA7Y29uc3QgYT1zPy5hYm9ydEVhcmx5O2xldCB1PW8uaXNzdWVzLmxlbmd0aDtmb3IoY29uc3RbZCxwXW9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PXUpe2lmKHhlKG8sdSkpYnJlYWs7dT1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgaD10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmQsaXNzdWVzOltdfSxzKSxmPXQudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aCBpbnN0YW5jZW9mIFByb21pc2V8fGYgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbaCxmXSkudGhlbigoWyQsa10pPT57TXUoJCxrLG8sZCxyLGUscyl9KSk6TXUoaCxmLG8sZCxyLGUscyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gTXUoZSx0LG4sbyxzLHIsaSl7ZS5pc3N1ZXMubGVuZ3RoJiYoaHMuaGFzKHR5cGVvZiBvKT9uLmlzc3Vlcy5wdXNoKC4uLlplKG8sZS5pc3N1ZXMpKTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OnMsaW5zdDpyLGlzc3VlczplLmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGhlKCkpKX0pKSx0Lmlzc3Vlcy5sZW5ndGgmJihocy5oYXModHlwZW9mIG8pP24uaXNzdWVzLnB1c2goLi4uWmUobyx0Lmlzc3VlcykpOm4uaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OnMsaW5zdDpyLGtleTpvLGlzc3Vlczp0Lmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGhlKCkpKX0pKSxuLnZhbHVlLnNldChlLnZhbHVlLHQudmFsdWUpfWNvbnN0IHVtPW0oIiRab2RTZXQiLChlLHQpPT57TS5pbml0KGUsdCk7Y29uc3Qgbj1TZS5tZW1vaXplcjtuPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO2lmKCEociBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OnIsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO2NvbnN0IGk9W107by52YWx1ZT1uP24uYWxsb2MoZSxvLG5ldyBTZXQscyk6bmV3IFNldDtjb25zdCBhPXM/LmFib3J0RWFybHk7bGV0IHU9by5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCBkIG9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PXUpe2lmKHhlKG8sdSkpYnJlYWs7dT1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgcD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LHMpO3AgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChwLnRoZW4oaD0+cXUoaCxvKSkpOnF1KHAsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gcXUoZSx0KXtlLmlzc3Vlcy5sZW5ndGgmJnQuaXNzdWVzLnB1c2goLi4uZS5pc3N1ZXMpLHQudmFsdWUuYWRkKGUudmFsdWUpfWNvbnN0IGRtPW0oIiRab2RFbnVtIiwoZSx0KT0+e00uaW5pdChlLHQpO2NvbnN0IG49aGkodC5lbnRyaWVzKSxvPW5ldyBTZXQobik7ZS5fem9kLnZhbHVlcz1vLEYoZSwicGF0dGVybiIscz0+e2NvbnN0IHI9aGkocy5kZWYuZW50cmllcykuZmlsdGVyKGk9PmhzLmhhcyh0eXBlb2YgaSkpO3JldHVybiBuZXcgUmVnRXhwKHIubGVuZ3RoP2BeKCR7ci5tYXAoaT0+UWUoaS50b1N0cmluZygpKSkuam9pbigifCIpfSkkYDoiXlteXFxzXFxTXSQiKX0pLGUuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtyZXR1cm4gby5oYXMoaSl8fHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLGlucHV0OmksaW5zdDplfSksc319KSxwbT1tKCIkWm9kTGl0ZXJhbCIsKGUsdCk9PntNLmluaXQoZSx0KTtjb25zdCBuPW5ldyBTZXQodC52YWx1ZXMpO2UuX3pvZC52YWx1ZXM9bixGKGUsInBhdHRlcm4iLG89Pntjb25zdCBzPW8uZGVmLnZhbHVlcztyZXR1cm4gbmV3IFJlZ0V4cChzLmxlbmd0aD9gXigke3MubWFwKHI9PnR5cGVvZiByPT0ic3RyaW5nIj9RZShyKTpyP1FlKHIudG9TdHJpbmcoKSk6U3RyaW5nKHIpKS5qb2luKCJ8Iil9KSRgOiJeW15cXHNcXFNdJCIpfSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO3JldHVybiBuLmhhcyhyKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQudmFsdWVzLGlucHV0OnIsaW5zdDplfSksb319KSxobT1tKCIkWm9kRmlsZSIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHMgaW5zdGFuY2VvZiBGaWxlfHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksbW09bSgiJFpvZFRyYW5zZm9ybSIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixTZS5tZW1vaXplcj8uZ3VhcmQoZSksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBxcyhlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IHM9dC50cmFuc2Zvcm0obi52YWx1ZSxuKTtpZihvLmFzeW5jKXJldHVybihzIGluc3RhbmNlb2YgUHJvbWlzZT9zOlByb21pc2UucmVzb2x2ZShzKSkudGhlbihpPT4obi52YWx1ZT1pLG4pKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgdXQ7cmV0dXJuIG4udmFsdWU9cyxufX0pO2Z1bmN0aW9uIEx1KGUsdCl7cmV0dXJuIGUudmFsdWU9dC5pc3N1ZXMubGVuZ3RoP3ZvaWQgMDp0LnZhbHVlLGV9Y29uc3Qgd2E9bSgiJFpvZE9wdGlvbmFsIiwoZSx0KT0+e00uaW5pdChlLHQpLEYoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLm9wdGluPT09ImRlZmF1bHRlZCI/ImRlZmF1bHRlZCI6Im9wdGlvbmFsIiksZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLEYoZSwidmFsdWVzIixuPT57Y29uc3Qgbz1uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIG8/bmV3IFNldChbLi4ubyx2b2lkIDBdKTp2b2lkIDB9KSxGKGUsInBhdHRlcm4iLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIG8/bmV3IFJlZ0V4cChgXigke2x0KG8uc291cmNlKX0pPyRgKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihuLnZhbHVlPT09dm9pZCAwKXtpZih0LmlubmVyVHlwZS5fem9kLm9wdGluIT09ImRlZmF1bHRlZCIpcmV0dXJuIG47Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZSxpc3N1ZXM6W119LG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+THUobixyKSk6THUobixzKX1yZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX19KSxmbT1tKCIkWm9kRXhhY3RPcHRpb25hbCIsKGUsdCk9Pnt3YS5pbml0KGUsdCksRihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksRihlLCJwYXR0ZXJuIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KG4sbyk9PnQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9KSxnbT1tKCIkWm9kTnVsbGFibGUiLChlLHQpPT57TS5pbml0KGUsdCksRihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pLEYoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEYoZSwicGF0dGVybiIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gbz9uZXcgUmVnRXhwKGBeKCR7bHQoby5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSxlLl96b2QucGFyc2U9KG4sbyk9Pm4udmFsdWU9PT1udWxsP246dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX0pLGJtPW0oIiRab2REZWZhdWx0IiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7aWYobi52YWx1ZT09PXZvaWQgMClyZXR1cm4gbi52YWx1ZT10LmRlZmF1bHRWYWx1ZSxuO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PkR1KHIsdCkpOkR1KHMsdCl9fSk7ZnVuY3Rpb24gRHUoZSx0KXtyZXR1cm4gZS52YWx1ZT09PXZvaWQgMCYmKGUudmFsdWU9dC5kZWZhdWx0VmFsdWUpLGV9Y29uc3Qgdm09bSgiJFpvZFByZWZhdWx0IiwoZSx0KT0+e00uaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fG4udmFsdWU9PT12b2lkIDAmJihuLnZhbHVlPXQuZGVmYXVsdFZhbHVlKSx0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pKX0pLHltPW0oIiRab2ROb25PcHRpb25hbCIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsInZhbHVlcyIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBvP25ldyBTZXQoWy4uLm9dLmZpbHRlcihzPT5zIT09dm9pZCAwKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+QnUocixlKSk6QnUocyxlKX19KTtmdW5jdGlvbiBCdShlLHQpe3JldHVybiFlLmlzc3Vlcy5sZW5ndGgmJmUudmFsdWU9PT12b2lkIDAmJmUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6dH0pLGV9Y29uc3QgJG09bSgiJFpvZFN1Y2Nlc3MiLChlLHQpPT57TS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBxcygiWm9kU3VjY2VzcyIpO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PihuLnZhbHVlPXIuaXNzdWVzLmxlbmd0aD09PTAsbikpOihuLnZhbHVlPXMuaXNzdWVzLmxlbmd0aD09PTAsbil9fSk7ZnVuY3Rpb24gRnUoZSx0LG4sbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8oZS52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnQsdmFsdWU6ZS52YWx1ZSxlcnJvcjp7aXNzdWVzOnQuaXNzdWVzLm1hcChzPT5xZShzLG8saGUoKSkpfSxpbnB1dDplLnZhbHVlfSksZSk6KGUudmFsdWU9dC52YWx1ZSx0Lm1lbW8mJihlLm1lbW89ITApLGUpfWNvbnN0IGttPW0oIiRab2RDYXRjaCIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsIm9wdGluIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiPyJkZWZhdWx0ZWQiOiJvcHRpb25hbCIpLEYoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEYoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpuLnZhbHVlLGlzc3VlczpbXX0sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5GdShuLHIsdCxvKSk6RnUobixzLHQsbyl9fSksd209bSgiJFpvZE5hTiIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PigodHlwZW9mIG4udmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKG4udmFsdWUpKSYmbi5pc3N1ZXMucHVzaCh7aW5wdXQ6bi52YWx1ZSxpbnN0OmUsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLG4pfSksX2E9bSgiJFpvZFBpcGUiLChlLHQpPT57TS5pbml0KGUsdCksRihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmluLl96b2QudmFsdWVzKSxGKGUsIm9wdGluIixuPT5uLmRlZi5pbi5fem9kLm9wdGluKSxGKGUsIm9wdG91dCIsbj0+bi5kZWYub3V0Ll96b2Qub3B0b3V0KSxGKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5ZbyhpLHQuaW4sbykpOllvKHIsdC5pbixvKX1jb25zdCBzPXQuaW4uX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PllvKHIsdC5vdXQsbykpOllvKHMsdC5vdXQsbyl9fSk7ZnVuY3Rpb24gWW8oZSx0LG4pe3JldHVybiBlLmlzc3Vlcy5zb21lKG89Pm8uY29kZSE9PSJ1bnJlY29nbml6ZWRfa2V5cyIpPyhlLmFib3J0ZWQ9ITAsZSk6dC5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LG4pfWNvbnN0IFNhPW0oIiRab2RDb2RlYyIsKGUsdCk9PntNLmluaXQoZSx0KSxGKGUsInZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC52YWx1ZXMpLEYoZSwib3B0aW4iLG49Pm4uZGVmLmluLl96b2Qub3B0aW4pLEYoZSwib3B0b3V0IixuPT5uLmRlZi5vdXQuX3pvZC5vcHRvdXQpLEYoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC5wcm9wVmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IHI9dC5pbi5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oaT0+UW8oaSx0LG8pKTpRbyhyLHQsbyl9ZWxzZXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5RbyhpLHQsbykpOlFvKHIsdCxvKX19fSk7ZnVuY3Rpb24gUW8oZSx0LG4pe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoKG4uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBzPXQudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5vdXQsbikpOlhvKGUscyx0Lm91dCxuKX1lbHNle2NvbnN0IHM9dC5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5pbixuKSk6WG8oZSxzLHQuaW4sbil9fWZ1bmN0aW9uIFhvKGUsdCxuLG8pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpuLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczplLmlzc3Vlc30sbyl9Y29uc3QgX209bSgiJFpvZFByZXByb2Nlc3MiLChlLHQpPT57X2EuaW5pdChlLHQpfSksU209bSgiJFpvZFJlYWRvbmx5IiwoZSx0KT0+e00uaW5pdChlLHQpLEYoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksRihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksRihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksRihlLCJvcHRvdXQiLG49Pm4uZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4oVXUpOlV1KHMpfX0pO2Z1bmN0aW9uIFV1KGUpe3JldHVybiBlLm1lbW98fChlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSkpLGV9ZnVuY3Rpb24gYnYoZSl7Y29uc3QgdD1lLl96b2QuZGVmO2xldCBuPXQucGF0dGVybixvPSEhdC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxzLHI7Zm9yKGNvbnN0IGEgb2YgdC5jaGVja3M/P1tdKXtjb25zdCB1PWEuX3pvZC5kZWY7dS5wYXR0ZXJuJiYobj11LnBhdHRlcm4pLG98fChvPSEhdS5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSk7Y29uc3QgZD11Lm1pbmltdW0/P3UubGVuZ3RoLHA9dS5tYXhpbXVtPz91Lmxlbmd0aDtkIT09dm9pZCAwJiYocz09PXZvaWQgMHx8ZD5zKSYmKHM9ZCkscCE9PXZvaWQgMCYmKHI9PT12b2lkIDB8fHA8cikmJihyPXApfWlmKG4pcmV0dXJuIG4uc291cmNlO2lmKHMhPT12b2lkIDAmJnIhPT12b2lkIDAmJnM+cilyZXR1cm4iKD8hKSI7aWYocyE9PXZvaWQgMHx8ciE9PXZvaWQgMClyZXR1cm4gQXAoe21pbmltdW06cyxtYXhpbXVtOnJ9KS5zb3VyY2U7Y29uc3QgaT1lLl96b2QucGF0dGVybjtyZXR1cm4obyYmaT09PUhzP1BwOmkpPy5zb3VyY2V9ZnVuY3Rpb24ga2koZSl7Y29uc3QgdD1lLl96b2QuZGVmLG49ZS5fem9kLnBhdHRlcm4/LnNvdXJjZSxvPXQuaW5uZXJUeXBlPz9lLl96b2QuaW5uZXJUeXBlO2lmKG8pe2NvbnN0IHM9by5fem9kLnBhdHRlcm4/LnNvdXJjZSxyPWtpKG8pO3JldHVybiBuJiZzJiZyJiZyIT09cz9uLnJlcGxhY2UobHQocyksKCk9Pmx0KHIpKTpufWlmKHQub3B0aW9ucyl7Y29uc3Qgcz10Lm9wdGlvbnMubWFwKGtpKTtpZihzLmV2ZXJ5KEJvb2xlYW4pKXJldHVybmBeKCR7cy5tYXAocj0+bHQocikpLmpvaW4oInwiKX0pJGB9cmV0dXJuIGJ2KGUpfWNvbnN0IFRtPW0oIiRab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHQpPT57TS5pbml0KGUsdCk7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiB0LnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2NvbnN0IHM9a2kobyk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtuLnB1c2gobHQocykpfWVsc2UgaWYobz09PW51bGx8fE9kLmhhcyh0eXBlb2Ygbykpbi5wdXNoKFFlKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO2UuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke24uam9pbigiIil9JGApLGUuX3pvZC5wYXJzZT0obyxzKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6ZSxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KGUuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLGUuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDplLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6dC5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOmUuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSksem09bSgiJFpvZEZ1bmN0aW9uIiwoZSx0KT0+KE0uaW5pdChlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfZGVmIix7dmFsdWU6dH0pLGUuX3pvZC5kZWY9dCxlLmltcGxlbWVudD1uPT57aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2JpKGUuX2RlZi5pbnB1dCxvKTpvLHI9UmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YmkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuaW1wbGVtZW50QXN5bmM9bj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2F3YWl0IHZpKGUuX2RlZi5pbnB1dCxvKTpvLHI9YXdhaXQgUmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YXdhaXQgdmkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuX3pvZC5wYXJzZT0obixvKT0+dHlwZW9mIG4udmFsdWUhPSJmdW5jdGlvbiI/KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG4pOihlLl9kZWYub3V0cHV0JiZlLl9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/bi52YWx1ZT1lLmltcGxlbWVudEFzeW5jKG4udmFsdWUpOm4udmFsdWU9ZS5pbXBsZW1lbnQobi52YWx1ZSksbiksZS5pbnB1dD0oLi4ubik9Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoblswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcga2Eoe3R5cGU6InR1cGxlIixpdGVtczpuWzBdLHJlc3Q6blsxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PW49Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpufSl9LGUpKSx4bT1tKCIkWm9kUHJvbWlzZSIsKGUsdCk9PntNLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PlByb21pc2UucmVzb2x2ZShuLnZhbHVlKS50aGVuKHM9PnQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbykpfSksVGE9bSgiJFpvZExhenkiLChlLHQpPT57TS5pbml0KGUsdCksSWQoZS5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgbj10O3JldHVybiBuLl9jYWNoZWRJbm5lcnx8KG4uX2NhY2hlZElubmVyPXQuZ2V0dGVyKCkpLG4uX2NhY2hlZElubmVyfSksRihlLCJwYXR0ZXJuIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksRihlLCJwcm9wVmFsdWVzIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksRihlLCJvcHRpbiIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLEYoZSwib3B0b3V0IixuPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLGUuX3pvZC5wYXJzZT0obixvKT0+ZS5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihuLG8pfSksSW09bSgiJFpvZEN1c3RvbSIsKGUsdCk9PntpZS5pbml0KGUsdCksTS5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT5uLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz1uLnZhbHVlLHM9dC5mbihvKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gcy50aGVuKHI9Pkh1KHIsbixvLGUpKTtIdShzLG4sbyxlKX19KTtmdW5jdGlvbiBIdShlLHQsbixvKXtpZighZSl7Y29uc3Qgcz17Y29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihzLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksdC5pc3N1ZXMucHVzaChWdChzKSl9fWNsYXNzIEFtIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2Fubm90IHBhcnNlIGEgcmVmZXJlbmNlIGN5Y2xlIHRoYXQgY2xvc2VzIHRocm91Z2ggYSB0cmFuc2Zvcm0iKSx0aGlzLm5hbWU9IlpvZEN5Y2xpY0Vycm9yIn19Y29uc3Qgd2k9In5tZW1vIixXdT1bXTtmdW5jdGlvbiBDbShlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0In1mdW5jdGlvbiBhaShlKXtyZXR1cm4gZS5tYXAodD0+dC5wYXRoP3suLi50LHBhdGg6dC5wYXRoLnNsaWNlKCl9OnsuLi50fSl9Y29uc3QgUG09bmV3IFdlYWtNYXAscXQ9MCxhcz0xLEFuPTI7ZnVuY3Rpb24gQ24oZSx0LG4pe2NvbnN0IG89UG0uZ2V0KGUpO2lmKG8hPT12b2lkIDApcmV0dXJuIG8/QW46cXQ7aWYodC5oYXMoZSkpcmV0dXJuIEFuO3QuYWRkKGUpO2xldCBzPXF0O2NvbnN0IHI9cD0+e2lmKHMhPT1BbiYmcD8uX3pvZCl7Y29uc3QgaD1DbihwLHQsbik7aD5zJiYocz1oKX19LGk9KHAsaCk9PntsZXQgZj1xdDtmb3IoY29uc3QgJCBvZiBSZWZsZWN0Lm93bktleXMocCkpe2NvbnN0IGs9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLCQpO2lmKCFrLmVudW1lcmFibGUpY29udGludWU7Y29uc3Qgej1rLmdldD9hczprLnZhbHVlPy5fem9kP0NuKGsudmFsdWUsdCxuKTpxdDt6PmYmJihmPXopfXJldHVybiBmfSxhPXA9PntwPnMmJihzPXApfSx1PWUuX3pvZC5kZWY7c3dpdGNoKHUudHlwZSl7Y2FzZSJvYmplY3QiOntjb25zdCBwPUVzKHUpO2EocD9pKHApOmFzKSxyKHUuY2F0Y2hhbGwpO2JyZWFrfWNhc2UiYXJyYXkiOnIodS5lbGVtZW50KTticmVhaztjYXNlInR1cGxlIjpmb3IoY29uc3QgcCBvZiB1Lml0ZW1zKXIocCk7cih1LnJlc3QpO2JyZWFrO2Nhc2UicmVjb3JkIjpjYXNlIm1hcCI6cih1LmtleVR5cGUpLHIodS52YWx1ZVR5cGUpO2JyZWFrO2Nhc2Uic2V0IjpyKHUudmFsdWVUeXBlKTticmVhaztjYXNlInVuaW9uIjpmb3IoY29uc3QgcCBvZiB1Lm9wdGlvbnMpcihwKTticmVhaztjYXNlImludGVyc2VjdGlvbiI6cih1LmxlZnQpLHIodS5yaWdodCk7YnJlYWs7Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6cih1LmlubmVyVHlwZSk7YnJlYWs7Y2FzZSJwaXBlIjpyKHUuaW4pLHIodS5vdXQpO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnIodS5pbnB1dCkscih1Lm91dHB1dCk7YnJlYWs7Y2FzZSJsYXp5Ijp7Y29uc3QgcD11Ll9jYWNoZWRJbm5lcj8/KG4/ZS5fem9kLmlubmVyVHlwZTp2b2lkIDApO2EocD9DbihwLHQsITEpOmFzKTticmVha31jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6YnJlYWs7ZGVmYXVsdDpmb3IoY29uc3QgcCBpbiB1KXtjb25zdCBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodSxwKTtpZighaHx8aC5nZXQpY29udGludWU7Y29uc3QgZj1oLnZhbHVlO2lmKCEoIWZ8fHR5cGVvZiBmIT0ib2JqZWN0Iikpe2lmKGYuX3pvZClyKGYpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShmKSlmb3IoY29uc3QgJCBvZiBmKXIoJCl9fX1yZXR1cm4gdC5kZWxldGUoZSksdnYoZSxzKX1mdW5jdGlvbiB2dihlLHQpe3JldHVybiB0IT09YXMmJlBtLnNldChlLHQ9PT1BbiksdH1mdW5jdGlvbiB5dihlKXtyZXR1cm4gQ24oZSxuZXcgU2V0LCEwKSE9PXF0fWZ1bmN0aW9uICR2KGUsdCl7bGV0IG49ZS5idWNrZXRzLmdldCh0KTtyZXR1cm4gbnx8KG49bmV3IFdlYWtNYXAsZS5idWNrZXRzLnNldCh0LG4pKSxufWxldCBlcztjb25zdCB0cz1bXSxrdj17YWxsb2MoZSx0LG4pe2NvbnN0IG89ZXM7aWYoIW8pcmV0dXJuIG47ZXM9dm9pZCAwO2NvbnN0IHM9e3ZhbHVlOm4saXNzdWVzOm51bGx9O3JldHVybiBvLnNldCh0LnZhbHVlLHMpLHRzLnB1c2gocyksbn0sZ3VhcmQoZSl7dmFyIHQ7KHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZC5wdXNoKCgpPT57Y29uc3Qgbj1lLl96b2QucGFyc2Usbz0ocyxyKT0+e2lmKHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIiYmRW0ocixzLnZhbHVlKSl0aHJvdyBuZXcgQW07cmV0dXJuIG4ocyxyKX07ZS5fem9kLnBhcnNlPW8sZS5fem9kLnJ1bj09PW4mJihlLl96b2QucnVuPW8pfSl9LGF0dGFjaChlKXt2YXIgdDtsZXQgbixvPSExLHMscjsodD1lLl96b2QpLmRlZmVycmVkPz8odC5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkLnB1c2goKCk9Pntjb25zdCBpPWUuX3pvZC5wYXJzZSxhPSh1LGQpPT57aWYobj09PXZvaWQgMCl7Y29uc3QgeD1DbihlLG5ldyBTZXQsITEpO2lmKHg9PT1xdClyZXR1cm4gZS5fem9kLnBhcnNlPWksZS5fem9kLnJ1bj09PWEmJihlLl96b2QucnVuPWkpLGkodSxkKTt4PT09QW58fG8/bj0hMDpvPSEwfWNvbnN0IHA9dS52YWx1ZTtpZighQ20ocCkpcmV0dXJuIGkodSxkKTtsZXQgaD1kW3dpXTtofHwoaD17YnVja2V0czpuZXcgV2Vha01hcCxiYWNrRWRnZXM6dm9pZCAwfSxkW3dpXT1oKTtsZXQgZjtzPT09ZD9mPXI6KGY9JHYoaCxlKSxzPWQscj1mKTtjb25zdCAkPWYuZ2V0KHApO2lmKCQpcmV0dXJuIHUudmFsdWU9JC52YWx1ZSwkLmlzc3Vlcz8kLmlzc3Vlcy5sZW5ndGgmJnUuaXNzdWVzLnB1c2goLi4uYWkoJC5pc3N1ZXMpKToodS5tZW1vPSEwLGguYmFja0VkZ2VzPz8oaC5iYWNrRWRnZXM9bmV3IFdlYWtTZXQpLGguYmFja0VkZ2VzLmFkZCgkLnZhbHVlKSksdTtlcz1mO2NvbnN0IGs9dHMubGVuZ3RoLHo9aSh1LGQpO2VzPXZvaWQgMDtjb25zdCBBPXRzLmxlbmd0aD5rP3RzLnBvcCgpOnZvaWQgMDtyZXR1cm4geiBpbnN0YW5jZW9mIFByb21pc2U/ei50aGVuKHg9PihBJiYoQS5pc3N1ZXM9eC5pc3N1ZXMubGVuZ3RoP2FpKHguaXNzdWVzKTpXdSkseCkpOihBJiYoQS5pc3N1ZXM9ei5pc3N1ZXMubGVuZ3RoP2FpKHouaXNzdWVzKTpXdSkseil9O2UuX3pvZC5wYXJzZT1hLGUuX3pvZC5ydW49PT1pJiYoZS5fem9kLnJ1bj1hKX0pfX07ZnVuY3Rpb24gSnMoKXtyZXR1cm4ga3Z9ZnVuY3Rpb24gRW0oZSx0KXtjb25zdCBuPWVbd2ldPy5iYWNrRWRnZXM7cmV0dXJuIG4hPT12b2lkIDAmJkNtKHQpJiZuLmhhcyh0KX1jb25zdCB3dj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiB0KHIpe3JldHVybiBlW3JdPz9udWxsfWNvbnN0IG49e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGN1cnJlbmN5X2NvZGU6ImN1cnJlbmN5IGNvZGUiLGNyZWRpdF9jYXJkOiJjcmVkaXQgY2FyZCBudW1iZXIiLGliYW46IklCQU4iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07ZnVuY3Rpb24gcyhyLGkpe3JldHVybiByPT09Im51bWJlciImJnR5cGVvZiBpPT0ibnVtYmVyIiYmIU51bWJlci5pc0Zpbml0ZShpKT9TdHJpbmcoaSk6b1tyXT8/cn1yZXR1cm4gcj0+e3N3aXRjaChyLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1zKHIuZXhwZWN0ZWQpLGE9V2Qoci5pbnB1dCksdT1zKGEsci5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aX0sIHJlY2VpdmVkICR7dX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIHIudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7Rmkoci52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHttaShyLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1yLmV4YWN0PyJleGFjdGx5ICI6ci5pbmNsdXNpdmU/Ijw9IjoiPCIsYT10KHIub3JpZ2luKTtyZXR1cm4gYT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2l9JHtyLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHtpfSR7ci5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ci5leGFjdD8iZXhhY3RseSAiOnIuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9dChyLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtyLm9yaWdpbn0gdG8gaGF2ZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke3Iub3JpZ2lufSB0byBiZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPXI7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke25baS5mb3JtYXRdPz9yLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke3IuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtyLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHttaShyLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtyLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIHIub3B0aW9ucyYmQXJyYXkuaXNBcnJheShyLm9wdGlvbnMpJiZyLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtyLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOnIuaW5jbHVzaXZlPT09ITE/IkludmFsaWQgaW5wdXQ6IG1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNoZWQiOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtyLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIFJtKCl7cmV0dXJue2xvY2FsZUVycm9yOnd2KCl9fWNvbnN0IHphPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbjpSbX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgVnU7Y29uc3QgeGE9U3ltYm9sKCJab2RPdXRwdXQiKSxJYT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgT217Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQodCwuLi5uKXtjb25zdCBvPW5bMF07cmV0dXJuIHRoaXMuX21hcC5zZXQodCxvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCx0KSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gbiYmdHlwZW9mIG49PSJvYmplY3QiJiYiaWQiaW4gbiYmdGhpcy5faWRtYXAuZGVsZXRlKG4uaWQpLHRoaXMuX21hcC5kZWxldGUodCksdGhpc31nZXQodCl7Y29uc3Qgbj10Ll96b2QucGFyZW50O2lmKG4pe2NvbnN0IG89ey4uLnRoaXMuZ2V0KG4pPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3Qgcz17Li4ubywuLi50aGlzLl9tYXAuZ2V0KHQpfTtyZXR1cm4gT2JqZWN0LmtleXMocykubGVuZ3RoP3M6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KHQpfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX19ZnVuY3Rpb24gS3MoKXtyZXR1cm4gbmV3IE9tfShWdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KFZ1Ll9fem9kX2dsb2JhbFJlZ2lzdHJ5PUtzKCkpO2NvbnN0IGplPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnksQWE9KCk9Pnt0aHJvdyBuZXcgRXJyb3IoInpvZCBjb21waWxlKCkgaXMgbm90IGJ1bmRsZWQgaW50byBjYXJkcyAtIHNlZSBwYWNrYWdlcy9pbnRlcm5hbC9jYXJkLWtpdC92aXRlLXNsaW0ubWpzIil9O2NsYXNzIENhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIFBhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIEVhIGV4dGVuZHMgRXJyb3J7fWNvbnN0IFJhPUFhLE9hPUFhLF92PUFhO2Z1bmN0aW9uIEdzKGUpe3JldHVybiBlLmNoZWNrcyYmKGUuY2hlY2tzPVsuLi5lLmNoZWNrc10pLGV9ZnVuY3Rpb24gTm0oZSx0KXtyZXR1cm4gbmV3IGUoR3Moe3R5cGU6InN0cmluZyIsLi4udyh0KX0pKX1mdW5jdGlvbiBabShlLHQpe3JldHVybiBuZXcgZShHcyh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4udyh0KX0pKX1mdW5jdGlvbiBOYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBqYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gTWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLncodCl9KX1mdW5jdGlvbiBxYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4udyh0KX0pfWZ1bmN0aW9uIExhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi53KHQpfSl9ZnVuY3Rpb24gWXMoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gRGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBCYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBGYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gVWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBIYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gV2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gVmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBKYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gS2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIGptKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEdhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFlhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFFhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFhhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIGVjKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBNbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNyZWRpdF9jYXJkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIHFtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaWJhbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiB0YyhlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1jb25zdCBuYz17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gb2MoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi53KHQpfSl9ZnVuY3Rpb24gc2MoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIHJjKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLncodCl9KX1mdW5jdGlvbiBpYyhlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIExtKGUsdCl7cmV0dXJuIG5ldyBlKEdzKHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi53KHQpfSkpfWZ1bmN0aW9uIERtKGUsdCl7cmV0dXJuIG5ldyBlKEdzKHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4udyh0KX0pKX1mdW5jdGlvbiBCbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi53KHQpfSl9ZnVuY3Rpb24gRm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIFVtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLncodCl9KX1mdW5jdGlvbiBIbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIFdtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIFZtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gSm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gS20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsLi4udyh0KX0pfWZ1bmN0aW9uIEdtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gWW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBRbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBYbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3ltYm9sIiwuLi53KHQpfSl9ZnVuY3Rpb24gZWYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuZGVmaW5lZCIsLi4udyh0KX0pfWZ1bmN0aW9uIHRmKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi53KHQpfSl9ZnVuY3Rpb24gbmYoZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gb2YoZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIHNmKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJuZXZlciIsLi4udyh0KX0pfWZ1bmN0aW9uIHJmKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi53KHQpfSl9ZnVuY3Rpb24gYWYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImRhdGUiLC4uLncodCl9KX1mdW5jdGlvbiBjZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLncodCl9KX1mdW5jdGlvbiBsZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gZXQoZSx0KXtyZXR1cm4gbmV3IGxhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gQ2UoZSx0KXtyZXR1cm4gbmV3IGxhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gdHQoZSx0KXtyZXR1cm4gbmV3IHVhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gUGUoZSx0KXtyZXR1cm4gbmV3IHVhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gUXMoZSl7cmV0dXJuIHR0KDAsZSl9ZnVuY3Rpb24gWHMoZSl7cmV0dXJuIGV0KDAsZSl9ZnVuY3Rpb24gZXIoZSl7cmV0dXJuIENlKDAsZSl9ZnVuY3Rpb24gdHIoZSl7cmV0dXJuIFBlKDAsZSl9ZnVuY3Rpb24gX3QoZSx0KXtyZXR1cm4gbmV3IE1wKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLncodCksdmFsdWU6ZX0pfWZ1bmN0aW9uIE90KGUsdCl7cmV0dXJuIG5ldyBEcCh7Y2hlY2s6Im1heF9zaXplIiwuLi53KHQpLG1heGltdW06ZX0pfWZ1bmN0aW9uIG50KGUsdCl7cmV0dXJuIG5ldyBCcCh7Y2hlY2s6Im1pbl9zaXplIiwuLi53KHQpLG1pbmltdW06ZX0pfWZ1bmN0aW9uIHRuKGUsdCl7cmV0dXJuIG5ldyBGcCh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi53KHQpLHNpemU6ZX0pfWZ1bmN0aW9uIG5uKGUsdCl7cmV0dXJuIG5ldyBVcCh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLncodCksbWF4aW11bTplfSl9ZnVuY3Rpb24gcHQoZSx0KXtyZXR1cm4gbmV3IEhwKHtjaGVjazoibWluX2xlbmd0aCIsLi4udyh0KSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBvbihlLHQpe3JldHVybiBuZXcgV3Aoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi53KHQpLGxlbmd0aDplfSl9ZnVuY3Rpb24gWG4oZSx0KXtyZXR1cm4gbmV3IFZwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4udyh0KSxwYXR0ZXJuOmV9KX1mdW5jdGlvbiBlbyhlKXtyZXR1cm4gbmV3IEpwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiB0byhlKXtyZXR1cm4gbmV3IEtwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiBubyhlLHQpe3JldHVybiBuZXcgR3Aoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi53KHQpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiBvbyhlLHQpe3JldHVybiBuZXcgWXAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi53KHQpLHByZWZpeDplfSl9ZnVuY3Rpb24gc28oZSx0KXtyZXR1cm4gbmV3IFFwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLncodCksc3VmZml4OmV9KX1mdW5jdGlvbiBucihlLHQsbil7cmV0dXJuIG5ldyBYcCh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTp0LC4uLncobil9KX1mdW5jdGlvbiBybyhlLHQpe3JldHVybiBuZXcgZWgoe2NoZWNrOiJwcm9wZXJ0aWVzIixzaGFwZTplLC4uLncodCl9KX1mdW5jdGlvbiBpbyhlLHQpe3JldHVybiBuZXcgdGgoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6ZSwuLi53KHQpfSl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIG5ldyBuaCh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIGFvKGUpe3JldHVybiBLZSh0PT50Lm5vcm1hbGl6ZShlKSl9ZnVuY3Rpb24gY28oKXtyZXR1cm4gS2UoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIGxvKCl7cmV0dXJuIEtlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gdW8oKXtyZXR1cm4gS2UoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBwbygpe3JldHVybiBLZShlPT5FZChlKSl9ZnVuY3Rpb24gdWYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6dCwuLi53KG4pfSl9ZnVuY3Rpb24gU3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi53KG4pfSl9ZnVuY3Rpb24gVHYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4udyhuKX0pfWZ1bmN0aW9uIHp2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6bixkaXNjcmltaW5hdG9yOnQsLi4udyhvKX0pfWZ1bmN0aW9uIHh2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1mdW5jdGlvbiBJdihlLHQsbixvKXtjb25zdCBzPW4gaW5zdGFuY2VvZiBNLHI9cz9vOm4saT1zP246bnVsbDtyZXR1cm4gbmV3IGUoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi53KHIpfSl9ZnVuY3Rpb24gQXYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24gQ3YoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24gUHYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi53KG4pfSl9ZnVuY3Rpb24gRXYoZSx0LG4pe2NvbnN0IG89QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAocz0+W3Msc10pKTp0O3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLncobil9KX1mdW5jdGlvbiBSdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIE92KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLncobil9KX1mdW5jdGlvbiBkZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZmlsZSIsLi4udyh0KX0pfWZ1bmN0aW9uIE52KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9ZnVuY3Rpb24gWnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIGp2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBNdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpScyhuKX19KX1mdW5jdGlvbiBxdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4udyhuKX0pfWZ1bmN0aW9uIEx2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIER2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6dCxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246VWkobil9KX1mdW5jdGlvbiBCdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9ZnVuY3Rpb24gRnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIFV2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIEh2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWZ1bmN0aW9uIFd2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHBmKGUsdCxuKXtjb25zdCBvPXcobik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjp0LC4uLm99KX1mdW5jdGlvbiBoZihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnQsLi4udyhuKX0pfWZ1bmN0aW9uIG1mKGUsdCl7Y29uc3Qgbj1mZihvPT4oby5hZGRJc3N1ZT1zPT57aWYodHlwZW9mIHM9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goVnQocyxvLnZhbHVlLG4uX3pvZC5kZWYpKTtlbHNle2NvbnN0IHI9cztyLmZhdGFsJiYoci5jb250aW51ZT0hMSksci5jb2RlPz8oci5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gcnx8KHIuaW5wdXQ9by52YWx1ZSksci5pbnN0Pz8oci5pbnN0PW4pLHIuY29udGludWU/PyhyLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKFZ0KHIpKX19LGUoby52YWx1ZSxvKSksdCk7cmV0dXJuIG59ZnVuY3Rpb24gZmYoZSx0KXtjb25zdCBuPW5ldyBpZSh7Y2hlY2s6ImN1c3RvbSIsLi4udyh0KX0pO3JldHVybiBuLl96b2QuY2hlY2s9ZSxufWZ1bmN0aW9uIGdmKGUpe2NvbnN0IHQ9bmV3IGllKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIHQuX3pvZC5vbmF0dGFjaD1bbj0+e2NvbnN0IG89amUuZ2V0KG4pPz97fTtqZS5hZGQobix7Li4ubyxkZXNjcmlwdGlvbjplfSl9XSx0Ll96b2QuY2hlY2s9KCk9Pnt9LHR9ZnVuY3Rpb24gYmYoZSl7Y29uc3QgdD1uZXcgaWUoe2NoZWNrOiJtZXRhIn0pO3JldHVybiB0Ll96b2Qub25hdHRhY2g9W249Pntjb25zdCBvPWplLmdldChuKT8/e307amUuYWRkKG4sey4uLm8sLi4uZX0pfV0sdC5fem9kLmNoZWNrPSgpPT57fSx0fWZ1bmN0aW9uIHZmKGUsdCl7Y29uc3Qgbj13KHQpO2xldCBvPW4udHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLHM9bi5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO24uY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpLHM9cy5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSk7Y29uc3Qgcj1uZXcgU2V0KG8pLGk9bmV3IFNldChzKSxhPWUuQ29kZWM/P1NhLHU9ZS5Cb29sZWFuPz92YSxkPWUuU3RyaW5nPz9RbixwPW5ldyBkKHt0eXBlOiJzdHJpbmciLGVycm9yOm4uZXJyb3J9KSxoPW5ldyB1KHt0eXBlOiJib29sZWFuIixlcnJvcjpuLmVycm9yfSksZj1uZXcgYSh7dHlwZToicGlwZSIsaW46cCxvdXQ6aCx0cmFuc2Zvcm06KCgkLGspPT57bGV0IHo9JDtyZXR1cm4gbi5jYXNlIT09InNlbnNpdGl2ZSImJih6PXoudG9Mb3dlckNhc2UoKSksci5oYXMoeik/ITA6aS5oYXMoeik/ITE6KGsuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLnIsLi4uaV0saW5wdXQ6ay52YWx1ZSxpbnN0OmYsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoJCxrKT0+JD09PSEwP29bMF18fCJ0cnVlIjpzWzBdfHwiZmFsc2UiKSxlcnJvcjpuLmVycm9yfSk7cmV0dXJuIGYuX3pvZC5iYWcudHJ1dGh5PW8sZi5fem9kLmJhZy5mYWxzeT1zLGYuX3pvZC5iYWcuY2FzZT1uLmNhc2U/PyJpbnNlbnNpdGl2ZSIsZn1mdW5jdGlvbiBzbihlLHQsbixvPXt9KXtjb25zdCBzPXcobykscj17Y2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnQsZm46dHlwZW9mIG49PSJmdW5jdGlvbiI/bjphPT5uLnRlc3QoYSksLi4uc307cmV0dXJuIG4gaW5zdGFuY2VvZiBSZWdFeHAmJihyLnBhdHRlcm49biksbmV3IGUocil9Y29uc3QgVnY9KCk9Pih7fSksSnY9KCk9Pih7fSksS3Y9KCk9Pih7fSksR3Y9KCk9Pih7fSksWXY9KCk9Pih7fSkseWY9KCk9PigpPT4oe30pLF9pPSgpPT4oKT0+KHt9KSxRdj0oKT0+KHt9KSxNZT0oKT0+KHt9KSxYdj0oKT0+KHt9KSxleT0oKT0+KHt9KSx0eT0oKT0+KHt9KSxueT0oKT0+KHt9KSxveT0oKT0+KHt9KSxzeT0oKT0+KHt9KSxyeT0oKT0+KHt9KSxpeT0oKT0+KHt9KSxheT0oKT0+KHt9KSxjeT0oKT0+KHt9KSxseT0oKT0+KHt9KSx1eT0oKT0+KHt9KSxkeT0oKT0+KHt9KSxweT0oKT0+KHt9KSxoeT0oKT0+KHt9KSxteT0oKT0+KHt9KSxmeT0oKT0+KHt9KSxneT0oKT0+KHt9KSxieT0oKT0+KHt9KSx2eT0oKT0+KHt9KSx5eT0oKT0+KHt9KSwkeT0oKT0+KHt9KSxreT0oKT0+KHt9KSx3eT0oKT0+KHt9KSxfeT0oKT0+KHt9KSwkZj0oKT0+KHt9KSxTeT0oKT0+KHt9KSxUeT0oKT0+KHt9KSx6eT0oKT0+KHt9KSx4eT0oKT0+KHt9KSxJeT0oKT0+KHt9KSxBeT0oKT0+KHt9KSxDeT0oKT0+KHt9KSxQeT0oKT0+KHt9KSxFeT0oKT0+KHt9KSxSeT0oKT0+KHt9KSxPeT0oKT0+KHt9KSxrZj0oKT0+KHt9KSxOeT0oKT0+KHt9KSxhYz0oKT0+KHt9KTtjbGFzcyBaeXt9Y29uc3Qgank9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHdmPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OkpoLCRab2RBcnJheTpYaCwkWm9kQXN5bmNFcnJvcjp1dCwkWm9kQmFzZTY0OkVoLCRab2RCYXNlNjRVUkw6T2gsJFpvZEJpZ0ludDp5YSwkWm9kQmlnSW50Rm9ybWF0OlVoLCRab2RCb29sZWFuOnZhLCRab2RDSURSdjQ6SWgsJFpvZENJRFJ2NjpDaCwkWm9kQ1VJRDpnaCwkWm9kQ1VJRDI6YmgsJFpvZENhdGNoOmttLCRab2RDaGVjazppZSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6THAsJFpvZENoZWNrRW5kc1dpdGg6UXAsJFpvZENoZWNrR3JlYXRlclRoYW46dWEsJFpvZENoZWNrSW5jbHVkZXM6R3AsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOldwLCRab2RDaGVja0xlc3NUaGFuOmxhLCRab2RDaGVja0xvd2VyQ2FzZTpKcCwkWm9kQ2hlY2tNYXhMZW5ndGg6VXAsJFpvZENoZWNrTWF4U2l6ZTpEcCwkWm9kQ2hlY2tNaW1lVHlwZTp0aCwkWm9kQ2hlY2tNaW5MZW5ndGg6SHAsJFpvZENoZWNrTWluU2l6ZTpCcCwkWm9kQ2hlY2tNdWx0aXBsZU9mOk1wLCRab2RDaGVja051bWJlckZvcm1hdDpxcCwkWm9kQ2hlY2tPdmVyd3JpdGU6bmgsJFpvZENoZWNrUHJvcGVydGllczplaCwkWm9kQ2hlY2tQcm9wZXJ0eTpYcCwkWm9kQ2hlY2tSZWdleDpWcCwkWm9kQ2hlY2tTaXplRXF1YWxzOkZwLCRab2RDaGVja1N0YXJ0c1dpdGg6WXAsJFpvZENoZWNrU3RyaW5nRm9ybWF0OlluLCRab2RDaGVja1VwcGVyQ2FzZTpLcCwkWm9kQ29kZWM6U2EsJFpvZENyZWRpdENhcmQ6amgsJFpvZEN1c3RvbTpJbSwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OkJoLCRab2RDeWNsaWNFcnJvcjpBbSwkWm9kRGF0ZTpRaCwkWm9kRGVmYXVsdDpibSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOmltLCRab2RFMTY0Ok5oLCRab2RFbWFpbDpjaCwkWm9kRW1vamk6bWgsJFpvZEVuY29kZUVycm9yOnFzLCRab2RFbnVtOmRtLCRab2RFcnJvcjpYZCwkWm9kRXhhY3RPcHRpb25hbDpmbSwkWm9kRmlsZTpobSwkWm9kRnVuY3Rpb246em0sJFpvZEdVSUQ6aWgsJFpvZElCQU46cWgsJFpvZElQdjQ6VGgsJFpvZElQdjY6emgsJFpvZElTT0RhdGU6d2gsJFpvZElTT0RhdGVUaW1lOmtoLCRab2RJU09EdXJhdGlvbjpTaCwkWm9kSVNPVGltZTpfaCwkWm9kSW50ZXJzZWN0aW9uOmFtLCRab2RKV1Q6RGgsJFpvZEtTVUlEOiRoLCRab2RMYXp5OlRhLCRab2RMaXRlcmFsOnBtLCRab2RNQUM6eGgsJFpvZE1hcDpsbSwkWm9kTmFOOndtLCRab2ROYW5vSUQ6ZmgsJFpvZE5ldmVyOkdoLCRab2ROb25PcHRpb25hbDp5bSwkWm9kTnVsbDpWaCwkWm9kTnVsbGFibGU6Z20sJFpvZE51bWJlcjpiYSwkWm9kTnVtYmVyRm9ybWF0OkZoLCRab2RPYmplY3Q6bm0sJFpvZE9iamVjdEpJVDpvbSwkWm9kT3B0aW9uYWw6d2EsJFpvZFBpcGU6X2EsJFpvZFByZWZhdWx0OnZtLCRab2RQcmVwcm9jZXNzOl9tLCRab2RQcm9taXNlOnhtLCRab2RSZWFkb25seTpTbSwkWm9kUmVhbEVycm9yOlJlLCRab2RSZWNvcmQ6Y20sJFpvZFJlZ2lzdHJ5Ok9tLCRab2RTZXQ6dW0sJFpvZFN0cmluZzpRbiwkWm9kU3RyaW5nRm9ybWF0OnRlLCRab2RTdWNjZXNzOiRtLCRab2RTeW1ib2w6SGgsJFpvZFRlbXBsYXRlTGl0ZXJhbDpUbSwkWm9kVHJhbnNmb3JtOm1tLCRab2RUdXBsZTprYSwkWm9kVHlwZTpNLCRab2RVTElEOnZoLCRab2RVUkw6aGgsJFpvZFVVSUQ6YWgsJFpvZFVuZGVmaW5lZDpXaCwkWm9kVW5pb246VnMsJFpvZFVua25vd246S2gsJFpvZFZvaWQ6WWgsJFpvZFhJRDp5aCwkWm9kWG9yOnNtLCRicmFuZDpWaSwkY29uc3RydWN0b3I6bSwkaW5wdXQ6SWEsJG91dHB1dDp4YSxEb2M6b2gsSU5WQUxJRDpDYSxKU09OU2NoZW1hOmp5LEpTT05TY2hlbWFHZW5lcmF0b3I6WnksTkVWRVI6V2ksVGltZVByZWNpc2lvbjpuYyxVUkxfQkFEX0ZPUk1BVDpwYSxVUkxfVU5QQVJTRUFCTEU6Wm4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6UGEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6RWEsX2FueTpuZixfYXJyYXk6dWYsX2Jhc2U2NDpRYSxfYmFzZTY0dXJsOlhhLF9iaWdpbnQ6S20sX2Jvb2xlYW46Vm0sX2NhdGNoOkR2LF9jaGVjazpmZixfY2lkcnY0OkdhLF9jaWRydjY6WWEsX2NvZXJjZWRCaWdpbnQ6R20sX2NvZXJjZWRCb29sZWFuOkptLF9jb2VyY2VkRGF0ZTpjZixfY29lcmNlZE51bWJlcjpEbSxfY29lcmNlZFN0cmluZzpabSxfY3JlZGl0Q2FyZDpNbSxfY3VpZDpGYSxfY3VpZDI6VWEsX2N1c3RvbTpwZixfZGF0ZTphZixfZGVjb2RlOllpLF9kZWNvZGVBc3luYzpYaSxfZGVmYXVsdDpNdixfZGlzY3JpbWluYXRlZFVuaW9uOnp2LF9lMTY0OmVjLF9lbWFpbDpOYSxfZW1vamk6RGEsX2VuY29kZTpHaSxfZW5jb2RlQXN5bmM6UWksX2VuZHNXaXRoOnNvLF9lbnVtOkV2LF9maWxlOmRmLF9mbG9hdDMyOkZtLF9mbG9hdDY0OlVtLF9ndDp0dCxfZ3RlOlBlLF9ndWlkOlphLF9pYmFuOnFtLF9pbmNsdWRlczpubyxfaW50OkJtLF9pbnQzMjpIbSxfaW50NjQ6WW0sX2ludGVyc2VjdGlvbjp4dixfaXB2NDpKYSxfaXB2NjpLYSxfaXNvRGF0ZTpzYyxfaXNvRGF0ZVRpbWU6b2MsX2lzb0R1cmF0aW9uOmljLF9pc29UaW1lOnJjLF9qd3Q6dGMsX2tzdWlkOlZhLF9sYXp5Okh2LF9sZW5ndGg6b24sX2xpdGVyYWw6T3YsX2xvd2VyY2FzZTplbyxfbHQ6ZXQsX2x0ZTpDZSxfbWFjOmptLF9tYXA6Q3YsX21heDpDZSxfbWF4TGVuZ3RoOm5uLF9tYXhTaXplOk90LF9taW1lOmlvLF9taW46UGUsX21pbkxlbmd0aDpwdCxfbWluU2l6ZTpudCxfbXVsdGlwbGVPZjpfdCxfbmFuOmxmLF9uYW5vaWQ6QmEsX25hdGl2ZUVudW06UnYsX25lZ2F0aXZlOlhzLF9uZXZlcjpzZixfbm9ubmVnYXRpdmU6dHIsX25vbm9wdGlvbmFsOnF2LF9ub25wb3NpdGl2ZTplcixfbm9ybWFsaXplOmFvLF9udWxsOnRmLF9udWxsYWJsZTpqdixfbnVtYmVyOkxtLF9vcHRpb25hbDpadixfb3ZlcndyaXRlOktlLF9wYXJzZTpIbixfcGFyc2VBc3luYzpXbixfcGlwZTpCdixfcG9zaXRpdmU6UXMsX3Byb21pc2U6V3YsX3Byb3BlcnRpZXM6cm8sX3Byb3BlcnR5Om5yLF9yZWFkb25seTpGdixfcmVjb3JkOkF2LF9yZWZpbmU6aGYsX3JlZ2V4OlhuLF9zYWZlRGVjb2RlOnRhLF9zYWZlRGVjb2RlQXN5bmM6b2EsX3NhZmVFbmNvZGU6ZWEsX3NhZmVFbmNvZGVBc3luYzpuYSxfc2FmZVBhcnNlOlZuLF9zYWZlUGFyc2VBc3luYzpKbixfc2V0OlB2LF9zaXplOnRuLF9zbHVnaWZ5OnBvLF9zdGFydHNXaXRoOm9vLF9zdHJpbmc6Tm0sX3N0cmluZ0Zvcm1hdDpzbixfc3RyaW5nYm9vbDp2Zixfc3VjY2VzczpMdixfc3VwZXJSZWZpbmU6bWYsX3N5bWJvbDpYbSxfdGVtcGxhdGVMaXRlcmFsOlV2LF90b0xvd2VyQ2FzZTpsbyxfdG9VcHBlckNhc2U6dW8sX3RyYW5zZm9ybTpOdixfdHJpbTpjbyxfdHVwbGU6SXYsX3VpbnQzMjpXbSxfdWludDY0OlFtLF91bGlkOkhhLF91bmRlZmluZWQ6ZWYsX3VuaW9uOlN2LF91bmtub3duOm9mLF91cHBlcmNhc2U6dG8sX3VybDpZcyxfdXVpZDpqYSxfdXVpZHY0Ok1hLF91dWlkdjY6cWEsX3V1aWR2NzpMYSxfdm9pZDpyZixfeGlkOldhLF94b3I6VHYsYmFzZTY0Q2hhcnNldDpQaCxiYXNlNjR1cmxDaGFyc2V0OmdhLGNhblBhcnNlVVJMOmhhLGNsb25lOmFlLGNvbXBpbGU6UmEsY29tcGlsZUZuOl92LGNvbmZpZzpoZSxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6X2ksY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOnlmLGRlY29kZTpDYixkZWNvZGVBc3luYzpFYixkZXNjcmliZTpnZixlbmNvZGU6QWIsZW5jb2RlQXN5bmM6UGIsZXh0cmFjdERlZnM6R3YsZmluYWxpemU6WXYsZmxhdHRlbkVycm9yOkxzLGZvcm1hdEVycm9yOkRzLGdldERpc2NyaW1pbmF0ZWRPcHRpb246JGEsZ2xvYmFsQ29uZmlnOlNlLGdsb2JhbFJlZ2lzdHJ5OmplLGhhbmRsZVVucmVwcmVzZW50YWJsZTpKdixpbml0aWFsaXplQ29udGV4dDpWdixpc0JhY2tFZGdlOkVtLGlzUmVjdXJzaXZlU2NoZW1hOnl2LGlzVmFsaWRCYXNlNjQ6ZmEsaXNWYWxpZEJhc2U2NFVSTDpSaCxpc1ZhbGlkQ0lEUnY2OkFoLGlzVmFsaWRDcmVkaXRDYXJkOlpoLGlzVmFsaWRJQkFOOk1oLGlzVmFsaWRJUHY2Om1hLGlzVmFsaWRKV1Q6TGgsbG9jYWxlczp6YSxtZW1vaXplcjpKcyxtZXJnZVZhbHVlczpicyxtZXRhOmJmLHBhcnNlOmJpLHBhcnNlQXN5bmM6dmkscGFyc2VVUkxPYmplY3Q6dWgscHJldHRpZnlFcnJvcjpLaSxwcm9jZXNzOlF2LHByb2Nlc3NTY2hlbWE6S3YscmVnZXhlczpXcyxyZWdpc3RyeTpLcyxzYWZlRGVjb2RlOk9iLHNhZmVEZWNvZGVBc3luYzpaYixzYWZlRW5jb2RlOlJiLHNhZmVFbmNvZGVBc3luYzpOYixzYWZlUGFyc2U6dHAsc2FmZVBhcnNlQXN5bmM6VGIsc3RhbmRhcmRQcm9wczpkYSxzdHJpcFRhYkFuZE5ld2xpbmU6JGksdG9Eb3RQYXRoOmVwLHRvSlNPTlNjaGVtYTphYyx0b1pvZDpQcyx0cmVlaWZ5RXJyb3I6SmksdXJsSG9zdG5hbWVPazpkaCx1cmxQcm90b2NvbE9rOnBoLHV0aWw6SGksdmFsaWRhdGU6RnMsdmFsaWRhdGVBc3luYzpVcyx2YWxpZGF0ZVVSTDpsaCx2ZXJzaW9uOnNoLHdpdGhQYXJzZXI6T2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSnU9U3ltYm9sKCJ6LnZpc2l0L3Jlc29sdmluZyIpO2Z1bmN0aW9uIGNjKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OihpLGEpPT57Y29uc3QgdT10W2kuX3pvZC5kZWYudHlwZV07cmV0dXJuIHU/dShpLGEpOml9LG89bmV3IE1hcDtmdW5jdGlvbiBzKGkpe2NvbnN0IGE9by5nZXQoaSk7aWYoYT09PUp1KXJldHVybiBuZXcgVGEoe3R5cGU6ImxhenkiLGdldHRlcjooKT0+by5nZXQoaSl9KTtpZihhIT09dm9pZCAwKXJldHVybiBhO28uc2V0KGksSnUpO2NvbnN0IHU9cihpKSxkPW4odSx1IT09aSk7cmV0dXJuIG8uc2V0KGksZCksZH1mdW5jdGlvbiByKGkpe2NvbnN0IGE9aS5fem9kLmRlZjtzd2l0Y2goYS50eXBlKXtjYXNlIm9iamVjdCI6e2NvbnN0IGQ9YS5zaGFwZSxwPU9iamVjdC5rZXlzKGQpO2xldCBoPSExO2NvbnN0IGY9e307Zm9yKGNvbnN0IGsgb2YgcCl7Y29uc3Qgej1zKGRba10pO3ohPT1kW2tdJiYoaD0hMCksZltrXT16fWxldCAkPWEuY2F0Y2hhbGw7cmV0dXJuIGEuY2F0Y2hhbGwmJigkPXMoYS5jYXRjaGFsbCksJCE9PWEuY2F0Y2hhbGwmJihoPSEwKSksaD9hZShpLHsuLi5hLHNoYXBlOmYsY2F0Y2hhbGw6JH0pOml9Y2FzZSJhcnJheSI6e2NvbnN0IGQ9cyhhLmVsZW1lbnQpO3JldHVybiBkPT09YS5lbGVtZW50P2k6YWUoaSx7Li4uYSxlbGVtZW50OmR9KX1jYXNlInR1cGxlIjp7Y29uc3QgZD1hLml0ZW1zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0ICQgb2YgZCl7Y29uc3Qgaz1zKCQpO2shPT0kJiYocD0hMCksaC5wdXNoKGspfWxldCBmPWEucmVzdDtyZXR1cm4gYS5yZXN0JiYoZj1zKGEucmVzdCksZiE9PWEucmVzdCYmKHA9ITApKSxwP2FlKGksey4uLmEsaXRlbXM6aCxyZXN0OmZ9KTppfWNhc2UicmVjb3JkIjpjYXNlIm1hcCI6e2NvbnN0IGQ9cyhhLmtleVR5cGUpLHA9cyhhLnZhbHVlVHlwZSk7cmV0dXJuIGQ9PT1hLmtleVR5cGUmJnA9PT1hLnZhbHVlVHlwZT9pOmFlKGksey4uLmEsa2V5VHlwZTpkLHZhbHVlVHlwZTpwfSl9Y2FzZSJzZXQiOntjb25zdCBkPXMoYS52YWx1ZVR5cGUpO3JldHVybiBkPT09YS52YWx1ZVR5cGU/aTphZShpLHsuLi5hLHZhbHVlVHlwZTpkfSl9Y2FzZSJ1bmlvbiI6e2NvbnN0IGQ9YS5vcHRpb25zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0IGYgb2YgZCl7Y29uc3QgJD1zKGYpOyQhPT1mJiYocD0hMCksaC5wdXNoKCQpfXJldHVybiBwP2FlKGksey4uLmEsb3B0aW9uczpofSk6aX1jYXNlImludGVyc2VjdGlvbiI6e2NvbnN0IGQ9cyhhLmxlZnQpLHA9cyhhLnJpZ2h0KTtyZXR1cm4gZD09PWEubGVmdCYmcD09PWEucmlnaHQ/aTphZShpLHsuLi5hLGxlZnQ6ZCxyaWdodDpwfSl9Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6e2NvbnN0IGQ9cyhhLmlubmVyVHlwZSk7cmV0dXJuIGQ9PT1hLmlubmVyVHlwZT9pOmFlKGksey4uLmEsaW5uZXJUeXBlOmR9KX1jYXNlInBpcGUiOntjb25zdCBkPXMoYS5pbikscD1zKGEub3V0KTtyZXR1cm4gZD09PWEuaW4mJnA9PT1hLm91dD9pOmFlKGksey4uLmEsaW46ZCxvdXQ6cH0pfWNhc2UiZnVuY3Rpb24iOntjb25zdCBkPXMoYS5pbnB1dCkscD1zKGEub3V0cHV0KTtyZXR1cm4gZD09PWEuaW5wdXQmJnA9PT1hLm91dHB1dD9pOmFlKGksey4uLmEsaW5wdXQ6ZCxvdXRwdXQ6cH0pfWNhc2UibGF6eSI6e2NvbnN0IGQ9YS5nZXR0ZXIse19jYWNoZWRJbm5lcjpwLC4uLmh9PWE7cmV0dXJuIGFlKGksey4uLmgsZ2V0dGVyOigpPT5zKGQoKSl9KX1jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gaX19cmV0dXJuIHMoZSl9ZnVuY3Rpb24gbGMoZSl7cmV0dXJuISFlLl96b2R9ZnVuY3Rpb24gX2YoZSx0KXtyZXR1cm4gbGMoZSk/dHAoZSx0KTplLnNhZmVQYXJzZSh0KX1mdW5jdGlvbiBNeShlKXtpZighZSlyZXR1cm47bGV0IHQ7aWYobGMoZSk/dD1lLl96b2Q/LmRlZj8uc2hhcGU6dD1lLnNoYXBlLCEhdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiB0KCl9Y2F0Y2h7cmV0dXJufXJldHVybiB0fX1mdW5jdGlvbiBxeShlKXtpZihsYyhlKSl7Y29uc3Qgcj1lLl96b2Q/LmRlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19fWNvbnN0IG49ZS5fZGVmO2lmKG4pe2lmKG4udmFsdWUhPT12b2lkIDApcmV0dXJuIG4udmFsdWU7aWYoQXJyYXkuaXNBcnJheShuLnZhbHVlcykmJm4udmFsdWVzLmxlbmd0aD4wKXJldHVybiBuLnZhbHVlc1swXX1jb25zdCBvPWUudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBMeT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6c28sZ3Q6dHQsZ3RlOlBlLGluY2x1ZGVzOm5vLGxlbmd0aDpvbixsb3dlcmNhc2U6ZW8sbHQ6ZXQsbHRlOkNlLG1heExlbmd0aDpubixtYXhTaXplOk90LG1pbWU6aW8sbWluTGVuZ3RoOnB0LG1pblNpemU6bnQsbXVsdGlwbGVPZjpfdCxuZWdhdGl2ZTpYcyxub25uZWdhdGl2ZTp0cixub25wb3NpdGl2ZTplcixub3JtYWxpemU6YW8sb3ZlcndyaXRlOktlLHBvc2l0aXZlOlFzLHByb3BlcnRpZXM6cm8scHJvcGVydHk6bnIscmVnZXg6WG4sc2l6ZTp0bixzbHVnaWZ5OnBvLHN0YXJ0c1dpdGg6b28sdG9Mb3dlckNhc2U6bG8sdG9VcHBlckNhc2U6dW8sdHJpbTpjbyx1cHBlcmNhc2U6dG99LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksS3U9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSk7ZnVuY3Rpb24gbnMoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89bih0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KX1jb25zdCBTZj0oZSx0KT0+e1hkLmluaXQoZSx0KSxlLm5hbWU9IlpvZEVycm9yIjtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtLdS5oYXMobil8fChLdS5hZGQobiksbnMobiwiZm9ybWF0IixvPT5zPT5EcyhvLHMpKSxucyhuLCJmbGF0dGVuIixvPT5zPT5McyhvLHMpKSxucyhuLCJhZGRJc3N1ZSIsbz0+cz0+e28uaXNzdWVzLnB1c2gocyksby5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG8uaXNzdWVzLHBzLDIpfSksbnMobiwiYWRkSXNzdWVzIixvPT5zPT57by5pc3N1ZXMucHVzaCguLi5zKSxvLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoby5pc3N1ZXMscHMsMil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiaXNFbXB0eSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfX0pKX0sVGY9bSgiWm9kRXJyb3IiLFNmKSxJZT1tKCJab2RFcnJvciIsU2Ysdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KSx1Yz1IbihJZSksZGM9V24oSWUpLHBjPVZuKEllKSxoYz1KbihJZSksbWM9R2koSWUpLGZjPVlpKEllKSxnYz1RaShJZSksYmM9WGkoSWUpLHZjPWVhKEllKSx5Yz10YShJZSksJGM9bmEoSWUpLGtjPW9hKEllKTtmdW5jdGlvbiBEeSgpe1NlLmxvY2FsZUVycm9yfHxoZShSbSgpKX1mdW5jdGlvbiBOdCgpe1NlLm1lbW9pemVyfHxoZSh7bWVtb2l6ZXI6SnMoKX0pfWNvbnN0IEw9bSgiWm9kVHlwZSIsKGUsdCk9PihEeSgpLE0uaW5pdChlLHQpLGUuZGVmPXQsZS50eXBlPXQudHlwZSxlKSx7Y2hlY2soLi4uZSl7Y29uc3QgdD10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZSh5ZSh0LHtjaGVja3M6Wy4uLnQuY2hlY2tzPz9bXSwuLi5lLm1hcChuPT50eXBlb2Ygbj09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6bixkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19Om4pXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayguLi5lKX0sY2xvbmUoZSx0KXtyZXR1cm4gYWUodGhpcyxlLHQpfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihlLHQpe3JldHVybiBlLmFkZCh0aGlzLHQpLHRoaXN9LHJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKFVyKGUsdCkpfSxzdXBlclJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEhyKGUsdCkpfSxvdmVyd3JpdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soS2UoZSkpfSxvcHRpb25hbCgpe3JldHVybiBuZSh0aGlzKX0sZXhhY3RPcHRpb25hbCgpe3JldHVybiBTcih0aGlzKX0sbnVsbGFibGUoKXtyZXR1cm4gR3QodGhpcyl9LG51bGxpc2goKXtyZXR1cm4gbmUoR3QodGhpcykpfSxub25vcHRpb25hbChlKXtyZXR1cm4gQ3IodGhpcyxlKX0sYXJyYXkoKXtyZXR1cm4gUih0aGlzKX0sb3IoZSl7cmV0dXJuIEIoW3RoaXMsZV0pfSxhbmQoZSl7cmV0dXJuIGJuKHRoaXMsZSl9LHRyYW5zZm9ybShlKXtyZXR1cm4gTW4odGhpcyxabyhlKSl9LGRlZmF1bHQoZSl7cmV0dXJuIHhyKHRoaXMsZSl9LHByZWZhdWx0KGUpe3JldHVybiBBcih0aGlzLGUpfSxjYXRjaChlKXtyZXR1cm4gUnIodGhpcyxlKX0scGlwZShlKXtyZXR1cm4gTW4odGhpcyxlKX0scmVhZG9ubHkoKXtyZXR1cm4ganIodGhpcyl9LGRlc2NyaWJlKGUpe2NvbnN0IHQ9dGhpcy5jbG9uZSgpO3JldHVybiBqZS5hZGQodCx7ZGVzY3JpcHRpb246ZX0pLHR9LG1ldGEoLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBqZS5nZXQodGhpcyk7Y29uc3QgdD10aGlzLmNsb25lKCk7cmV0dXJuIGplLmFkZCh0LGVbMF0pLHR9LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KGUsLi4udCl7cmV0dXJuIHQubGVuZ3RoPT09MD9lKHRoaXMpOmUodGhpcywuLi50KX0sZ2V0In5zdGFuZGFyZCIoKXtyZXR1cm4gTXModGhpcywifnN0YW5kYXJkIix7Li4uZGEodGhpcyksanNvblNjaGVtYTp7aW5wdXQ6X2koKSxvdXRwdXQ6X2koKX19KX0sc2V0In5zdGFuZGFyZCIoZSl7WGUodGhpcywifnN0YW5kYXJkIixlKX0scGFyc2U6ZnVuY3Rpb24gZSh0LG4pe3JldHVybiB1Yyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0scGFyc2VBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGRjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlUGFyc2UoZSx0KXtyZXR1cm4gcGModGhpcyxlLHQpfSxhc3luYyBzYWZlUGFyc2VBc3luYyhlLHQpe3JldHVybiBoYyh0aGlzLGUsdCl9LGdldCBzcGEoKXtyZXR1cm4gdGhpcz8uc2FmZVBhcnNlQXN5bmN9LHNldCBzcGEoZSl7WGUodGhpcywic3BhIixlKX0sdmFsaWRhdGUoZSx0KXtyZXR1cm4gRnModGhpcyxlLHQpfSx2YWxpZGF0ZUFzeW5jKGUsdCl7cmV0dXJuIFVzKHRoaXMsZSx0KX0sZW5jb2RlOmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gbWModGhpcyx0LG4se2NhbGxlZTplfSl9LGRlY29kZTpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGZjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxlbmNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGdjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxkZWNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGJjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlRW5jb2RlKGUsdCl7cmV0dXJuIHZjKHRoaXMsZSx0KX0sc2FmZURlY29kZShlLHQpe3JldHVybiB5Yyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVFbmNvZGVBc3luYyhlLHQpe3JldHVybiAkYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVEZWNvZGVBc3luYyhlLHQpe3JldHVybiBrYyh0aGlzLGUsdCl9LHRvSlNPTlNjaGVtYShlKXtyZXR1cm4geWYoKShlKX0sZ2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIGplLmdldCh0aGlzKT8uZGVzY3JpcHRpb259LGdldCBfZGVmKCl7cmV0dXJuIHRoaXMuX3pvZC5kZWZ9fSksaG89bSgiX1pvZFN0cmluZyIsKGUsdCk9PntRbi5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Plh2KCl9LFVuKHtmb3JtYXQ6ZT0+TWUoKS5mb3JtYXQ/P251bGwsbWluTGVuZ3RoOmU9Pk1lKCkubWluaW11bT8/bnVsbCxtYXhMZW5ndGg6ZT0+TWUoKS5tYXhpbXVtPz9udWxsfSx7cmVnZXgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWG4oLi4uZSkpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubyguLi5lKSl9LHN0YXJ0c1dpdGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2sob28oLi4uZSkpfSxlbmRzV2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhzbyguLi5lKSl9LG1pbiguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhwdCguLi5lKSl9LG1heCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubiguLi5lKSl9LGxlbmd0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhvbiguLi5lKSl9LG5vbmVtcHR5KC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKHB0KDEsLi4uZSkpfSxsb3dlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2soZW8oZSkpfSx1cHBlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2sodG8oZSkpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soY28oKSl9LG5vcm1hbGl6ZSguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhhbyguLi5lKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sobG8oKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sodW8oKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhwbygpKX19KSkscm49bSgiWm9kU3RyaW5nIiwoZSx0KT0+e1FuLmluaXQoZSx0KSxoby5pbml0KGUsdCl9LHtlbWFpbChlKXtyZXR1cm4gdGhpcy5jaGVjayhOYShtbyxlKSl9LHVybChlKXtyZXR1cm4gdGhpcy5jaGVjayhZcyhkbixlKSl9LGp3dChlKXtyZXR1cm4gdGhpcy5jaGVjayh0YyhDbyxlKSl9LGVtb2ppKGUpe3JldHVybiB0aGlzLmNoZWNrKERhKGdvLGUpKX0sZ3VpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhaYShmbyxlKSl9LHV1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soamEoSGUsZSkpfSx1dWlkdjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soTWEoSGUsZSkpfSx1dWlkdjYoZSl7cmV0dXJuIHRoaXMuY2hlY2socWEoSGUsZSkpfSx1dWlkdjcoZSl7cmV0dXJuIHRoaXMuY2hlY2soTGEoSGUsZSkpfSxuYW5vaWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soQmEoYm8sZSkpfSxjdWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKEZhKHZvLGUpKX0sY3VpZDIoZSl7cmV0dXJuIHRoaXMuY2hlY2soVWEoeW8sZSkpfSx1bGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKEhhKCRvLGUpKX0sYmFzZTY0KGUpe3JldHVybiB0aGlzLmNoZWNrKFFhKHhvLGUpKX0sYmFzZTY0dXJsKGUpe3JldHVybiB0aGlzLmNoZWNrKFhhKElvLGUpKX0seGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKFdhKGtvLGUpKX0sa3N1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soVmEod28sZSkpfSxpcHY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEphKF9vLGUpKX0saXB2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhLYShTbyxlKSl9LGNpZHJ2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhHYShUbyxlKSl9LGNpZHJ2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhZYSh6byxlKSl9LGUxNjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soZWMoQW8sZSkpfSxkYXRldGltZShlKXtyZXR1cm4gdGhpcy5jaGVjayhvYyhhbixlKSl9LGRhdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soc2MoY24sZSkpfSx0aW1lKGUpe3JldHVybiB0aGlzLmNoZWNrKHJjKGxuLGUpKX0sZHVyYXRpb24oZSl7cmV0dXJuIHRoaXMuY2hlY2soaWModW4sZSkpfX0pO2Z1bmN0aW9uIGcoZSl7cmV0dXJuIE5tKHJuLGUpfWNvbnN0IFg9bSgiWm9kU3RyaW5nRm9ybWF0IiwoZSx0KT0+e3RlLmluaXQoZSx0KSxoby5pbml0KGUsdCl9KSxhbj1tKCJab2RJU09EYXRlVGltZSIsKGUsdCk9PntraC5pbml0KGUsdCksWC5pbml0KGUsdCl9KSxjbj1tKCJab2RJU09EYXRlIiwoZSx0KT0+e3doLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pLGxuPW0oIlpvZElTT1RpbWUiLChlLHQpPT57X2guaW5pdChlLHQpLFguaW5pdChlLHQpfSksdW49bSgiWm9kSVNPRHVyYXRpb24iLChlLHQpPT57U2guaW5pdChlLHQpLFguaW5pdChlLHQpfSksbW89bSgiWm9kRW1haWwiLChlLHQpPT57Y2guaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gd2MoZSl7cmV0dXJuIE5hKG1vLGUpfWNvbnN0IGZvPW0oIlpvZEdVSUQiLChlLHQpPT57aWguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gX2MoZSl7cmV0dXJuIFphKGZvLGUpfWNvbnN0IEhlPW0oIlpvZFVVSUQiLChlLHQpPT57YWguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIGphKEhlLGUpfWZ1bmN0aW9uIFRjKGUpe3JldHVybiBNYShIZSxlKX1mdW5jdGlvbiB6YyhlKXtyZXR1cm4gcWEoSGUsZSl9ZnVuY3Rpb24geGMoZSl7cmV0dXJuIExhKEhlLGUpfWNvbnN0IGRuPW0oIlpvZFVSTCIsKGUsdCk9PntoaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBJYyhlKXtyZXR1cm4gWXMoZG4sZSl9ZnVuY3Rpb24gQWMoZSl7cmV0dXJuIFlzKGRuLHtwcm90b2NvbDpzYSxob3N0bmFtZTprcCwuLi53KGUpfSl9Y29uc3QgZ289bSgiWm9kRW1vamkiLChlLHQpPT57bWguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gQ2MoZSl7cmV0dXJuIERhKGdvLGUpfWNvbnN0IGJvPW0oIlpvZE5hbm9JRCIsKGUsdCk9PntmaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBQYyhlKXtyZXR1cm4gQmEoYm8sZSl9Y29uc3Qgdm89bSgiWm9kQ1VJRCIsKGUsdCk9PntnaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBFYyhlKXtyZXR1cm4gRmEodm8sZSl9Y29uc3QgeW89bSgiWm9kQ1VJRDIiLChlLHQpPT57YmguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gUmMoZSl7cmV0dXJuIFVhKHlvLGUpfWNvbnN0ICRvPW0oIlpvZFVMSUQiLChlLHQpPT57dmguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gT2MoZSl7cmV0dXJuIEhhKCRvLGUpfWNvbnN0IGtvPW0oIlpvZFhJRCIsKGUsdCk9Pnt5aC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBOYyhlKXtyZXR1cm4gV2Eoa28sZSl9Y29uc3Qgd289bSgiWm9kS1NVSUQiLChlLHQpPT57JGguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gWmMoZSl7cmV0dXJuIFZhKHdvLGUpfWNvbnN0IF9vPW0oIlpvZElQdjQiLChlLHQpPT57VGguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gamMoZSl7cmV0dXJuIEphKF9vLGUpfWNvbnN0IG9yPW0oIlpvZE1BQyIsKGUsdCk9Pnt4aC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBNYyhlKXtyZXR1cm4gam0ob3IsZSl9Y29uc3QgU289bSgiWm9kSVB2NiIsKGUsdCk9Pnt6aC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBxYyhlKXtyZXR1cm4gS2EoU28sZSl9Y29uc3QgVG89bSgiWm9kQ0lEUnY0IiwoZSx0KT0+e0loLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIExjKGUpe3JldHVybiBHYShUbyxlKX1jb25zdCB6bz1tKCJab2RDSURSdjYiLChlLHQpPT57Q2guaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gRGMoZSl7cmV0dXJuIFlhKHpvLGUpfWNvbnN0IHhvPW0oIlpvZEJhc2U2NCIsKGUsdCk9PntFaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBCYyhlKXtyZXR1cm4gUWEoeG8sZSl9Y29uc3QgSW89bSgiWm9kQmFzZTY0VVJMIiwoZSx0KT0+e09oLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEZjKGUpe3JldHVybiBYYShJbyxlKX1jb25zdCBBbz1tKCJab2RFMTY0IiwoZSx0KT0+e05oLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFVjKGUpe3JldHVybiBlYyhBbyxlKX1jb25zdCBzcj1tKCJab2RDcmVkaXRDYXJkIiwoZSx0KT0+e2poLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEhjKGUpe3JldHVybiBNbShzcixlKX1jb25zdCBycj1tKCJab2RJQkFOIiwoZSx0KT0+e3FoLmluaXQoZSx0KSxYLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFdjKGUpe3JldHVybiBxbShycixlKX1jb25zdCBDbz1tKCJab2RKV1QiLChlLHQpPT57RGguaW5pdChlLHQpLFguaW5pdChlLHQpfSk7ZnVuY3Rpb24gVmMoZSl7cmV0dXJuIHRjKENvLGUpfWNvbnN0IG10PW0oIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntCaC5pbml0KGUsdCksWC5pbml0KGUsdCl9KTtmdW5jdGlvbiBKYyhlLHQsbj17fSl7cmV0dXJuIHNuKG10LGUsdCxuKX1mdW5jdGlvbiBLYyhlKXtyZXR1cm4gc24obXQsImhvc3RuYW1lIiwkcCxlKX1mdW5jdGlvbiBHYyhlKXtyZXR1cm4gc24obXQsImhleCIsanAsZSl9ZnVuY3Rpb24gWWMoZSl7cmV0dXJuIHNuKG10LCJjdXJyZW5jeV9jb2RlIixfcCxlKX1mdW5jdGlvbiBRYyhlLHQpe2NvbnN0IG49dD8uZW5jPz8iaGV4IixvPWAke2V9XyR7bn1gLHM9V3Nbb107aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gc24obXQsbyxzLHQpfWNvbnN0IHBuPW0oIlpvZE51bWJlciIsKGUsdCk9PntiYS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmV5KCksZS5pc0Zpbml0ZT0hMH0sVW4oe21pblZhbHVlOmU9Pntjb25zdHttaW5pbXVtOnQsZXhjbHVzaXZlTWluaW11bTpufT1NZSgpO3JldHVybiBNYXRoLm1heCh0Pz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbj8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sbWF4VmFsdWU6ZT0+e2NvbnN0e21heGltdW06dCxleGNsdXNpdmVNYXhpbXVtOm59PU1lKCk7cmV0dXJuIE1hdGgubWluKHQ/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxpc0ludDplPT57Y29uc3R7aXNJbnQ6dCxtdWx0aXBsZU9mOm59PU1lKCk7cmV0dXJuISF0fHwhIW4/LnNvbWUoTnVtYmVyLmlzU2FmZUludGVnZXIpfSxmb3JtYXQ6ZT0+TWUoKS5mb3JtYXQ/P251bGx9LHtndChlLHQpe3JldHVybiB0aGlzLmNoZWNrKHR0KGUsdCkpfSxndGUoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhQZShlLHQpKX0sbWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soUGUoZSx0KSl9LGx0KGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soZXQoZSx0KSl9LGx0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKENlKGUsdCkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhDZShlLHQpKX0saW50KGUpe3JldHVybiB0aGlzLmNoZWNrKGpuKGUpKX0sc2FmZShlKXtyZXR1cm4gdGhpcy5jaGVjayhqbihlKSl9LHBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKHR0KDAsZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhQZSgwLGUpKX0sbmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuY2hlY2soZXQoMCxlKSl9LG5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKENlKDAsZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soX3QoZSx0KSl9LHN0ZXAoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhfdChlLHQpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSkpO2Z1bmN0aW9uIHEoZSl7cmV0dXJuIExtKHBuLGUpfWNvbnN0IGZ0PW0oIlpvZE51bWJlckZvcm1hdCIsKGUsdCk9PntGaC5pbml0KGUsdCkscG4uaW5pdChlLHQpfSk7ZnVuY3Rpb24gam4oZSl7cmV0dXJuIEJtKGZ0LGUpfWZ1bmN0aW9uIFhjKGUpe3JldHVybiBGbShmdCxlKX1mdW5jdGlvbiBlbChlKXtyZXR1cm4gVW0oZnQsZSl9ZnVuY3Rpb24gdGwoZSl7cmV0dXJuIEhtKGZ0LGUpfWZ1bmN0aW9uIG5sKGUpe3JldHVybiBXbShmdCxlKX1jb25zdCBobj1tKCJab2RCb29sZWFuIiwoZSx0KT0+e3ZhLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+dHkoKX0pO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIFZtKGhuLGUpfWNvbnN0IG1uPW0oIlpvZEJpZ0ludCIsKGUsdCk9Pnt5YS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pm55KCl9LFVuKHttaW5WYWx1ZTplPT5NZSgpLm1pbmltdW0/P251bGwsbWF4VmFsdWU6ZT0+TWUoKS5tYXhpbXVtPz9udWxsLGZvcm1hdDplPT5NZSgpLmZvcm1hdD8/bnVsbH0se2d0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKFBlKGUsdCkpfSxtaW4oZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhQZShlLHQpKX0sZ3QoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayh0dChlLHQpKX0sbHQoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhldChlLHQpKX0sbHRlKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soQ2UoZSx0KSl9LG1heChlLHQpe3JldHVybiB0aGlzLmNoZWNrKENlKGUsdCkpfSxwb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayh0dChCaWdJbnQoMCksZSkpfSxuZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhldChCaWdJbnQoMCksZSkpfSxub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhDZShCaWdJbnQoMCksZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhQZShCaWdJbnQoMCksZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soX3QoZSx0KSl9fSkpO2Z1bmN0aW9uIG9sKGUpe3JldHVybiBLbShtbixlKX1jb25zdCBQbz1tKCJab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57VWguaW5pdChlLHQpLG1uLmluaXQoZSx0KX0pO2Z1bmN0aW9uIHNsKGUpe3JldHVybiBZbShQbyxlKX1mdW5jdGlvbiBybChlKXtyZXR1cm4gUW0oUG8sZSl9Y29uc3QgaXI9bSgiWm9kU3ltYm9sIiwoZSx0KT0+e0hoLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+b3koKX0pO2Z1bmN0aW9uIGlsKGUpe3JldHVybiBYbShpcixlKX1jb25zdCBhcj1tKCJab2RVbmRlZmluZWQiLChlLHQpPT57V2guaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5yeSgpfSk7ZnVuY3Rpb24gS3QoZSl7cmV0dXJuIGVmKGFyLGUpfWNvbnN0IGNyPW0oIlpvZE51bGwiLChlLHQpPT57VmguaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5zeSgpfSk7ZnVuY3Rpb24gRW8oZSl7cmV0dXJuIHRmKGNyLGUpfWNvbnN0IGxyPW0oIlpvZEFueSIsKGUsdCk9PntKaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmN5KCl9KTtmdW5jdGlvbiBSbygpe3JldHVybiBuZihscil9Y29uc3QgdXI9bSgiWm9kVW5rbm93biIsKGUsdCk9PntLaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pmx5KCl9KTtmdW5jdGlvbiBZKCl7cmV0dXJuIG9mKHVyKX1jb25zdCBkcj1tKCJab2ROZXZlciIsKGUsdCk9PntHaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmF5KCl9KTtmdW5jdGlvbiBTdChlKXtyZXR1cm4gc2YoZHIsZSl9Y29uc3QgcHI9bSgiWm9kVm9pZCIsKGUsdCk9PntZaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pml5KCl9KTtmdW5jdGlvbiBhbChlKXtyZXR1cm4gcmYocHIsZSl9Y29uc3QgT289bSgiWm9kRGF0ZSIsKGUsdCk9PntRaC5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnV5KCksZS5taW49KG4sbyk9PmUuY2hlY2soUGUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soQ2UobixvKSl9LFVuKHttaW5EYXRlOmU9Pntjb25zdHttaW5pbXVtOnR9PU1lKCk7cmV0dXJuIHQ/bmV3IERhdGUodCk6bnVsbH0sbWF4RGF0ZTplPT57Y29uc3R7bWF4aW11bTp0fT1NZSgpO3JldHVybiB0P25ldyBEYXRlKHQpOm51bGx9fSx7fSkpO2Z1bmN0aW9uIGNsKGUpe3JldHVybiBhZihPbyxlKX1jb25zdCBocj1tKCJab2RBcnJheSIsKGUsdCk9PntOdCgpLFhoLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+d3koKSxlLmVsZW1lbnQ9dC5lbGVtZW50fSx7bWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2socHQoZSx0KSl9LG5vbmVtcHR5KGUpe3JldHVybiB0aGlzLmNoZWNrKHB0KDEsZSkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhubihlLHQpKX0sbGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2sob24oZSx0KSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSk7ZnVuY3Rpb24gUihlLHQpe3JldHVybiB1ZihocixlLHQpfWZ1bmN0aW9uIGxsKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZi5zaGFwZTtyZXR1cm4gZmUoT2JqZWN0LmtleXModCkpfWNvbnN0IGZuPW0oIlpvZE9iamVjdCIsKGUsdCk9PntOdCgpLG9tLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+X3koKSxHZChlLCJzaGFwZSIsbj0+bi5fem9kLmRlZi5zaGFwZSwhMSl9LHtrZXlvZigpe3JldHVybiBmZShPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKGUpe3JldHVybiB0aGlzLmNsb25lKHllKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOmV9KSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUoeWUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6WSgpfSkpfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHllKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOlkoKX0pKX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUoeWUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6U3QoKX0pKX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh5ZSh0aGlzLl96b2QuZGVmLHtjYXRjaGFsbDp2b2lkIDB9KSl9LGV4dGVuZChlKXtyZXR1cm4gTGQodGhpcyxlKX0sc2FmZUV4dGVuZChlKXtyZXR1cm4gQmQodGhpcyxlKX0sbWVyZ2UoZSl7cmV0dXJuIEZkKHRoaXMsZSl9LHBpY2soZSl7cmV0dXJuIE1kKHRoaXMsZSl9LG9taXQoZSl7cmV0dXJuIHFkKHRoaXMsZSl9LHBhcnRpYWwoLi4uZSl7cmV0dXJuIGZpKHZuLHRoaXMsZVswXSl9LGV4YWN0UGFydGlhbCguLi5lKXtyZXR1cm4gZmkoam8sdGhpcyxlWzBdLCJleGFjdFBhcnRpYWwiKX0scmVxdWlyZWQoLi4uZSl7cmV0dXJuIFVkKE1vLHRoaXMsZVswXSl9fSk7ZnVuY3Rpb24gdihlLHQpe2NvbnN0IG49e3R5cGU6Im9iamVjdCIsc2hhcGU6ZT8/e30sLi4udyh0KX07cmV0dXJuIG5ldyBmbihuKX1mdW5jdGlvbiB1bChlLHQpe3JldHVybiBuZXcgZm4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpTdCgpLC4uLncodCl9KX1mdW5jdGlvbiBtZShlLHQpe3JldHVybiBuZXcgZm4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpZKCksLi4udyh0KX0pfWNvbnN0IGduPW0oIlpvZFVuaW9uIiwoZSx0KT0+e1ZzLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+JGYoKSxlLm9wdGlvbnM9dC5vcHRpb25zfSk7ZnVuY3Rpb24gQihlLHQpe3JldHVybiBuZXcgZ24oe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4udyh0KX0pfWNvbnN0IG1yPW0oIlpvZFhvciIsKGUsdCk9Pntnbi5pbml0KGUsdCksc20uaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT4kZigpLGUub3B0aW9ucz10Lm9wdGlvbnN9KTtmdW5jdGlvbiBkbChlLHQpe3JldHVybiBuZXcgbXIoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLncodCl9KX1jb25zdCBmcj1tKCJab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57Z24uaW5pdChlLHQpLGltLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE5vKGUsdCxuKXtyZXR1cm4gbmV3IGZyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGRpc2NyaW1pbmF0b3I6ZSwuLi53KG4pfSl9Y29uc3QgZ3I9bSgiWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e2FtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+U3koKX0pO2Z1bmN0aW9uIGJuKGUsdCl7cmV0dXJuIG5ldyBncih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OmUscmlnaHQ6dH0pfWNvbnN0IGJyPW0oIlpvZFR1cGxlIiwoZSx0KT0+e050KCksa2EuaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5UeSgpfSx7cmVzdChlKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixyZXN0OmV9KX0scGFydGlhbCgpe2NvbnN0IGU9dGhpcy5fem9kLmRlZjtpZihlLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiB0dXBsZSBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtyZXR1cm4gdGhpcy5jbG9uZSh7Li4uZSxpdGVtczplLml0ZW1zLm1hcCh0PT5uZXcgdm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pKX0pfX0pO2Z1bmN0aW9uIHZyKGUsdCxuKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBNLHM9bz9uOnQscj1vP3Q6bnVsbDtyZXR1cm4gbmV3IGJyKHt0eXBlOiJ0dXBsZSIsaXRlbXM6ZSxyZXN0OnIsLi4udyhzKX0pfWNvbnN0IFR0PW0oIlpvZFJlY29yZCIsKGUsdCk9PntOdCgpLGNtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+enkoKSxlLmtleVR5cGU9dC5rZXlUeXBlLGUudmFsdWVUeXBlPXQudmFsdWVUeXBlfSk7ZnVuY3Rpb24gSChlLHQsbil7cmV0dXJuIXR8fCF0Ll96b2Q/bmV3IFR0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZygpLHZhbHVlVHlwZTplLC4uLncodCl9KTpuZXcgVHQoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LC4uLncobil9KX1mdW5jdGlvbiBwbChlLHQsbil7cmV0dXJuIG5ldyBUdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOmUsdmFsdWVUeXBlOnQsLi4udyhuKSxwYXJ0aWFsOiEwfSl9ZnVuY3Rpb24gaGwoZSx0LG4pe3JldHVybiBuZXcgVHQoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LG1vZGU6Imxvb3NlIiwuLi53KG4pfSl9Y29uc3QgeXI9bSgiWm9kTWFwIiwoZSx0KT0+e050KCksbG0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT4keSgpLGUua2V5VHlwZT10LmtleVR5cGUsZS52YWx1ZVR5cGU9dC52YWx1ZVR5cGUsZS5taW49KC4uLm4pPT5lLmNoZWNrKG50KC4uLm4pKSxlLm5vbmVtcHR5PW49PmUuY2hlY2sobnQoMSxuKSksZS5tYXg9KC4uLm4pPT5lLmNoZWNrKE90KC4uLm4pKSxlLnNpemU9KC4uLm4pPT5lLmNoZWNrKHRuKC4uLm4pKX0pO2Z1bmN0aW9uIG1sKGUsdCxuKXtyZXR1cm4gbmV3IHlyKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6dCwuLi53KG4pfSl9Y29uc3QgJHI9bSgiWm9kU2V0IiwoZSx0KT0+e050KCksdW0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5reSgpLGUubWluPSguLi5uKT0+ZS5jaGVjayhudCguLi5uKSksZS5ub25lbXB0eT1uPT5lLmNoZWNrKG50KDEsbikpLGUubWF4PSguLi5uKT0+ZS5jaGVjayhPdCguLi5uKSksZS5zaXplPSguLi5uKT0+ZS5jaGVjayh0biguLi5uKSl9KTtmdW5jdGlvbiBmbChlLHQpe3JldHVybiBuZXcgJHIoe3R5cGU6InNldCIsdmFsdWVUeXBlOmUsLi4udyh0KX0pfWNvbnN0IHp0PW0oIlpvZEVudW0iLChlLHQpPT57ZG0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxzLHIpPT5keSgpLGUuZW51bT10LmVudHJpZXMsZS5vcHRpb25zPVsuLi5lLl96b2QudmFsdWVzXTtjb25zdCBuPW5ldyBTZXQoT2JqZWN0LmtleXModC5lbnRyaWVzKSk7ZS5leHRyYWN0PShvLHMpPT57Y29uc3Qgcj17fTtmb3IoY29uc3QgaSBvZiBvKWlmKG4uaGFzKGkpKXJbaV09dC5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgenQoey4uLnQsY2hlY2tzOltdLC4uLncocyksZW50cmllczpyfSl9LGUuZXhjbHVkZT0obyxzKT0+e2NvbnN0IHI9ey4uLnQuZW50cmllc307Zm9yKGNvbnN0IGkgb2YgbylpZihuLmhhcyhpKSlkZWxldGUgcltpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IHp0KHsuLi50LGNoZWNrczpbXSwuLi53KHMpLGVudHJpZXM6cn0pfX0pO2Z1bmN0aW9uIGZlKGUsdCl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChvPT5bbyxvXSkpOmU7cmV0dXJuIG5ldyB6dCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLncodCl9KX1mdW5jdGlvbiBnbChlLHQpe3JldHVybiBuZXcgenQoe3R5cGU6ImVudW0iLGVudHJpZXM6ZSwuLi53KHQpfSl9Y29uc3Qga3I9bSgiWm9kTGl0ZXJhbCIsKGUsdCk9PntwbS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnB5KCksZS52YWx1ZXM9bmV3IFNldCh0LnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhbHVlIix7Z2V0KCl7aWYodC52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiB0LnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIGIoZSx0KXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShlKT9lOltlXSwuLi53KHQpfSl9Y29uc3Qgd3I9bSgiWm9kRmlsZSIsKGUsdCk9PntobS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmZ5KCksZS5taW49KG4sbyk9PmUuY2hlY2sobnQobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soT3QobixvKSksZS5taW1lPShuLG8pPT5lLmNoZWNrKGlvKEFycmF5LmlzQXJyYXkobik/bjpbbl0sbykpfSk7ZnVuY3Rpb24gYmwoZSl7cmV0dXJuIGRmKHdyLGUpfWNvbnN0IF9yPW0oIlpvZFRyYW5zZm9ybSIsKGUsdCk9PntOdCgpLG1tLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+eXkoKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IHFzKGUuY29uc3RydWN0b3IubmFtZSk7bi5hZGRJc3N1ZT1yPT57aWYodHlwZW9mIHI9PSJzdHJpbmciKW4uaXNzdWVzLnB1c2goVnQocixuLnZhbHVlLHQpKTtlbHNle2NvbnN0IGk9cjtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gaXx8KGkuaW5wdXQ9bi52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLG4uaXNzdWVzLnB1c2goVnQoaSkpfX07Y29uc3Qgcz10LnRyYW5zZm9ybShuLnZhbHVlLG4pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+KG4udmFsdWU9cixuKSk6KG4udmFsdWU9cyxuKX19KTtmdW5jdGlvbiBabyhlKXtyZXR1cm4gbmV3IF9yKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3Qgdm49bSgiWm9kT3B0aW9uYWwiLChlLHQpPT57d2EuaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5rZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIG5lKGUpe3JldHVybiBuZXcgdm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IGpvPW0oIlpvZEV4YWN0T3B0aW9uYWwiLChlLHQpPT57Zm0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5rZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFNyKGUpe3JldHVybiBuZXcgam8oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IFRyPW0oIlpvZE51bGxhYmxlIiwoZSx0KT0+e2dtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+eHkoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBHdChlKXtyZXR1cm4gbmV3IFRyKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOmV9KX1mdW5jdGlvbiB2bChlKXtyZXR1cm4gbmUoR3QoZSkpfWNvbnN0IHpyPW0oIlpvZERlZmF1bHQiLChlLHQpPT57Ym0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5BeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZURlZmF1bHQ9ZS51bndyYXB9KTtmdW5jdGlvbiB4cihlLHQpe3JldHVybiBuZXcgenIoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOlJzKHQpfX0pfWNvbnN0IElyPW0oIlpvZFByZWZhdWx0IiwoZSx0KT0+e3ZtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+Q3koKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBBcihlLHQpe3JldHVybiBuZXcgSXIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoKTpScyh0KX19KX1jb25zdCBNbz1tKCJab2ROb25PcHRpb25hbCIsKGUsdCk9Pnt5bS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkl5KCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gQ3IoZSx0KXtyZXR1cm4gbmV3IE1vKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4udyh0KX0pfWNvbnN0IFByPW0oIlpvZFN1Y2Nlc3MiLChlLHQpPT57JG0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5neSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHlsKGUpe3JldHVybiBuZXcgUHIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTplfSl9Y29uc3QgRXI9bSgiWm9kQ2F0Y2giLChlLHQpPT57a20uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5QeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZUNhdGNoPWUudW53cmFwfSk7ZnVuY3Rpb24gUnIoZSx0KXtyZXR1cm4gbmV3IEVyKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OlVpKHQpfSl9Y29uc3QgT3I9bSgiWm9kTmFOIiwoZSx0KT0+e3dtLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aHkoKX0pO2Z1bmN0aW9uICRsKGUpe3JldHVybiBsZihPcixlKX1jb25zdCB5bj1tKCJab2RQaXBlIiwoZSx0KT0+e19hLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+RXkoKSxlLmluPXQuaW4sZS5vdXQ9dC5vdXR9KTtmdW5jdGlvbiBNbihlLHQpe3JldHVybiBuZXcgeW4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnR9KX1jb25zdCAkbj1tKCJab2RDb2RlYyIsKGUsdCk9Pnt5bi5pbml0KGUsdCksU2EuaW5pdChlLHQpfSk7ZnVuY3Rpb24ga2woZSx0LG4pe3JldHVybiBuZXcgJG4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnQsdHJhbnNmb3JtOm4uZGVjb2RlLHJldmVyc2VUcmFuc2Zvcm06bi5lbmNvZGV9KX1mdW5jdGlvbiB3bChlKXtjb25zdCB0PWUuX3pvZC5kZWY7cmV0dXJuIG5ldyAkbih7dHlwZToicGlwZSIsaW46dC5vdXQsb3V0OnQuaW4sdHJhbnNmb3JtOnQucmV2ZXJzZVRyYW5zZm9ybSxyZXZlcnNlVHJhbnNmb3JtOnQudHJhbnNmb3JtfSl9Y29uc3QgTnI9bSgiWm9kUHJlcHJvY2VzcyIsKGUsdCk9Pnt5bi5pbml0KGUsdCksX20uaW5pdChlLHQpfSksWnI9bSgiWm9kUmVhZG9ubHkiLChlLHQpPT57U20uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5SeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGpyKGUpe3JldHVybiBuZXcgWnIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6ZX0pfWNvbnN0IE1yPW0oIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUsdCk9PntUbS5pbml0KGUsdCksTC5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pm15KCl9KTtmdW5jdGlvbiBfbChlLHQpe3JldHVybiBuZXcgTXIoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4udyh0KX0pfWNvbnN0IHFyPW0oIlpvZExhenkiLChlLHQpPT57VGEuaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5OeSgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gTHIoZSl7cmV0dXJuIG5ldyBxcih7dHlwZToibGF6eSIsZ2V0dGVyOmV9KX1jb25zdCBEcj1tKCJab2RQcm9taXNlIiwoZSx0KT0+e3htLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+T3koKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBTbChlKXtyZXR1cm4gbmV3IERyKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IEJyPW0oIlpvZEZ1bmN0aW9uIiwoZSx0KT0+e3ptLmluaXQoZSx0KSxMLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+dnkoKX0pO2Z1bmN0aW9uIFl0KGUpe3JldHVybiBuZXcgQnIoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KGU/LmlucHV0KT92cihlPy5pbnB1dCk6ZT8uaW5wdXQ/P1IoWSgpKSxvdXRwdXQ6ZT8ub3V0cHV0Pz9ZKCl9KX1jb25zdCBrbj1tKCJab2RDdXN0b20iLChlLHQpPT57SW0uaW5pdChlLHQpLEwuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5ieSgpfSk7ZnVuY3Rpb24gVGwoZSl7Y29uc3QgdD1uZXcgaWUoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gRnIoZSx0KXtyZXR1cm4gcGYoa24sZT8/KCgpPT4hMCksdCl9ZnVuY3Rpb24gVXIoZSx0PXt9KXtyZXR1cm4gaGYoa24sZSx0KX1mdW5jdGlvbiBIcihlLHQpe3JldHVybiBtZihlLHQpfWNvbnN0IHpsPWdmLHhsPWJmLFdyPW0oIlpvZEluc3RhbmNlT2YiLChlLHQpPT57a24uaW5pdChlLHQpfSx7cHJvcGVydGllcyhlLHQpe3JldHVybiB0aGlzLmNoZWNrKHJvKGUsdCkpfX0pO2Z1bmN0aW9uIElsKGUsdD17fSl7Y29uc3Qgbj1uZXcgV3Ioe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4udyh0KX0pO3JldHVybiBuLl96b2QuYmFnLkNsYXNzPWUsbi5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgZXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDplLm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0Om4scGF0aDpbLi4ubi5fem9kLmRlZi5wYXRoPz9bXV19KX0sbn1jb25zdCBBbD0oLi4uZSk9PnZmKHtDb2RlYzokbixCb29sZWFuOmhuLFN0cmluZzpybn0sLi4uZSk7ZnVuY3Rpb24gQ2woZSl7Y29uc3QgdD1McigoKT0+QihbZyhlKSxxKCksUSgpLEVvKCksUih0KSxIKGcoKSx0KV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBxbyhlLHQpe3JldHVybiBuZXcgTnIoe3R5cGU6InBpcGUiLGluOlpvKGUpLG91dDp0fSl9Y29uc3QgQnk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpscixab2RBcnJheTpocixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDptbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjpobixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6eW8sWm9kQ2F0Y2g6RXIsWm9kQ29kZWM6JG4sWm9kQ3JlZGl0Q2FyZDpzcixab2RDdXN0b206a24sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Om10LFpvZERhdGU6T28sWm9kRGVmYXVsdDp6cixab2REaXNjcmltaW5hdGVkVW5pb246ZnIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOnp0LFpvZEV4YWN0T3B0aW9uYWw6am8sWm9kRmlsZTp3cixab2RGdW5jdGlvbjpCcixab2RHVUlEOmZvLFpvZElCQU46cnIsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6Y24sWm9kSVNPRGF0ZVRpbWU6YW4sWm9kSVNPRHVyYXRpb246dW4sWm9kSVNPVGltZTpsbixab2RJbnN0YW5jZU9mOldyLFpvZEludGVyc2VjdGlvbjpncixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpxcixab2RMaXRlcmFsOmtyLFpvZE1BQzpvcixab2RNYXA6eXIsWm9kTmFOOk9yLFpvZE5hbm9JRDpibyxab2ROZXZlcjpkcixab2ROb25PcHRpb25hbDpNbyxab2ROdWxsOmNyLFpvZE51bGxhYmxlOlRyLFpvZE51bWJlcjpwbixab2ROdW1iZXJGb3JtYXQ6ZnQsWm9kT2JqZWN0OmZuLFpvZE9wdGlvbmFsOnZuLFpvZFBpcGU6eW4sWm9kUHJlZmF1bHQ6SXIsWm9kUHJlcHJvY2VzczpOcixab2RQcm9taXNlOkRyLFpvZFJlYWRvbmx5OlpyLFpvZFJlY29yZDpUdCxab2RTZXQ6JHIsWm9kU3RyaW5nOnJuLFpvZFN0cmluZ0Zvcm1hdDpYLFpvZFN1Y2Nlc3M6UHIsWm9kU3ltYm9sOmlyLFpvZFRlbXBsYXRlTGl0ZXJhbDpNcixab2RUcmFuc2Zvcm06X3IsWm9kVHVwbGU6YnIsWm9kVHlwZTpMLFpvZFVMSUQ6JG8sWm9kVVJMOmRuLFpvZFVVSUQ6SGUsWm9kVW5kZWZpbmVkOmFyLFpvZFVuaW9uOmduLFpvZFVua25vd246dXIsWm9kVm9pZDpwcixab2RYSUQ6a28sWm9kWG9yOm1yLF9ab2RTdHJpbmc6aG8sX2RlZmF1bHQ6eHIsX2Z1bmN0aW9uOll0LGFueTpSbyxhcnJheTpSLGJhc2U2NDpCYyxiYXNlNjR1cmw6RmMsYmlnaW50Om9sLGJvb2xlYW46USxjYXRjaDpScixjaGVjazpUbCxjaWRydjQ6TGMsY2lkcnY2OkRjLGNvZGVjOmtsLGNyZWRpdENhcmQ6SGMsY3VpZDpFYyxjdWlkMjpSYyxjdXJyZW5jeUNvZGU6WWMsY3VzdG9tOkZyLGRhdGU6Y2wsZGVzY3JpYmU6emwsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6VWMsZW1haWw6d2MsZW1vamk6Q2MsZW51bTpmZSxleGFjdE9wdGlvbmFsOlNyLGZpbGU6YmwsZmxvYXQzMjpYYyxmbG9hdDY0OmVsLGZ1bmN0aW9uOll0LGd1aWQ6X2MsaGFzaDpRYyxoZXg6R2MsaG9zdG5hbWU6S2MsaHR0cFVybDpBYyxpYmFuOldjLGluc3RhbmNlb2Y6SWwsaW50OmpuLGludDMyOnRsLGludDY0OnNsLGludGVyc2VjdGlvbjpibixpbnZlcnRDb2RlYzp3bCxpcHY0OmpjLGlwdjY6cWMsanNvbjpDbCxqd3Q6VmMsa2V5b2Y6bGwsa3N1aWQ6WmMsbGF6eTpMcixsaXRlcmFsOmIsbG9vc2VPYmplY3Q6bWUsbG9vc2VSZWNvcmQ6aGwsbWFjOk1jLG1hcDptbCxtZXRhOnhsLG5hbjokbCxuYW5vaWQ6UGMsbmF0aXZlRW51bTpnbCxuZXZlcjpTdCxub25vcHRpb25hbDpDcixudWxsOkVvLG51bGxhYmxlOkd0LG51bGxpc2g6dmwsbnVtYmVyOnEsb2JqZWN0OnYsb3B0aW9uYWw6bmUscGFydGlhbFJlY29yZDpwbCxwaXBlOk1uLHByZWZhdWx0OkFyLHByZXByb2Nlc3M6cW8scHJvbWlzZTpTbCxyZWFkb25seTpqcixyZWNvcmQ6SCxyZWZpbmU6VXIsc2V0OmZsLHN0cmljdE9iamVjdDp1bCxzdHJpbmc6ZyxzdHJpbmdGb3JtYXQ6SmMsc3RyaW5nYm9vbDpBbCxzdWNjZXNzOnlsLHN1cGVyUmVmaW5lOkhyLHN5bWJvbDppbCx0ZW1wbGF0ZUxpdGVyYWw6X2wsdHJhbnNmb3JtOlpvLHR1cGxlOnZyLHVpbnQzMjpubCx1aW50NjQ6cmwsdWxpZDpPYyx1bmRlZmluZWQ6S3QsdW5pb246Qix1bmtub3duOlksdXJsOkljLHV1aWQ6U2MsdXVpZHY0OlRjLHV1aWR2Njp6Yyx1dWlkdjc6eGMsdm9pZDphbCx4aWQ6TmMseG9yOmRsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHpmPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiB4ZihlKXtoZSh7Y3VzdG9tRXJyb3I6ZX0pfWZ1bmN0aW9uIElmKCl7cmV0dXJuIGhlKCkuY3VzdG9tRXJyb3J9dmFyIHZzO3ZzfHwodnM9e30pO2Z1bmN0aW9uIEFmKGUpe3JldHVybiBvYyhhbixlKX1mdW5jdGlvbiBGeShlKXtyZXR1cm4gc2MoY24sZSl9ZnVuY3Rpb24gVXkoZSl7cmV0dXJuIHJjKGxuLGUpfWZ1bmN0aW9uIEh5KGUpe3JldHVybiBpYyh1bixlKX1jb25zdCBQbD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpjbixab2RJU09EYXRlVGltZTphbixab2RJU09EdXJhdGlvbjp1bixab2RJU09UaW1lOmxuLGRhdGU6RnksZGF0ZXRpbWU6QWYsZHVyYXRpb246SHksdGltZTpVeX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxJPXsuLi5CeSwuLi5MeSxpc286UGx9LFd5PW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIFZ5KGUsdCl7Y29uc3Qgbj1lLiRzY2hlbWE7cmV0dXJuIG49PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpuPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOm49PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6dD8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIEd1KGUsdCl7cmV0dXJuIGUubWFwKChuLG8pPT5vPHQ/bjpuLm9wdGlvbmFsKCkpfWZ1bmN0aW9uIEp5KGUpe3JldHVybiBlLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZnVuY3Rpb24gS3koZSx0KXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgbj1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdC5yb290U2NoZW1hO2NvbnN0IG89dC52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihuWzBdPT09byl7Y29uc3Qgcz1uWzFdPT09dm9pZCAwP3ZvaWQgMDpKeShuWzFdKTtpZighc3x8IXQuZGVmc1tzXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4gdC5kZWZzW3NdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApfWZ1bmN0aW9uIEd5KGUsdCl7cmV0dXJuIEkudHJhbnNmb3JtKG89Pm8pLmNoZWNrKG89Pntjb25zdCBzPW8udmFsdWU7aWYodHlwZW9mIHMhPSJvYmplY3QifHxzPT09bnVsbHx8QXJyYXkuaXNBcnJheShzKSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzKTtpZih0Lm1pblByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPHQubWluUHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pblByb3BlcnRpZXMsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6YFRvbyBzbWFsbDogZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgPj0ke3QubWluUHJvcGVydGllc30gcHJvcGVydGllc2AsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6ITB9KSx0Lm1heFByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPnQubWF4UHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19iaWciLG1heGltdW06dC5tYXhQcm9wZXJ0aWVzLGluY2x1c2l2ZTohMCxtZXNzYWdlOmBUb28gYmlnOiBleHBlY3RlZCBvYmplY3QgdG8gaGF2ZSA8PSR7dC5tYXhQcm9wZXJ0aWVzfSBwcm9wZXJ0aWVzYCxpbnB1dDpzLGluc3Q6ZSxjb250aW51ZTohMH0pLHQua2V5U2NoZW1hKWZvcihjb25zdCBpIG9mIHIpe2NvbnN0IGE9dC5rZXlTY2hlbWEuc2FmZVBhcnNlKGkpO2Euc3VjY2Vzc3x8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6YS5lcnJvci5pc3N1ZXMsaW5wdXQ6aSxwYXRoOltpXSxjb250aW51ZTohMH0pfX0pLnBpcGUoZSl9ZnVuY3Rpb24gU2koZSx0KXtpZihlPT09bnVsbClyZXR1cm4ieiI7Y29uc3Qgbj10eXBlb2YgZTtpZihuIT09Im9iamVjdCIpe2lmKG49PT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKGUpKXJldHVybiBudWxsO2NvbnN0IG89U3RyaW5nKGUpO3JldHVybmAke25bMF19JHtvLmxlbmd0aH06JHtvfWB9aWYodC5oYXMoZSkpcmV0dXJuIG51bGw7dC5hZGQoZSk7dHJ5e2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgYT1TaShpLHQpO2lmKGE9PT1udWxsKXJldHVybiBudWxsO3IucHVzaChhKX1yZXR1cm5gYSR7ci5sZW5ndGh9Olske3Iuam9pbigiLCIpfV1gfWNvbnN0IG89T2JqZWN0LmtleXMoZSkuc29ydCgpLHM9W107Zm9yKGNvbnN0IHIgb2Ygbyl7Y29uc3QgaT1TaShlW3JdLHQpO2lmKGk9PT1udWxsKXJldHVybiBudWxsO3MucHVzaChgJHtyLmxlbmd0aH06JHtyfT0ke2l9YCl9cmV0dXJuYG8ke3MubGVuZ3RofTp7JHtzLmpvaW4oIiwiKX19YH1maW5hbGx5e3QuZGVsZXRlKGUpfX1jb25zdCBZeT1uZXcgU2V0KFsiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29udGFpbnMiLCJwcm9wZXJ0eU5hbWVzIiwibm90IiwiaWYiLCJ0aGVuIiwiZWxzZSIsImFsbE9mIiwiYW55T2YiLCJvbmVPZiIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJjb250ZW50U2NoZW1hIl0pLFF5PW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW5jaWVzIiwiJGRlZnMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiBQbihlKXtyZXR1cm4gdHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbD8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZShQbik6dHlwZW9mIGUuJHJlZj09InN0cmluZyI/ITA6T2JqZWN0LmVudHJpZXMoZSkuc29tZSgoW3Qsbl0pPT5ZeS5oYXModCk/UG4obik6IVF5Lmhhcyh0KXx8dHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbD8hMTpPYmplY3QudmFsdWVzKG4pLnNvbWUoUG4pKX1mdW5jdGlvbiBZdShlKXtyZXR1cm4gZT09PTE/ImVsZW1lbnQiOiJlbGVtZW50cyJ9ZnVuY3Rpb24gWHkoZSx0KXtyZXR1cm4gSS50cmFuc2Zvcm0obz0+bykuY2hlY2sobz0+e2NvbnN0IHM9by52YWx1ZTtpZihBcnJheS5pc0FycmF5KHMpKXtpZih0LnVuaXF1ZUl0ZW1zPT09ITApe2NvbnN0IHI9bmV3IE1hcDtmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKyl7Y29uc3QgYT1TaShzW2ldLG5ldyBTZXQpO2lmKGE9PT1udWxsKWNvbnRpbnVlO2NvbnN0IHU9ci5nZXQoYSk7aWYodT09PXZvaWQgMCl7ci5zZXQoYSxpKTtjb250aW51ZX1vLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IGl0ZW1zIG11c3QgYmUgdW5pcXVlOiBlbGVtZW50IGF0IGluZGV4ICR7aX0gZHVwbGljYXRlcyB0aGUgb25lIGF0IGluZGV4ICR7dX1gLGlucHV0OnMscGF0aDpbaV0sY29udGludWU6ITB9KX19aWYodC5jb250YWluc1NjaGVtYSl7Y29uc3Qgcj10Lm1pbkNvbnRhaW5zPz8xLGk9dC5tYXhDb250YWlucyE9PXZvaWQgMD90Lm1heENvbnRhaW5zKzE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBhPTA7Zm9yKGNvbnN0IHUgb2YgcylpZih0LmNvbnRhaW5zU2NoZW1hLnNhZmVQYXJzZSh1KS5zdWNjZXNzJiYrK2E+PWkpYnJlYWs7YTxyJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCAke3J9IG1hdGNoaW5nICR7WXUocil9OyBmb3VuZCAke2F9YCxpbnB1dDpzLGNvbnRpbnVlOiEwfSksdC5tYXhDb250YWlucyE9PXZvaWQgMCYmYT50Lm1heENvbnRhaW5zJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBtb3N0ICR7dC5tYXhDb250YWluc30gbWF0Y2hpbmcgJHtZdSh0Lm1heENvbnRhaW5zKX1gLGlucHV0OnMsY29udGludWU6ITB9KX19fSkucGlwZShlKX1mdW5jdGlvbiBRdShlLHQpe2lmKGUhPT0hMSlyZXR1cm4gZT09PXZvaWQgMHx8ZT09PSEwP0kuYW55KCk6JGUoZSx0KX1jb25zdCBlJD0vXig/OlswMV1cZHwyWzAtM10pOlswLTVdXGQ6WzAtNV1cZCg/OlwuXGQrKT8oPzpafFsrLV0oPzpbMDFdXGR8MlswLTNdKTpbMC01XVxkKSQvO2Z1bmN0aW9uIENmKGUsdCl7aWYoZS5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiBlLm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKGUubm90KS5sZW5ndGg9PT0wKXJldHVybiBJLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYoZS51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuaWYhPT12b2lkIDB8fGUudGhlbiE9PXZvaWQgMHx8ZS5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8ZS5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYoZS4kcmVmKXtjb25zdCBzPWUuJHJlZjtpZih0LnJlZnMuaGFzKHMpKXJldHVybiB0LnJlZnMuZ2V0KHMpO2lmKHQucHJvY2Vzc2luZy5oYXMocykpcmV0dXJuIEkubGF6eSgoKT0+e2lmKCF0LnJlZnMuaGFzKHMpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtzfWApO3JldHVybiB0LnJlZnMuZ2V0KHMpfSk7dC5wcm9jZXNzaW5nLmFkZChzKTtjb25zdCByPUt5KHMsdCksaT0kZShyLHQpO3JldHVybiB0LnJlZnMuc2V0KHMsaSksdC5wcm9jZXNzaW5nLmRlbGV0ZShzKSxpfWlmKGUuZW51bSE9PXZvaWQgMCl7Y29uc3Qgcz1lLmVudW07aWYodC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmZS5udWxsYWJsZT09PSEwJiZzLmxlbmd0aD09PTEmJnNbMF09PT1udWxsKXJldHVybiBJLm51bGwoKTtpZihzLmxlbmd0aD09PTApcmV0dXJuIEkubmV2ZXIoKTtpZihzLmxlbmd0aD09PTEpcmV0dXJuIEkubGl0ZXJhbChzWzBdKTtpZihzLmV2ZXJ5KGk9PnR5cGVvZiBpPT0ic3RyaW5nIikpcmV0dXJuIEkuZW51bShzKTtjb25zdCByPXMubWFwKGk9PkkubGl0ZXJhbChpKSk7cmV0dXJuIHIubGVuZ3RoPDI/clswXTpJLnVuaW9uKFtyWzBdLHJbMV0sLi4uci5zbGljZSgyKV0pfWlmKGUuY29uc3QhPT12b2lkIDApcmV0dXJuIEkubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBuPWUudHlwZTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPW4ubWFwKHI9Pntjb25zdCBpPXsuLi5lLHR5cGU6cn07cmV0dXJuIENmKGksdCl9KTtyZXR1cm4gcy5sZW5ndGg9PT0wP0kubmV2ZXIoKTpzLmxlbmd0aD09PTE/c1swXTpJLnVuaW9uKHMpfWlmKCFuKXJldHVybiBJLmFueSgpO2xldCBvO3N3aXRjaChuKXtjYXNlInN0cmluZyI6e2xldCBzPUkuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IHI9ZS5mb3JtYXQ7cj09PSJlbWFpbCI/cz1zLmNoZWNrKEkuZW1haWwoKSk6cj09PSJ1cmkifHxyPT09InVyaS1yZWZlcmVuY2UiP3M9cy5jaGVjayhJLnVybCgpKTpyPT09InV1aWQifHxyPT09Imd1aWQiP3M9cy5jaGVjayhJLnV1aWQoKSk6cj09PSJkYXRlLXRpbWUiP3M9cy5jaGVjayhJLmlzby5kYXRldGltZSh7b2Zmc2V0OiEwfSkpOnI9PT0iZGF0ZSI/cz1zLmNoZWNrKEkuaXNvLmRhdGUoKSk6cj09PSJ0aW1lIj9zPXMuY2hlY2soSS5yZWdleChlJCkpOnI9PT0iZHVyYXRpb24iP3M9cy5jaGVjayhJLmlzby5kdXJhdGlvbigpKTpyPT09Imhvc3RuYW1lIj9zPXMuY2hlY2soSS5ob3N0bmFtZSgpKTpyPT09ImlwdjQiP3M9cy5jaGVjayhJLmlwdjQoKSk6cj09PSJpcHY2Ij9zPXMuY2hlY2soSS5pcHY2KCkpOnI9PT0ibWFjIj9zPXMuY2hlY2soSS5tYWMoKSk6cj09PSJjaWRyIj9zPXMuY2hlY2soSS5jaWRydjQoKSk6cj09PSJjaWRyLXY2Ij9zPXMuY2hlY2soSS5jaWRydjYoKSk6cj09PSJiYXNlNjQiP3M9cy5jaGVjayhJLmJhc2U2NCgpKTpyPT09ImJhc2U2NHVybCI/cz1zLmNoZWNrKEkuYmFzZTY0dXJsKCkpOnI9PT0iZTE2NCI/cz1zLmNoZWNrKEkuZTE2NCgpKTpyPT09ImNyZWRpdF9jYXJkIj9zPXMuY2hlY2soSS5jcmVkaXRDYXJkKCkpOnI9PT0iaWJhbiI/cz1zLmNoZWNrKEkuaWJhbigpKTpyPT09Imp3dCI/cz1zLmNoZWNrKEkuand0KCkpOnI9PT0iZW1vamkiP3M9cy5jaGVjayhJLmVtb2ppKCkpOnI9PT0ibmFub2lkIj9zPXMuY2hlY2soSS5uYW5vaWQoKSk6cj09PSJjdWlkIj9zPXMuY2hlY2soSS5jdWlkKCkpOnI9PT0iY3VpZDIiP3M9cy5jaGVjayhJLmN1aWQyKCkpOnI9PT0idWxpZCI/cz1zLmNoZWNrKEkudWxpZCgpKTpyPT09InhpZCI/cz1zLmNoZWNrKEkueGlkKCkpOnI9PT0ia3N1aWQiJiYocz1zLmNoZWNrKEkua3N1aWQoKSkpfXR5cGVvZiBlLm1pbkxlbmd0aD09Im51bWJlciImJihzPXMubWluKGUubWluTGVuZ3RoKSksdHlwZW9mIGUubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKHM9cy5tYXgoZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihzPXMucmVnZXgobmV3IFJlZ0V4cChlLnBhdHRlcm4pKSksbz1zO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgcz1uPT09ImludGVnZXIiP0kubnVtYmVyKCkuaW50KCk6SS5udW1iZXIoKTt0eXBlb2YgZS5taW5pbXVtPT0ibnVtYmVyIiYmZS5leGNsdXNpdmVNaW5pbXVtIT09ITAmJihzPXMubWluKGUubWluaW11bSkpLHR5cGVvZiBlLm1heGltdW09PSJudW1iZXIiJiZlLmV4Y2x1c2l2ZU1heGltdW0hPT0hMCYmKHM9cy5tYXgoZS5tYXhpbXVtKSksdHlwZW9mIGUuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/cz1zLmd0KGUuZXhjbHVzaXZlTWluaW11bSk6ZS5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiBlLm1pbmltdW09PSJudW1iZXIiJiYocz1zLmd0KGUubWluaW11bSkpLHR5cGVvZiBlLmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP3M9cy5sdChlLmV4Y2x1c2l2ZU1heGltdW0pOmUuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgZS5tYXhpbXVtPT0ibnVtYmVyIiYmKHM9cy5sdChlLm1heGltdW0pKSx0eXBlb2YgZS5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKHM9cy5tdWx0aXBsZU9mKGUubXVsdGlwbGVPZikpLG89czticmVha31jYXNlImJvb2xlYW4iOntvPUkuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289SS5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBzPXt9LHI9ZS5wcm9wZXJ0aWVzfHx7fSxpPW5ldyBTZXQoZS5yZXF1aXJlZHx8W10pLGE9dHlwZW9mIGUuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiPyRlKGUuYWRkaXRpb25hbFByb3BlcnRpZXMsdCk6dm9pZCAwO2Zvcihjb25zdFtoLGZdb2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0ICQ9JGUoZix0KTtSdChzLGgsaS5oYXMoaCk/JDokLm9wdGlvbmFsKCkpfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxmPU9iamVjdC5rZXlzKGgpLCQ9W107Zm9yKGNvbnN0IHogb2YgZil7Y29uc3QgQT0kZShoW3pdLHQpLHg9SS5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKHopKTskLnB1c2goSS5sb29zZVJlY29yZCh4LEEpKX1jb25zdCBrPVtdO2lmKE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZrLnB1c2goSS5vYmplY3QocykucGFzc3Rocm91Z2goKSksay5wdXNoKC4uLiQpLGsubGVuZ3RoPT09MClvPUkub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoay5sZW5ndGg9PT0xKW89a1swXTtlbHNle2xldCB6PUkuaW50ZXJzZWN0aW9uKGtbMF0sa1sxXSk7Zm9yKGxldCBBPTI7QTxrLmxlbmd0aDtBKyspej1JLmludGVyc2VjdGlvbih6LGtbQV0pO289en1pZihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2NvbnN0IHo9T2JqZWN0LmtleXMocyksQT1mLm1hcChUPT5uZXcgUmVnRXhwKFQpKSx4PW87bz1vLmNoZWNrKFQ9PntpZighZHQoVC52YWx1ZSkpcmV0dXJuO2NvbnN0IFo9W107Zm9yKGNvbnN0IHNlIG9mIE9iamVjdC5rZXlzKFQudmFsdWUpKXouaW5jbHVkZXMoc2UpfHxBLnNvbWUoSj0+Si50ZXN0KHNlKSl8fFoucHVzaChzZSk7Wi5sZW5ndGgmJlQuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOlosaW5wdXQ6VC52YWx1ZSxpbnN0Onh9KX0pfX1lbHNle2NvbnN0IGg9SS5vYmplY3Qocyk7ZS5hZGRpdGlvbmFsUHJvcGVydGllcz09PSExP289aC5zdHJpY3QoKTphP289aC5jYXRjaGFsbChhKTpvPWgucGFzc3Rocm91Z2goKX1jb25zdCB1PWUucHJvcGVydHlOYW1lcyE9PXZvaWQgMCYmZS5wcm9wZXJ0eU5hbWVzIT09ITAsZD10eXBlb2YgZS5taW5Qcm9wZXJ0aWVzPT0ibnVtYmVyIj9lLm1pblByb3BlcnRpZXM6dm9pZCAwLHA9dHlwZW9mIGUubWF4UHJvcGVydGllcz09Im51bWJlciI/ZS5tYXhQcm9wZXJ0aWVzOnZvaWQgMDtpZih1fHxkIT09dm9pZCAwfHxwIT09dm9pZCAwKXtsZXQgaDtpZih1KXtjb25zdCBmPXR5cGVvZiBlLnByb3BlcnR5TmFtZXM9PSJvYmplY3QiJiZlLnByb3BlcnR5TmFtZXMudHlwZT09PXZvaWQgMD97dHlwZToic3RyaW5nIiwuLi5lLnByb3BlcnR5TmFtZXN9OmUucHJvcGVydHlOYW1lcztoPSRlKGYsdCl9bz1HeShvLHtrZXlTY2hlbWE6aCxtaW5Qcm9wZXJ0aWVzOmQsbWF4UHJvcGVydGllczpwfSl9YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IHM9ZS5wcmVmaXhJdGVtcyxyPWUuaXRlbXM7aWYocyYmQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9cy5tYXAoaD0+JGUoaCx0KSksdT1HdShhLGkpLGQ9QXJyYXkuaXNBcnJheShyKT92b2lkIDA6UXUocix0KSxwPUkudHVwbGUodSk7bz1kP3AucmVzdChkKTpwLHR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhJLm1pbkxlbmd0aChlLm1pbkl0ZW1zKSkpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhJLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9ci5tYXAoaD0+JGUoaCx0KSksdT1HdShhLGkpLGQ9UXUoZS5hZGRpdGlvbmFsSXRlbXMsdCkscD1JLnR1cGxlKHUpO289ZD9wLnJlc3QoZCk6cCx0eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soSS5taW5MZW5ndGgoZS5taW5JdGVtcykpKSx0eXBlb2YgZS5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soSS5tYXhMZW5ndGgoZS5tYXhJdGVtcykpKX1lbHNlIGlmKHIhPT12b2lkIDApe2NvbnN0IGk9JGUocix0KTtsZXQgYT1JLmFycmF5KGkpO3R5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5taW4oZS5taW5JdGVtcykpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5tYXgoZS5tYXhJdGVtcykpLG89YX1lbHNlIG89SS5hcnJheShJLmFueSgpKTsoZS51bmlxdWVJdGVtcz09PSEwfHxlLmNvbnRhaW5zIT09dm9pZCAwKSYmKG89WHkobyx7dW5pcXVlSXRlbXM6ZS51bmlxdWVJdGVtcz09PSEwLGNvbnRhaW5zU2NoZW1hOmUuY29udGFpbnMhPT12b2lkIDA/JGUoZS5jb250YWlucyx0KTp2b2lkIDAsbWluQ29udGFpbnM6dHlwZW9mIGUubWluQ29udGFpbnM9PSJudW1iZXIiP2UubWluQ29udGFpbnM6dm9pZCAwLG1heENvbnRhaW5zOnR5cGVvZiBlLm1heENvbnRhaW5zPT0ibnVtYmVyIj9lLm1heENvbnRhaW5zOnZvaWQgMH0pKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZTogJHtufWApfXJldHVybiBvfWZ1bmN0aW9uICRlKGUsdCl7aWYodHlwZW9mIGU9PSJib29sZWFuIilyZXR1cm4gZT9JLmFueSgpOkkubmV2ZXIoKTtsZXQgbj1DZihlLHQpO2NvbnN0IG89ZS50eXBlfHxlLmVudW0hPT12b2lkIDB8fGUuY29uc3QhPT12b2lkIDA7aWYoZS5hbnlPZiYmQXJyYXkuaXNBcnJheShlLmFueU9mKSl7Y29uc3QgYT1lLmFueU9mLm1hcChkPT4kZShkLHQpKSx1PUkudW5pb24oYSk7bj1vP0kuaW50ZXJzZWN0aW9uKG4sdSk6dX1pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBhPWUub25lT2YubWFwKGQ9PiRlKGQsdCkpLHU9SS54b3IoYSk7bj1vP0kuaW50ZXJzZWN0aW9uKG4sdSk6dX1pZihlLmFsbE9mJiZBcnJheS5pc0FycmF5KGUuYWxsT2YpKWlmKGUuYWxsT2YubGVuZ3RoPT09MCluPW8/bjpJLmFueSgpO2Vsc2V7bGV0IGE9bz9uOiRlKGUuYWxsT2ZbMF0sdCk7Y29uc3QgdT1vPzA6MTtmb3IobGV0IGQ9dTtkPGUuYWxsT2YubGVuZ3RoO2QrKylhPUkuaW50ZXJzZWN0aW9uKGEsJGUoZS5hbGxPZltkXSx0KSk7bj1hfWUubnVsbGFibGU9PT0hMCYmdC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKG49SS5udWxsYWJsZShuKSksZS5yZWFkT25seT09PSEwJiYobj1JLnJlYWRvbmx5KG4pKSxlLmRlZmF1bHQhPT12b2lkIDAmJihuPW4uZGVmYXVsdChlLmRlZmF1bHQpKTtjb25zdCBzPXt9LHI9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBhIG9mIHIpYSBpbiBlJiYoc1thXT1lW2FdKTtjb25zdCBpPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgYSBvZiBpKWEgaW4gZSYmKHNbYV09ZVthXSk7aWYoZS50eXBlPT09Im9iamVjdCImJmUuJHJlZj09PXZvaWQgMCl7ZS5wcm9wZXJ0eU5hbWVzIT09dm9pZCAwJiYhUG4oZS5wcm9wZXJ0eU5hbWVzKSYmKHMucHJvcGVydHlOYW1lcz1lLnByb3BlcnR5TmFtZXMpO2Zvcihjb25zdCBhIG9mWyJtaW5Qcm9wZXJ0aWVzIiwibWF4UHJvcGVydGllcyJdKWVbYV0hPT12b2lkIDAmJihzW2FdPWVbYV0pfWlmKGUudHlwZT09PSJhcnJheSImJmUuJHJlZj09PXZvaWQgMCl7ZS5jb250YWlucyE9PXZvaWQgMCYmIVBuKGUuY29udGFpbnMpJiYocy5jb250YWlucz1lLmNvbnRhaW5zKTtmb3IoY29uc3QgYSBvZlsidW5pcXVlSXRlbXMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIl0pZVthXSE9PXZvaWQgMCYmKHNbYV09ZVthXSl9Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmtleXMoZSkpV3kuaGFzKGEpfHxSdChzLGEsZVthXSk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZ0LnJlZ2lzdHJ5LmFkZChuLHMpLGUuZGVzY3JpcHRpb24mJihuPW4uZGVzY3JpYmUoZS5kZXNjcmlwdGlvbikpLG59ZnVuY3Rpb24gUGYoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiBlP0kuYW55KCk6SS5uZXZlcigpO2xldCBuO3RyeXtuPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiZnJvbUpTT05TY2hlbWEgaW5wdXQgaXMgbm90IHZhbGlkIEpTT04gKHBvc3NpYmx5IGN5Y2xpYyk7IHVzZSAkZGVmcy8kcmVmIGZvciByZWN1cnNpdmUgc2NoZW1hcyIpfWNvbnN0IG89Vnkobix0Py5kZWZhdWx0VGFyZ2V0KSxzPW4uJGRlZnN8fG4uZGVmaW5pdGlvbnN8fHt9LHI9e3ZlcnNpb246byxkZWZzOnMscmVmczpuZXcgTWFwLHByb2Nlc3Npbmc6bmV3IFNldCxyb290U2NoZW1hOm4scmVnaXN0cnk6dD8ucmVnaXN0cnk/P2plfTtyZXR1cm4gJGUobixyKX1mdW5jdGlvbiBFZihlKXtyZXR1cm4gY2MoZSx7b2JqZWN0OnQ9PnQucGFydGlhbCgpLHVuaW9uOnQ9Pntjb25zdCBuPXQuX3pvZC5kZWY7cmV0dXJuIG4uZGlzY3JpbWluYXRvcj09PXZvaWQgMD90OkIobi5vcHRpb25zKX19KX1mdW5jdGlvbiB0JChlLHQpe2lmKCF0Py5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj1lLl96b2QuZGVmO3JldHVybiBhZShlLHllKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnRdfSkse3BhcmVudDohMH0pfWZ1bmN0aW9uIFJmKGUpe3JldHVybiB0JChlLm91dCxlLmNoZWNrcyl9ZnVuY3Rpb24gbiQoZSl7cmV0dXJuIGUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIik/UmYoZSk6ZS5pbn1mdW5jdGlvbiBPZihlKXtyZXR1cm4gY2MoZSx7cGlwZTp0PT5uJCh0Ll96b2QuZGVmKSxkZWZhdWx0Oih0LG4pPT5uP25lKHQuX3pvZC5kZWYuaW5uZXJUeXBlKTp0LGNhdGNoOih0LG4pPT5uP3QuX3pvZC5kZWYuaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBOZihlKXtyZXR1cm4gY2MoZSx7cGlwZTp0PT5SZih0Ll96b2QuZGVmKSxwcmVmYXVsdDoodCxuKT0+bj90Ll96b2QuZGVmLmlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gbyQoZSl7cmV0dXJuIFptKHJuLGUpfWZ1bmN0aW9uIHMkKGUpe3JldHVybiBEbShwbixlKX1mdW5jdGlvbiByJChlKXtyZXR1cm4gSm0oaG4sZSl9ZnVuY3Rpb24gaSQoZSl7cmV0dXJuIEdtKG1uLGUpfWZ1bmN0aW9uIGEkKGUpe3JldHVybiBjZihPbyxlKX1jb25zdCBaZj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OmkkLGJvb2xlYW46ciQsZGF0ZTphJCxudW1iZXI6cyQsc3RyaW5nOm8kfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLFh1PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6VmksJGlucHV0OklhLCRvdXRwdXQ6eGEsSU5WQUxJRDpDYSxORVZFUjpXaSxUaW1lUHJlY2lzaW9uOm5jLFpvZEFueTpscixab2RBcnJheTpocixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDptbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjpobixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6eW8sWm9kQ2F0Y2g6RXIsWm9kQ29kZWM6JG4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6UGEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6RWEsWm9kQ3JlZGl0Q2FyZDpzcixab2RDdXN0b206a24sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Om10LFpvZERhdGU6T28sWm9kRGVmYXVsdDp6cixab2REaXNjcmltaW5hdGVkVW5pb246ZnIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOnp0LFpvZEVycm9yOlRmLFpvZEV4YWN0T3B0aW9uYWw6am8sWm9kRmlsZTp3cixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIHZzfSxab2RGdW5jdGlvbjpCcixab2RHVUlEOmZvLFpvZElCQU46cnIsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6Y24sWm9kSVNPRGF0ZVRpbWU6YW4sWm9kSVNPRHVyYXRpb246dW4sWm9kSVNPVGltZTpsbixab2RJbnN0YW5jZU9mOldyLFpvZEludGVyc2VjdGlvbjpncixab2RJc3N1ZUNvZGU6emYsWm9kSldUOkNvLFpvZEtTVUlEOndvLFpvZExhenk6cXIsWm9kTGl0ZXJhbDprcixab2RNQUM6b3IsWm9kTWFwOnlyLFpvZE5hTjpPcixab2ROYW5vSUQ6Ym8sWm9kTmV2ZXI6ZHIsWm9kTm9uT3B0aW9uYWw6TW8sWm9kTnVsbDpjcixab2ROdWxsYWJsZTpUcixab2ROdW1iZXI6cG4sWm9kTnVtYmVyRm9ybWF0OmZ0LFpvZE9iamVjdDpmbixab2RPcHRpb25hbDp2bixab2RQaXBlOnluLFpvZFByZWZhdWx0OklyLFpvZFByZXByb2Nlc3M6TnIsWm9kUHJvbWlzZTpEcixab2RSZWFkb25seTpacixab2RSZWFsRXJyb3I6SWUsWm9kUmVjb3JkOlR0LFpvZFNldDokcixab2RTdHJpbmc6cm4sWm9kU3RyaW5nRm9ybWF0OlgsWm9kU3VjY2VzczpQcixab2RTeW1ib2w6aXIsWm9kVGVtcGxhdGVMaXRlcmFsOk1yLFpvZFRyYW5zZm9ybTpfcixab2RUdXBsZTpicixab2RUeXBlOkwsWm9kVUxJRDokbyxab2RVUkw6ZG4sWm9kVVVJRDpIZSxab2RVbmRlZmluZWQ6YXIsWm9kVW5pb246Z24sWm9kVW5rbm93bjp1cixab2RWb2lkOnByLFpvZFhJRDprbyxab2RYb3I6bXIsX1pvZFN0cmluZzpobyxfZGVmYXVsdDp4cixfZnVuY3Rpb246WXQsYW55OlJvLGFycmF5OlIsYmFzZTY0OkJjLGJhc2U2NHVybDpGYyxiaWdpbnQ6b2wsYm9vbGVhbjpRLGNhdGNoOlJyLGNoZWNrOlRsLGNpZHJ2NDpMYyxjaWRydjY6RGMsY2xvbmU6YWUsY29kZWM6a2wsY29lcmNlOlpmLGNvbXBpbGU6UmEsY29uZmlnOmhlLGNvcmU6d2YsY3JlZGl0Q2FyZDpIYyxjdWlkOkVjLGN1aWQyOlJjLGN1cnJlbmN5Q29kZTpZYyxjdXN0b206RnIsZGF0ZTpjbCxkZWNvZGU6ZmMsZGVjb2RlQXN5bmM6YmMsZGVlcFBhcnRpYWw6RWYsZGVzY3JpYmU6emwsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6VWMsZW1haWw6d2MsZW1vamk6Q2MsZW5jb2RlOm1jLGVuY29kZUFzeW5jOmdjLGVuZHNXaXRoOnNvLGVudW06ZmUsZXhhY3RPcHRpb25hbDpTcixmaWxlOmJsLGZsYXR0ZW5FcnJvcjpMcyxmbG9hdDMyOlhjLGZsb2F0NjQ6ZWwsZm9ybWF0RXJyb3I6RHMsZnJvbUpTT05TY2hlbWE6UGYsZnVuY3Rpb246WXQsZ2V0RGlzY3JpbWluYXRlZE9wdGlvbjokYSxnZXRFcnJvck1hcDpJZixnbG9iYWxSZWdpc3RyeTpqZSxndDp0dCxndGU6UGUsZ3VpZDpfYyxoYXNoOlFjLGhleDpHYyxob3N0bmFtZTpLYyxodHRwVXJsOkFjLGliYW46V2MsaW5jbHVkZXM6bm8saW5wdXQ6T2YsaW5zdGFuY2VvZjpJbCxpbnQ6am4saW50MzI6dGwsaW50NjQ6c2wsaW50ZXJzZWN0aW9uOmJuLGludmVydENvZGVjOndsLGlwdjQ6amMsaXB2NjpxYyxpc286UGwsanNvbjpDbCxqd3Q6VmMsa2V5b2Y6bGwsa3N1aWQ6WmMsbGF6eTpMcixsZW5ndGg6b24sbGl0ZXJhbDpiLGxvY2FsZXM6emEsbG9vc2VPYmplY3Q6bWUsbG9vc2VSZWNvcmQ6aGwsbG93ZXJjYXNlOmVvLGx0OmV0LGx0ZTpDZSxtYWM6TWMsbWFwOm1sLG1heExlbmd0aDpubixtYXhTaXplOk90LG1lbW9pemVyOkpzLG1ldGE6eGwsbWltZTppbyxtaW5MZW5ndGg6cHQsbWluU2l6ZTpudCxtdWx0aXBsZU9mOl90LG5hbjokbCxuYW5vaWQ6UGMsbmF0aXZlRW51bTpnbCxuZWdhdGl2ZTpYcyxuZXZlcjpTdCxub25uZWdhdGl2ZTp0cixub25vcHRpb25hbDpDcixub25wb3NpdGl2ZTplcixub3JtYWxpemU6YW8sbnVsbDpFbyxudWxsYWJsZTpHdCxudWxsaXNoOnZsLG51bWJlcjpxLG9iamVjdDp2LG9wdGlvbmFsOm5lLG91dHB1dDpOZixvdmVyd3JpdGU6S2UscGFyc2U6dWMscGFyc2VBc3luYzpkYyxwYXJ0aWFsUmVjb3JkOnBsLHBpcGU6TW4scG9zaXRpdmU6UXMscHJlZmF1bHQ6QXIscHJlcHJvY2VzczpxbyxwcmV0dGlmeUVycm9yOktpLHByb21pc2U6U2wscHJvcGVydGllczpybyxwcm9wZXJ0eTpucixyZWFkb25seTpqcixyZWNvcmQ6SCxyZWZpbmU6VXIscmVnZXg6WG4scmVnZXhlczpXcyxyZWdpc3RyeTpLcyxzYWZlRGVjb2RlOnljLHNhZmVEZWNvZGVBc3luYzprYyxzYWZlRW5jb2RlOnZjLHNhZmVFbmNvZGVBc3luYzokYyxzYWZlUGFyc2U6cGMsc2FmZVBhcnNlQXN5bmM6aGMsc2V0OmZsLHNldEVycm9yTWFwOnhmLHNpemU6dG4sc2x1Z2lmeTpwbyxzdGFydHNXaXRoOm9vLHN0cmljdE9iamVjdDp1bCxzdHJpbmc6ZyxzdHJpbmdGb3JtYXQ6SmMsc3RyaW5nYm9vbDpBbCxzdWNjZXNzOnlsLHN1cGVyUmVmaW5lOkhyLHN5bWJvbDppbCx0ZW1wbGF0ZUxpdGVyYWw6X2wsdG9KU09OU2NoZW1hOmFjLHRvTG93ZXJDYXNlOmxvLHRvVXBwZXJDYXNlOnVvLHRvWm9kOlBzLHRyYW5zZm9ybTpabyx0cmVlaWZ5RXJyb3I6SmksdHJpbTpjbyx0dXBsZTp2cix1aW50MzI6bmwsdWludDY0OnJsLHVsaWQ6T2MsdW5kZWZpbmVkOkt0LHVuaW9uOkIsdW5rbm93bjpZLHVwcGVyY2FzZTp0byx1cmw6SWMsdXRpbDpIaSx1dWlkOlNjLHV1aWR2NDpUYyx1dWlkdjY6emMsdXVpZHY3OnhjLHZhbGlkYXRlOkZzLHZhbGlkYXRlQXN5bmM6VXMsdm9pZDphbCx3aXRoUGFyc2VyOk9hLHhpZDpOYyx4b3I6ZGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksYyQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpWaSwkaW5wdXQ6SWEsJG91dHB1dDp4YSxJTlZBTElEOkNhLE5FVkVSOldpLFRpbWVQcmVjaXNpb246bmMsWm9kQW55OmxyLFpvZEFycmF5OmhyLFpvZEJhc2U2NDp4byxab2RCYXNlNjRVUkw6SW8sWm9kQmlnSW50Om1uLFpvZEJpZ0ludEZvcm1hdDpQbyxab2RCb29sZWFuOmhuLFpvZENJRFJ2NDpUbyxab2RDSURSdjY6em8sWm9kQ1VJRDp2byxab2RDVUlEMjp5byxab2RDYXRjaDpFcixab2RDb2RlYzokbixab2RDb21waWxlQXN5bmNFcnJvcjpQYSxab2RDb21waWxlVW5zdXBwb3J0ZWRFcnJvcjpFYSxab2RDcmVkaXRDYXJkOnNyLFpvZEN1c3RvbTprbixab2RDdXN0b21TdHJpbmdGb3JtYXQ6bXQsWm9kRGF0ZTpPbyxab2REZWZhdWx0OnpyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpmcixab2RFMTY0OkFvLFpvZEVtYWlsOm1vLFpvZEVtb2ppOmdvLFpvZEVudW06enQsWm9kRXJyb3I6VGYsWm9kRXhhY3RPcHRpb25hbDpqbyxab2RGaWxlOndyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gdnN9LFpvZEZ1bmN0aW9uOkJyLFpvZEdVSUQ6Zm8sWm9kSUJBTjpycixab2RJUHY0Ol9vLFpvZElQdjY6U28sWm9kSVNPRGF0ZTpjbixab2RJU09EYXRlVGltZTphbixab2RJU09EdXJhdGlvbjp1bixab2RJU09UaW1lOmxuLFpvZEluc3RhbmNlT2Y6V3IsWm9kSW50ZXJzZWN0aW9uOmdyLFpvZElzc3VlQ29kZTp6Zixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpxcixab2RMaXRlcmFsOmtyLFpvZE1BQzpvcixab2RNYXA6eXIsWm9kTmFOOk9yLFpvZE5hbm9JRDpibyxab2ROZXZlcjpkcixab2ROb25PcHRpb25hbDpNbyxab2ROdWxsOmNyLFpvZE51bGxhYmxlOlRyLFpvZE51bWJlcjpwbixab2ROdW1iZXJGb3JtYXQ6ZnQsWm9kT2JqZWN0OmZuLFpvZE9wdGlvbmFsOnZuLFpvZFBpcGU6eW4sWm9kUHJlZmF1bHQ6SXIsWm9kUHJlcHJvY2VzczpOcixab2RQcm9taXNlOkRyLFpvZFJlYWRvbmx5OlpyLFpvZFJlYWxFcnJvcjpJZSxab2RSZWNvcmQ6VHQsWm9kU2V0OiRyLFpvZFN0cmluZzpybixab2RTdHJpbmdGb3JtYXQ6WCxab2RTdWNjZXNzOlByLFpvZFN5bWJvbDppcixab2RUZW1wbGF0ZUxpdGVyYWw6TXIsWm9kVHJhbnNmb3JtOl9yLFpvZFR1cGxlOmJyLFpvZFR5cGU6TCxab2RVTElEOiRvLFpvZFVSTDpkbixab2RVVUlEOkhlLFpvZFVuZGVmaW5lZDphcixab2RVbmlvbjpnbixab2RVbmtub3duOnVyLFpvZFZvaWQ6cHIsWm9kWElEOmtvLFpvZFhvcjptcixfWm9kU3RyaW5nOmhvLF9kZWZhdWx0OnhyLF9mdW5jdGlvbjpZdCxhbnk6Um8sYXJyYXk6UixiYXNlNjQ6QmMsYmFzZTY0dXJsOkZjLGJpZ2ludDpvbCxib29sZWFuOlEsY2F0Y2g6UnIsY2hlY2s6VGwsY2lkcnY0OkxjLGNpZHJ2NjpEYyxjbG9uZTphZSxjb2RlYzprbCxjb2VyY2U6WmYsY29tcGlsZTpSYSxjb25maWc6aGUsY29yZTp3ZixjcmVkaXRDYXJkOkhjLGN1aWQ6RWMsY3VpZDI6UmMsY3VycmVuY3lDb2RlOlljLGN1c3RvbTpGcixkYXRlOmNsLGRlY29kZTpmYyxkZWNvZGVBc3luYzpiYyxkZWVwUGFydGlhbDpFZixkZWZhdWx0Olh1LGRlc2NyaWJlOnpsLGRpc2NyaW1pbmF0ZWRVbmlvbjpObyxlMTY0OlVjLGVtYWlsOndjLGVtb2ppOkNjLGVuY29kZTptYyxlbmNvZGVBc3luYzpnYyxlbmRzV2l0aDpzbyxlbnVtOmZlLGV4YWN0T3B0aW9uYWw6U3IsZmlsZTpibCxmbGF0dGVuRXJyb3I6THMsZmxvYXQzMjpYYyxmbG9hdDY0OmVsLGZvcm1hdEVycm9yOkRzLGZyb21KU09OU2NoZW1hOlBmLGZ1bmN0aW9uOll0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246JGEsZ2V0RXJyb3JNYXA6SWYsZ2xvYmFsUmVnaXN0cnk6amUsZ3Q6dHQsZ3RlOlBlLGd1aWQ6X2MsaGFzaDpRYyxoZXg6R2MsaG9zdG5hbWU6S2MsaHR0cFVybDpBYyxpYmFuOldjLGluY2x1ZGVzOm5vLGlucHV0Ok9mLGluc3RhbmNlb2Y6SWwsaW50OmpuLGludDMyOnRsLGludDY0OnNsLGludGVyc2VjdGlvbjpibixpbnZlcnRDb2RlYzp3bCxpcHY0OmpjLGlwdjY6cWMsaXNvOlBsLGpzb246Q2wsand0OlZjLGtleW9mOmxsLGtzdWlkOlpjLGxhenk6THIsbGVuZ3RoOm9uLGxpdGVyYWw6Yixsb2NhbGVzOnphLGxvb3NlT2JqZWN0Om1lLGxvb3NlUmVjb3JkOmhsLGxvd2VyY2FzZTplbyxsdDpldCxsdGU6Q2UsbWFjOk1jLG1hcDptbCxtYXhMZW5ndGg6bm4sbWF4U2l6ZTpPdCxtZW1vaXplcjpKcyxtZXRhOnhsLG1pbWU6aW8sbWluTGVuZ3RoOnB0LG1pblNpemU6bnQsbXVsdGlwbGVPZjpfdCxuYW46JGwsbmFub2lkOlBjLG5hdGl2ZUVudW06Z2wsbmVnYXRpdmU6WHMsbmV2ZXI6U3Qsbm9ubmVnYXRpdmU6dHIsbm9ub3B0aW9uYWw6Q3Isbm9ucG9zaXRpdmU6ZXIsbm9ybWFsaXplOmFvLG51bGw6RW8sbnVsbGFibGU6R3QsbnVsbGlzaDp2bCxudW1iZXI6cSxvYmplY3Q6dixvcHRpb25hbDpuZSxvdXRwdXQ6TmYsb3ZlcndyaXRlOktlLHBhcnNlOnVjLHBhcnNlQXN5bmM6ZGMscGFydGlhbFJlY29yZDpwbCxwaXBlOk1uLHBvc2l0aXZlOlFzLHByZWZhdWx0OkFyLHByZXByb2Nlc3M6cW8scHJldHRpZnlFcnJvcjpLaSxwcm9taXNlOlNsLHByb3BlcnRpZXM6cm8scHJvcGVydHk6bnIscmVhZG9ubHk6anIscmVjb3JkOkgscmVmaW5lOlVyLHJlZ2V4OlhuLHJlZ2V4ZXM6V3MscmVnaXN0cnk6S3Msc2FmZURlY29kZTp5YyxzYWZlRGVjb2RlQXN5bmM6a2Msc2FmZUVuY29kZTp2YyxzYWZlRW5jb2RlQXN5bmM6JGMsc2FmZVBhcnNlOnBjLHNhZmVQYXJzZUFzeW5jOmhjLHNldDpmbCxzZXRFcnJvck1hcDp4ZixzaXplOnRuLHNsdWdpZnk6cG8sc3RhcnRzV2l0aDpvbyxzdHJpY3RPYmplY3Q6dWwsc3RyaW5nOmcsc3RyaW5nRm9ybWF0OkpjLHN0cmluZ2Jvb2w6QWwsc3VjY2Vzczp5bCxzdXBlclJlZmluZTpIcixzeW1ib2w6aWwsdGVtcGxhdGVMaXRlcmFsOl9sLHRvSlNPTlNjaGVtYTphYyx0b0xvd2VyQ2FzZTpsbyx0b1VwcGVyQ2FzZTp1byx0b1pvZDpQcyx0cmFuc2Zvcm06Wm8sdHJlZWlmeUVycm9yOkppLHRyaW06Y28sdHVwbGU6dnIsdWludDMyOm5sLHVpbnQ2NDpybCx1bGlkOk9jLHVuZGVmaW5lZDpLdCx1bmlvbjpCLHVua25vd246WSx1cHBlcmNhc2U6dG8sdXJsOkljLHV0aWw6SGksdXVpZDpTYyx1dWlkdjQ6VGMsdXVpZHY2OnpjLHV1aWR2Nzp4Yyx2YWxpZGF0ZTpGcyx2YWxpZGF0ZUFzeW5jOlVzLHZvaWQ6YWwsd2l0aFBhcnNlcjpPYSx4aWQ6TmMseG9yOmRsLHo6WHV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksJHQ9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsVnI9IjIuMCIsZGU9RnIoZT0+ZSE9PW51bGwmJih0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKSksamY9QihbZygpLHEoKS5pbnQoKV0pLE1mPWcoKTttZSh7dHRsOnEoKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDpxKCkub3B0aW9uYWwoKX0pO2NvbnN0IGwkPXYoe3R0bDpxKCkub3B0aW9uYWwoKX0pLHUkPXYoe3Rhc2tJZDpnKCl9KSxFbD1tZSh7cHJvZ3Jlc3NUb2tlbjpqZi5vcHRpb25hbCgpLFskdF06dSQub3B0aW9uYWwoKX0pLE9lPXYoe19tZXRhOkVsLm9wdGlvbmFsKCl9KSxMbz1PZS5leHRlbmQoe3Rhc2s6bCQub3B0aW9uYWwoKX0pLGQkPWU9PkxvLnNhZmVQYXJzZShlKS5zdWNjZXNzLGdlPXYoe21ldGhvZDpnKCkscGFyYW1zOk9lLmxvb3NlKCkub3B0aW9uYWwoKX0pLExlPXYoe19tZXRhOkVsLm9wdGlvbmFsKCl9KSxEZT12KHttZXRob2Q6ZygpLHBhcmFtczpMZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxiZT1tZSh7X21ldGE6RWwub3B0aW9uYWwoKX0pLERvPUIoW2coKSxxKCkuaW50KCldKSxxZj12KHtqc29ucnBjOmIoVnIpLGlkOkRvLC4uLmdlLnNoYXBlfSkuc3RyaWN0KCksZWQ9ZT0+cWYuc2FmZVBhcnNlKGUpLnN1Y2Nlc3MsTGY9dih7anNvbnJwYzpiKFZyKSwuLi5EZS5zaGFwZX0pLnN0cmljdCgpLHAkPWU9PkxmLnNhZmVQYXJzZShlKS5zdWNjZXNzLFJsPXYoe2pzb25ycGM6YihWciksaWQ6RG8scmVzdWx0OmJlfSkuc3RyaWN0KCksb3M9ZT0+Umwuc2FmZVBhcnNlKGUpLnN1Y2Nlc3M7dmFyIGVlOyhmdW5jdGlvbihlKXtlW2UuQ29ubmVjdGlvbkNsb3NlZD0tMzJlM109IkNvbm5lY3Rpb25DbG9zZWQiLGVbZS5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPSJSZXF1ZXN0VGltZW91dCIsZVtlLlBhcnNlRXJyb3I9LTMyNzAwXT0iUGFyc2VFcnJvciIsZVtlLkludmFsaWRSZXF1ZXN0PS0zMjYwMF09IkludmFsaWRSZXF1ZXN0IixlW2UuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT0iTWV0aG9kTm90Rm91bmQiLGVbZS5JbnZhbGlkUGFyYW1zPS0zMjYwMl09IkludmFsaWRQYXJhbXMiLGVbZS5JbnRlcm5hbEVycm9yPS0zMjYwM109IkludGVybmFsRXJyb3IiLGVbZS5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09IlVybEVsaWNpdGF0aW9uUmVxdWlyZWQifSkoZWV8fChlZT17fSkpO2NvbnN0IE9sPXYoe2pzb25ycGM6YihWciksaWQ6RG8ub3B0aW9uYWwoKSxlcnJvcjp2KHtjb2RlOnEoKS5pbnQoKSxtZXNzYWdlOmcoKSxkYXRhOlkoKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxoJD1lPT5PbC5zYWZlUGFyc2UoZSkuc3VjY2VzcyxtJD1CKFtxZixMZixSbCxPbF0pO0IoW1JsLE9sXSk7Y29uc3QgTmw9YmUuc3RyaWN0KCksZiQ9TGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6RG8ub3B0aW9uYWwoKSxyZWFzb246ZygpLm9wdGlvbmFsKCl9KSxabD1EZS5leHRlbmQoe21ldGhvZDpiKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpmJH0pLGckPXYoe3NyYzpnKCksbWltZVR5cGU6ZygpLm9wdGlvbmFsKCksc2l6ZXM6UihnKCkpLm9wdGlvbmFsKCksdGhlbWU6ZmUoWyJsaWdodCIsImRhcmsiXSkub3B0aW9uYWwoKX0pLEJvPXYoe2ljb25zOlIoZyQpLm9wdGlvbmFsKCl9KSxRdD12KHtuYW1lOmcoKSx0aXRsZTpnKCkub3B0aW9uYWwoKX0pLEpyPVF0LmV4dGVuZCh7Li4uUXQuc2hhcGUsLi4uQm8uc2hhcGUsdmVyc2lvbjpnKCksd2Vic2l0ZVVybDpnKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpnKCkub3B0aW9uYWwoKX0pLGIkPWJuKHYoe2FwcGx5RGVmYXVsdHM6USgpLm9wdGlvbmFsKCl9KSxIKGcoKSxZKCkpKSx2JD1xbyhlPT5lJiZ0eXBlb2YgZT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGUpJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wP3tmb3JtOnt9fTplLGJuKHYoe2Zvcm06YiQub3B0aW9uYWwoKSx1cmw6ZGUub3B0aW9uYWwoKX0pLEgoZygpLFkoKSkub3B0aW9uYWwoKSkpLHkkPW1lKHtsaXN0OmRlLm9wdGlvbmFsKCksY2FuY2VsOmRlLm9wdGlvbmFsKCkscmVxdWVzdHM6bWUoe3NhbXBsaW5nOm1lKHtjcmVhdGVNZXNzYWdlOmRlLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOm1lKHtjcmVhdGU6ZGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksJCQ9bWUoe2xpc3Q6ZGUub3B0aW9uYWwoKSxjYW5jZWw6ZGUub3B0aW9uYWwoKSxyZXF1ZXN0czptZSh7dG9vbHM6bWUoe2NhbGw6ZGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksayQ9dih7ZXhwZXJpbWVudGFsOkgoZygpLGRlKS5vcHRpb25hbCgpLHNhbXBsaW5nOnYoe2NvbnRleHQ6ZGUub3B0aW9uYWwoKSx0b29sczpkZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjp2JC5vcHRpb25hbCgpLHJvb3RzOnYoe2xpc3RDaGFuZ2VkOlEoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp5JC5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChnKCksZGUpLm9wdGlvbmFsKCl9KSx3JD1PZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpnKCksY2FwYWJpbGl0aWVzOmskLGNsaWVudEluZm86SnJ9KSxfJD1nZS5leHRlbmQoe21ldGhvZDpiKCJpbml0aWFsaXplIikscGFyYW1zOnckfSksUyQ9dih7ZXhwZXJpbWVudGFsOkgoZygpLGRlKS5vcHRpb25hbCgpLGxvZ2dpbmc6ZGUub3B0aW9uYWwoKSxjb21wbGV0aW9uczpkZS5vcHRpb25hbCgpLHByb21wdHM6dih7bGlzdENoYW5nZWQ6USgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczp2KHtzdWJzY3JpYmU6USgpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6USgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOnYoe2xpc3RDaGFuZ2VkOlEoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczokJC5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChnKCksZGUpLm9wdGlvbmFsKCl9KSxUJD1iZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpnKCksY2FwYWJpbGl0aWVzOlMkLHNlcnZlckluZm86SnIsaW5zdHJ1Y3Rpb25zOmcoKS5vcHRpb25hbCgpfSkseiQ9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpMZS5vcHRpb25hbCgpfSksS3I9Z2UuZXh0ZW5kKHttZXRob2Q6YigicGluZyIpLHBhcmFtczpPZS5vcHRpb25hbCgpfSkseCQ9dih7cHJvZ3Jlc3M6cSgpLHRvdGFsOm5lKHEoKSksbWVzc2FnZTpuZShnKCkpfSksSSQ9dih7Li4uTGUuc2hhcGUsLi4ueCQuc2hhcGUscHJvZ3Jlc3NUb2tlbjpqZn0pLGpsPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6SSR9KSxBJD1PZS5leHRlbmQoe2N1cnNvcjpNZi5vcHRpb25hbCgpfSksRm89Z2UuZXh0ZW5kKHtwYXJhbXM6QSQub3B0aW9uYWwoKX0pLFVvPWJlLmV4dGVuZCh7bmV4dEN1cnNvcjpNZi5vcHRpb25hbCgpfSksQyQ9ZmUoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksSG89dih7dGFza0lkOmcoKSxzdGF0dXM6QyQsdHRsOkIoW3EoKSxFbygpXSksY3JlYXRlZEF0OmcoKSxsYXN0VXBkYXRlZEF0OmcoKSxwb2xsSW50ZXJ2YWw6bmUocSgpKSxzdGF0dXNNZXNzYWdlOm5lKGcoKSl9KSxNbD1iZS5leHRlbmQoe3Rhc2s6SG99KSxQJD1MZS5tZXJnZShIbykseXM9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6UCR9KSxxbD1nZS5leHRlbmQoe21ldGhvZDpiKCJ0YXNrcy9nZXQiKSxwYXJhbXM6T2UuZXh0ZW5kKHt0YXNrSWQ6ZygpfSl9KSxMbD1iZS5tZXJnZShIbyksRGw9Z2UuZXh0ZW5kKHttZXRob2Q6YigidGFza3MvcmVzdWx0IikscGFyYW1zOk9lLmV4dGVuZCh7dGFza0lkOmcoKX0pfSk7YmUubG9vc2UoKTtjb25zdCBCbD1Gby5leHRlbmQoe21ldGhvZDpiKCJ0YXNrcy9saXN0Iil9KSxGbD1Vby5leHRlbmQoe3Rhc2tzOlIoSG8pfSksVWw9Z2UuZXh0ZW5kKHttZXRob2Q6YigidGFza3MvY2FuY2VsIikscGFyYW1zOk9lLmV4dGVuZCh7dGFza0lkOmcoKX0pfSksRSQ9YmUubWVyZ2UoSG8pLERmPXYoe3VyaTpnKCksbWltZVR5cGU6bmUoZygpKSxfbWV0YTpIKGcoKSxZKCkpLm9wdGlvbmFsKCl9KSxCZj1EZi5leHRlbmQoe3RleHQ6ZygpfSksSGw9ZygpLnJlZmluZShlPT57dHJ5e3JldHVybiBhdG9iKGUpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxGZj1EZi5leHRlbmQoe2Jsb2I6SGx9KSxXbz1mZShbInVzZXIiLCJhc3Npc3RhbnQiXSksd249dih7YXVkaWVuY2U6UihXbykub3B0aW9uYWwoKSxwcmlvcml0eTpxKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDpBZih7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLFVmPXYoey4uLlF0LnNoYXBlLC4uLkJvLnNoYXBlLHVyaTpnKCksZGVzY3JpcHRpb246bmUoZygpKSxtaW1lVHlwZTpuZShnKCkpLHNpemU6bmUocSgpKSxhbm5vdGF0aW9uczp3bi5vcHRpb25hbCgpLF9tZXRhOm5lKG1lKHt9KSl9KSxSJD12KHsuLi5RdC5zaGFwZSwuLi5Cby5zaGFwZSx1cmlUZW1wbGF0ZTpnKCksZGVzY3JpcHRpb246bmUoZygpKSxtaW1lVHlwZTpuZShnKCkpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6bmUobWUoe30pKX0pLE8kPUZvLmV4dGVuZCh7bWV0aG9kOmIoInJlc291cmNlcy9saXN0Iil9KSxIZj1Vby5leHRlbmQoe3Jlc291cmNlczpSKFVmKX0pLE4kPUZvLmV4dGVuZCh7bWV0aG9kOmIoInJlc291cmNlcy90ZW1wbGF0ZXMvbGlzdCIpfSksWiQ9VW8uZXh0ZW5kKHtyZXNvdXJjZVRlbXBsYXRlczpSKFIkKX0pLFdsPU9lLmV4dGVuZCh7dXJpOmcoKX0pLGokPVdsLE0kPWdlLmV4dGVuZCh7bWV0aG9kOmIoInJlc291cmNlcy9yZWFkIikscGFyYW1zOmokfSksV2Y9YmUuZXh0ZW5kKHtjb250ZW50czpSKEIoW0JmLEZmXSkpfSkscSQ9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KSxMJD1XbCxEJD1nZS5leHRlbmQoe21ldGhvZDpiKCJyZXNvdXJjZXMvc3Vic2NyaWJlIikscGFyYW1zOkwkfSksQiQ9V2wsRiQ9Z2UuZXh0ZW5kKHttZXRob2Q6YigicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOkIkfSksVSQ9TGUuZXh0ZW5kKHt1cmk6ZygpfSksSCQ9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpVJH0pLFckPXYoe25hbWU6ZygpLGRlc2NyaXB0aW9uOm5lKGcoKSkscmVxdWlyZWQ6bmUoUSgpKX0pLFYkPXYoey4uLlF0LnNoYXBlLC4uLkJvLnNoYXBlLGRlc2NyaXB0aW9uOm5lKGcoKSksYXJndW1lbnRzOm5lKFIoVyQpKSxfbWV0YTpuZShtZSh7fSkpfSksSiQ9Rm8uZXh0ZW5kKHttZXRob2Q6YigicHJvbXB0cy9saXN0Iil9KSxLJD1Vby5leHRlbmQoe3Byb21wdHM6UihWJCl9KSxHJD1PZS5leHRlbmQoe25hbWU6ZygpLGFyZ3VtZW50czpIKGcoKSxnKCkpLm9wdGlvbmFsKCl9KSxZJD1nZS5leHRlbmQoe21ldGhvZDpiKCJwcm9tcHRzL2dldCIpLHBhcmFtczpHJH0pLFZsPXYoe3R5cGU6YigidGV4dCIpLHRleHQ6ZygpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksSmw9dih7dHlwZTpiKCJpbWFnZSIpLGRhdGE6SGwsbWltZVR5cGU6ZygpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksS2w9dih7dHlwZTpiKCJhdWRpbyIpLGRhdGE6SGwsbWltZVR5cGU6ZygpLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksUSQ9dih7dHlwZTpiKCJ0b29sX3VzZSIpLG5hbWU6ZygpLGlkOmcoKSxpbnB1dDpIKGcoKSxZKCkpLF9tZXRhOkgoZygpLFkoKSkub3B0aW9uYWwoKX0pLFZmPXYoe3R5cGU6YigicmVzb3VyY2UiKSxyZXNvdXJjZTpCKFtCZixGZl0pLGFubm90YXRpb25zOnduLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksSmY9VWYuZXh0ZW5kKHt0eXBlOmIoInJlc291cmNlX2xpbmsiKX0pLFZvPUIoW1ZsLEpsLEtsLEpmLFZmXSksWCQ9dih7cm9sZTpXbyxjb250ZW50OlZvfSksZWs9YmUuZXh0ZW5kKHtkZXNjcmlwdGlvbjpnKCkub3B0aW9uYWwoKSxtZXNzYWdlczpSKFgkKX0pLHRrPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pLG5rPXYoe3RpdGxlOmcoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpRKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6USgpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6USgpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpRKCkub3B0aW9uYWwoKX0pLG9rPXYoe3Rhc2tTdXBwb3J0OmZlKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksR2w9dih7Li4uUXQuc2hhcGUsLi4uQm8uc2hhcGUsZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6dih7dHlwZTpiKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZygpLGRlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZygpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoWSgpKSxvdXRwdXRTY2hlbWE6dih7dHlwZTpiKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZygpLGRlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZygpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoWSgpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOm5rLm9wdGlvbmFsKCksZXhlY3V0aW9uOm9rLm9wdGlvbmFsKCksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksS2Y9Rm8uZXh0ZW5kKHttZXRob2Q6YigidG9vbHMvbGlzdCIpfSksc2s9VW8uZXh0ZW5kKHt0b29sczpSKEdsKX0pLEdyPWJlLmV4dGVuZCh7Y29udGVudDpSKFZvKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGcoKSxZKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpRKCkub3B0aW9uYWwoKX0pO0dyLm9yKGJlLmV4dGVuZCh7dG9vbFJlc3VsdDpZKCl9KSk7Y29uc3Qgcms9TG8uZXh0ZW5kKHtuYW1lOmcoKSxhcmd1bWVudHM6SChnKCksWSgpKS5vcHRpb25hbCgpfSksR2Y9Z2UuZXh0ZW5kKHttZXRob2Q6YigidG9vbHMvY2FsbCIpLHBhcmFtczpya30pLGlrPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KTt2KHthdXRvUmVmcmVzaDpRKCkuZGVmYXVsdCghMCksZGVib3VuY2VNczpxKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KTtjb25zdCBZZj1mZShbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksYWs9T2UuZXh0ZW5kKHtsZXZlbDpZZn0pLGNrPWdlLmV4dGVuZCh7bWV0aG9kOmIoImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6YWt9KSxsaz1MZS5leHRlbmQoe2xldmVsOllmLGxvZ2dlcjpnKCkub3B0aW9uYWwoKSxkYXRhOlkoKX0pLHVrPURlLmV4dGVuZCh7bWV0aG9kOmIoIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpsa30pLGRrPXYoe25hbWU6ZygpLm9wdGlvbmFsKCl9KSxwaz12KHtoaW50czpSKGRrKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTpxKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6cSgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTpxKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksaGs9dih7bW9kZTpmZShbImF1dG8iLCJyZXF1aXJlZCIsIm5vbmUiXSkub3B0aW9uYWwoKX0pLG1rPXYoe3R5cGU6YigidG9vbF9yZXN1bHQiKSx0b29sVXNlSWQ6ZygpLmRlc2NyaWJlKCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC4iKSxjb250ZW50OlIoVm8pLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOlEoKS5vcHRpb25hbCgpLF9tZXRhOkgoZygpLFkoKSkub3B0aW9uYWwoKX0pLGZrPU5vKCJ0eXBlIixbVmwsSmwsS2xdKSwkcz1ObygidHlwZSIsW1ZsLEpsLEtsLFEkLG1rXSksZ2s9dih7cm9sZTpXbyxjb250ZW50OkIoWyRzLFIoJHMpXSksX21ldGE6SChnKCksWSgpKS5vcHRpb25hbCgpfSksYms9TG8uZXh0ZW5kKHttZXNzYWdlczpSKGdrKSxtb2RlbFByZWZlcmVuY2VzOnBrLm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OmcoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0OmZlKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6cSgpLm9wdGlvbmFsKCksbWF4VG9rZW5zOnEoKS5pbnQoKSxzdG9wU2VxdWVuY2VzOlIoZygpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmRlLm9wdGlvbmFsKCksdG9vbHM6UihHbCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOmhrLm9wdGlvbmFsKCl9KSx2az1nZS5leHRlbmQoe21ldGhvZDpiKCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIikscGFyYW1zOmJrfSksUWY9YmUuZXh0ZW5kKHttb2RlbDpnKCksc3RvcFJlYXNvbjpuZShmZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiXSkub3IoZygpKSkscm9sZTpXbyxjb250ZW50OmZrfSksWGY9YmUuZXh0ZW5kKHttb2RlbDpnKCksc3RvcFJlYXNvbjpuZShmZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiLCJ0b29sVXNlIl0pLm9yKGcoKSkpLHJvbGU6V28sY29udGVudDpCKFskcyxSKCRzKV0pfSkseWs9dih7dHlwZTpiKCJib29sZWFuIiksdGl0bGU6ZygpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksZGVmYXVsdDpRKCkub3B0aW9uYWwoKX0pLCRrPXYoe3R5cGU6Yigic3RyaW5nIiksdGl0bGU6ZygpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksbWluTGVuZ3RoOnEoKS5vcHRpb25hbCgpLG1heExlbmd0aDpxKCkub3B0aW9uYWwoKSxmb3JtYXQ6ZmUoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OmcoKS5vcHRpb25hbCgpfSksa2s9dih7dHlwZTpmZShbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6ZygpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZygpLm9wdGlvbmFsKCksbWluaW11bTpxKCkub3B0aW9uYWwoKSxtYXhpbXVtOnEoKS5vcHRpb25hbCgpLGRlZmF1bHQ6cSgpLm9wdGlvbmFsKCl9KSx3az12KHt0eXBlOmIoInN0cmluZyIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLGVudW06UihnKCkpLGRlZmF1bHQ6ZygpLm9wdGlvbmFsKCl9KSxfaz12KHt0eXBlOmIoInN0cmluZyIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLG9uZU9mOlIodih7Y29uc3Q6ZygpLHRpdGxlOmcoKX0pKSxkZWZhdWx0OmcoKS5vcHRpb25hbCgpfSksU2s9dih7dHlwZTpiKCJzdHJpbmciKSx0aXRsZTpnKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpnKCkub3B0aW9uYWwoKSxlbnVtOlIoZygpKSxlbnVtTmFtZXM6UihnKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpnKCkub3B0aW9uYWwoKX0pLFRrPUIoW3drLF9rXSksems9dih7dHlwZTpiKCJhcnJheSIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnEoKS5vcHRpb25hbCgpLG1heEl0ZW1zOnEoKS5vcHRpb25hbCgpLGl0ZW1zOnYoe3R5cGU6Yigic3RyaW5nIiksZW51bTpSKGcoKSl9KSxkZWZhdWx0OlIoZygpKS5vcHRpb25hbCgpfSkseGs9dih7dHlwZTpiKCJhcnJheSIpLHRpdGxlOmcoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmcoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnEoKS5vcHRpb25hbCgpLG1heEl0ZW1zOnEoKS5vcHRpb25hbCgpLGl0ZW1zOnYoe2FueU9mOlIodih7Y29uc3Q6ZygpLHRpdGxlOmcoKX0pKX0pLGRlZmF1bHQ6UihnKCkpLm9wdGlvbmFsKCl9KSxJaz1CKFt6ayx4a10pLEFrPUIoW1NrLFRrLElrXSksQ2s9QihbQWsseWssJGssa2tdKSxQaz1Mby5leHRlbmQoe21vZGU6YigiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpnKCkscmVxdWVzdGVkU2NoZW1hOnYoe3R5cGU6Yigib2JqZWN0IikscHJvcGVydGllczpIKGcoKSxDaykscmVxdWlyZWQ6UihnKCkpLm9wdGlvbmFsKCl9KX0pLEVrPUxvLmV4dGVuZCh7bW9kZTpiKCJ1cmwiKSxtZXNzYWdlOmcoKSxlbGljaXRhdGlvbklkOmcoKSx1cmw6ZygpLnVybCgpfSksUms9QihbUGssRWtdKSxPaz1nZS5leHRlbmQoe21ldGhvZDpiKCJlbGljaXRhdGlvbi9jcmVhdGUiKSxwYXJhbXM6Umt9KSxOaz1MZS5leHRlbmQoe2VsaWNpdGF0aW9uSWQ6ZygpfSksWms9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZSIpLHBhcmFtczpOa30pLGprPWJlLmV4dGVuZCh7YWN0aW9uOmZlKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OnFvKGU9PmU9PT1udWxsP3ZvaWQgMDplLEgoZygpLEIoW2coKSxxKCksUSgpLFIoZygpKV0pKS5vcHRpb25hbCgpKX0pLE1rPXYoe3R5cGU6YigicmVmL3Jlc291cmNlIiksdXJpOmcoKX0pLHFrPXYoe3R5cGU6YigicmVmL3Byb21wdCIpLG5hbWU6ZygpfSksTGs9T2UuZXh0ZW5kKHtyZWY6QihbcWssTWtdKSxhcmd1bWVudDp2KHtuYW1lOmcoKSx2YWx1ZTpnKCl9KSxjb250ZXh0OnYoe2FyZ3VtZW50czpIKGcoKSxnKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksRGs9Z2UuZXh0ZW5kKHttZXRob2Q6YigiY29tcGxldGlvbi9jb21wbGV0ZSIpLHBhcmFtczpMa30pLEJrPWJlLmV4dGVuZCh7Y29tcGxldGlvbjptZSh7dmFsdWVzOlIoZygpKS5tYXgoMTAwKSx0b3RhbDpuZShxKCkuaW50KCkpLGhhc01vcmU6bmUoUSgpKX0pfSksRms9dih7dXJpOmcoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpnKCkub3B0aW9uYWwoKSxfbWV0YTpIKGcoKSxZKCkpLm9wdGlvbmFsKCl9KSxVaz1nZS5leHRlbmQoe21ldGhvZDpiKCJyb290cy9saXN0IikscGFyYW1zOk9lLm9wdGlvbmFsKCl9KSxIaz1iZS5leHRlbmQoe3Jvb3RzOlIoRmspfSksV2s9RGUuZXh0ZW5kKHttZXRob2Q6Yigibm90aWZpY2F0aW9ucy9yb290cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pO0IoW0tyLF8kLERrLGNrLFkkLEokLE8kLE4kLE0kLEQkLEYkLEdmLEtmLHFsLERsLEJsLFVsXSk7QihbWmwsamwseiQsV2sseXNdKTtCKFtObCxRZixYZixqayxIayxMbCxGbCxNbF0pO0IoW0tyLHZrLE9rLFVrLHFsLERsLEJsLFVsXSk7QihbWmwsamwsdWssSCQscSQsaWssdGsseXMsWmtdKTtCKFtObCxUJCxCayxlayxLJCxIZixaJCxXZixHcixzayxMbCxGbCxNbF0pO2NsYXNzIEsgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LG4sbyl7c3VwZXIoYE1DUCBlcnJvciAke3R9OiAke259YCksdGhpcy5jb2RlPXQsdGhpcy5kYXRhPW8sdGhpcy5uYW1lPSJNY3BFcnJvciJ9c3RhdGljIGZyb21FcnJvcih0LG4sbyl7aWYodD09PWVlLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQmJm8pe2NvbnN0IHM9bztpZihzLmVsaWNpdGF0aW9ucylyZXR1cm4gbmV3IFZrKHMuZWxpY2l0YXRpb25zLG4pfXJldHVybiBuZXcgSyh0LG4sbyl9fWNsYXNzIFZrIGV4dGVuZHMgS3tjb25zdHJ1Y3Rvcih0LG49YFVSTCBlbGljaXRhdGlvbiR7dC5sZW5ndGg+MT8icyI6IiJ9IHJlcXVpcmVkYCl7c3VwZXIoZWUuVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxuLHtlbGljaXRhdGlvbnM6dH0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiB5dChlKXtyZXR1cm4gZT09PSJjb21wbGV0ZWQifHxlPT09ImZhaWxlZCJ8fGU9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiB0ZChlKXtjb25zdCBuPU15KGUpPy5tZXRob2Q7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz1xeShuKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIG5kKGUsdCl7Y29uc3Qgbj1fZihlLHQpO2lmKCFuLnN1Y2Nlc3MpdGhyb3cgbi5lcnJvcjtyZXR1cm4gbi5kYXRhfWNvbnN0IEprPTZlNDtjbGFzcyBLa3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9vcHRpb25zPXQsdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihabCxuPT57dGhpcy5fb25jYW5jZWwobil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoamwsbj0+e3RoaXMuX29ucHJvZ3Jlc3Mobil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEtyLG49Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT10Py50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT10Py50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIocWwsYXN5bmMobixvKT0+e2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2sobi5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighcyl0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm57Li4uc319KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKERsLGFzeW5jKG4sbyk9Pntjb25zdCBzPWFzeW5jKCk9Pntjb25zdCByPW4ucGFyYW1zLnRhc2tJZDtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgYTtmb3IoO2E9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlKHIsby5zZXNzaW9uSWQpOyl7aWYoYS50eXBlPT09InJlc3BvbnNlInx8YS50eXBlPT09ImVycm9yIil7Y29uc3QgdT1hLm1lc3NhZ2UsZD11LmlkLHA9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoZCk7aWYocClpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShkKSxhLnR5cGU9PT0icmVzcG9uc2UiKXAodSk7ZWxzZXtjb25zdCBoPXUsZj1uZXcgSyhoLmVycm9yLmNvZGUsaC5lcnJvci5tZXNzYWdlLGguZXJyb3IuZGF0YSk7cChmKX1lbHNle2NvbnN0IGg9YS50eXBlPT09InJlc3BvbnNlIj8iUmVzcG9uc2UiOiJFcnJvciI7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYCR7aH0gaGFuZGxlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7ZH1gKSl9Y29udGludWV9YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5zZW5kKGEubWVzc2FnZSx7cmVsYXRlZFJlcXVlc3RJZDpvLnJlcXVlc3RJZH0pfX1jb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIsby5zZXNzaW9uSWQpO2lmKCFpKXRocm93IG5ldyBLKGVlLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke3J9YCk7aWYoIXl0KGkuc3RhdHVzKSlyZXR1cm4gYXdhaXQgdGhpcy5fd2FpdEZvclRhc2tVcGRhdGUocixvLnNpZ25hbCksYXdhaXQgcygpO2lmKHl0KGkuc3RhdHVzKSl7Y29uc3QgYT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChyLG8uc2Vzc2lvbklkKTtyZXR1cm4gdGhpcy5fY2xlYXJUYXNrUXVldWUociksey4uLmEsX21ldGE6ey4uLmEuX21ldGEsWyR0XTp7dGFza0lkOnJ9fX19cmV0dXJuIGF3YWl0IHMoKX07cmV0dXJuIGF3YWl0IHMoKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQmwsYXN5bmMobixvKT0+e3RyeXtjb25zdHt0YXNrczpzLG5leHRDdXJzb3I6cn09YXdhaXQgdGhpcy5fdGFza1N0b3JlLmxpc3RUYXNrcyhuLnBhcmFtcz8uY3Vyc29yLG8uc2Vzc2lvbklkKTtyZXR1cm57dGFza3M6cyxuZXh0Q3Vyc29yOnIsX21ldGE6e319fWNhdGNoKHMpe3Rocm93IG5ldyBLKGVlLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke3MgaW5zdGFuY2VvZiBFcnJvcj9zLm1lc3NhZ2U6U3RyaW5nKHMpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoVWwsYXN5bmMobixvKT0+e3RyeXtjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXMpdGhyb3cgbmV3IEsoZWUuSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7bi5wYXJhbXMudGFza0lkfWApO2lmKHl0KHMuc3RhdHVzKSl0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgY2FuY2VsIHRhc2sgaW4gdGVybWluYWwgc3RhdHVzOiAke3Muc3RhdHVzfWApO2F3YWl0IHRoaXMuX3Rhc2tTdG9yZS51cGRhdGVUYXNrU3RhdHVzKG4ucGFyYW1zLnRhc2tJZCwiY2FuY2VsbGVkIiwiQ2xpZW50IGNhbmNlbGxlZCB0YXNrIGV4ZWN1dGlvbi4iLG8uc2Vzc2lvbklkKSx0aGlzLl9jbGVhclRhc2tRdWV1ZShuLnBhcmFtcy50YXNrSWQpO2NvbnN0IHI9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2sobi5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighcil0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7bi5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5yfX1jYXRjaChzKXt0aHJvdyBzIGluc3RhbmNlb2YgSz9zOm5ldyBLKGVlLkludmFsaWRSZXF1ZXN0LGBGYWlsZWQgdG8gY2FuY2VsIHRhc2s6ICR7cyBpbnN0YW5jZW9mIEVycm9yP3MubWVzc2FnZTpTdHJpbmcocyl9YCl9fSkpfWFzeW5jIF9vbmNhbmNlbCh0KXtpZighdC5wYXJhbXMucmVxdWVzdElkKXJldHVybjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQucGFyYW1zLnJlcXVlc3RJZCk/LmFib3J0KHQucGFyYW1zLnJlYXNvbil9X3NldHVwVGltZW91dCh0LG4sbyxzLHI9ITEpe3RoaXMuX3RpbWVvdXRJbmZvLnNldCh0LHt0aW1lb3V0SWQ6c2V0VGltZW91dChzLG4pLHN0YXJ0VGltZTpEYXRlLm5vdygpLHRpbWVvdXQ6bixtYXhUb3RhbFRpbWVvdXQ6byxyZXNldFRpbWVvdXRPblByb2dyZXNzOnIsb25UaW1lb3V0OnN9KX1fcmVzZXRUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO2lmKCFuKXJldHVybiExO2NvbnN0IG89RGF0ZS5ub3coKS1uLnN0YXJ0VGltZTtpZihuLm1heFRvdGFsVGltZW91dCYmbz49bi5tYXhUb3RhbFRpbWVvdXQpdGhyb3cgdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpLEsuZnJvbUVycm9yKGVlLlJlcXVlc3RUaW1lb3V0LCJNYXhpbXVtIHRvdGFsIHRpbWVvdXQgZXhjZWVkZWQiLHttYXhUb3RhbFRpbWVvdXQ6bi5tYXhUb3RhbFRpbWVvdXQsdG90YWxFbGFwc2VkOm99KTtyZXR1cm4gY2xlYXJUaW1lb3V0KG4udGltZW91dElkKSxuLnRpbWVvdXRJZD1zZXRUaW1lb3V0KG4ub25UaW1lb3V0LG4udGltZW91dCksITB9X2NsZWFudXBUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO24mJihjbGVhclRpbWVvdXQobi50aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZSh0KSl9YXN5bmMgY29ubmVjdCh0KXtpZih0aGlzLl90cmFuc3BvcnQpdGhyb3cgbmV3IEVycm9yKCJBbHJlYWR5IGNvbm5lY3RlZCB0byBhIHRyYW5zcG9ydC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIHRvIGEgbmV3IHRyYW5zcG9ydCwgb3IgdXNlIGEgc2VwYXJhdGUgUHJvdG9jb2wgaW5zdGFuY2UgcGVyIGNvbm5lY3Rpb24uIik7dGhpcy5fdHJhbnNwb3J0PXQ7Y29uc3Qgbj10aGlzLnRyYW5zcG9ydD8ub25jbG9zZTt0aGlzLl90cmFuc3BvcnQub25jbG9zZT0oKT0+e24/LigpLHRoaXMuX29uY2xvc2UoKX07Y29uc3Qgbz10aGlzLnRyYW5zcG9ydD8ub25lcnJvcjt0aGlzLl90cmFuc3BvcnQub25lcnJvcj1yPT57bz8uKHIpLHRoaXMuX29uZXJyb3Iocil9O2NvbnN0IHM9dGhpcy5fdHJhbnNwb3J0Py5vbm1lc3NhZ2U7dGhpcy5fdHJhbnNwb3J0Lm9ubWVzc2FnZT0ocixpKT0+e3M/LihyLGkpLG9zKHIpfHxoJChyKT90aGlzLl9vbnJlc3BvbnNlKHIpOmVkKHIpP3RoaXMuX29ucmVxdWVzdChyLGkpOnAkKHIpP3RoaXMuX29ubm90aWZpY2F0aW9uKHIpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZTogJHtKU09OLnN0cmluZ2lmeShyKX1gKSl9LGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zdGFydCgpfV9vbmNsb3NlKCl7Y29uc3QgdD10aGlzLl9yZXNwb25zZUhhbmRsZXJzO3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmNsZWFyKCksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmNsZWFyKCksdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl90aW1lb3V0SW5mby52YWx1ZXMoKSljbGVhclRpbWVvdXQoby50aW1lb3V0SWQpO3RoaXMuX3RpbWVvdXRJbmZvLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnZhbHVlcygpKW8uYWJvcnQoKTt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuY2xlYXIoKTtjb25zdCBuPUsuZnJvbUVycm9yKGVlLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIHQudmFsdWVzKCkpbyhuKX1fb25lcnJvcih0KXt0aGlzLm9uZXJyb3I/Lih0KX1fb25ub3RpZmljYXRpb24odCl7Y29uc3Qgbj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQodC5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtuIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5uKHQpKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QodCxuKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQodC5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIscz10aGlzLl90cmFuc3BvcnQscj10LnBhcmFtcz8uX21ldGE/LlskdF0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBwPXtqc29ucnBjOiIyLjAiLGlkOnQuaWQsZXJyb3I6e2NvZGU6ZWUuTWV0aG9kTm90Rm91bmQsbWVzc2FnZToiTWV0aG9kIG5vdCBmb3VuZCJ9fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP3RoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpwLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpLmNhdGNoKGg9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZW5xdWV1ZSBlcnJvciByZXNwb25zZTogJHtofWApKSk6cz8uc2VuZChwKS5jYXRjaChoPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgYW4gZXJyb3IgcmVzcG9uc2U6ICR7aH1gKSkpO3JldHVybn1jb25zdCBpPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldCh0LmlkLGkpO2NvbnN0IGE9ZCQodC5wYXJhbXMpP3QucGFyYW1zLnRhc2s6dm9pZCAwLHU9dGhpcy5fdGFza1N0b3JlP3RoaXMucmVxdWVzdFRhc2tTdG9yZSh0LHM/LnNlc3Npb25JZCk6dm9pZCAwLGQ9e3NpZ25hbDppLnNpZ25hbCxzZXNzaW9uSWQ6cz8uc2Vzc2lvbklkLF9tZXRhOnQucGFyYW1zPy5fbWV0YSxzZW5kTm90aWZpY2F0aW9uOmFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJihoLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHAsaCl9LHNlbmRSZXF1ZXN0OmFzeW5jKHAsaCxmKT0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEsoZWUuQ29ubmVjdGlvbkNsb3NlZCwiUmVxdWVzdCB3YXMgY2FuY2VsbGVkIik7Y29uc3QgJD17Li4uZixyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJiEkLnJlbGF0ZWRUYXNrJiYoJC5yZWxhdGVkVGFzaz17dGFza0lkOnJ9KTtjb25zdCBrPSQucmVsYXRlZFRhc2s/LnRhc2tJZD8/cjtyZXR1cm4gayYmdSYmYXdhaXQgdS51cGRhdGVUYXNrU3RhdHVzKGssImlucHV0X3JlcXVpcmVkIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHAsaCwkKX0sYXV0aEluZm86bj8uYXV0aEluZm8scmVxdWVzdElkOnQuaWQscmVxdWVzdEluZm86bj8ucmVxdWVzdEluZm8sdGFza0lkOnIsdGFza1N0b3JlOnUsdGFza1JlcXVlc3RlZFR0bDphPy50dGwsY2xvc2VTU0VTdHJlYW06bj8uY2xvc2VTU0VTdHJlYW0sY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtOm4/LmNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbX07UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EmJnRoaXMuYXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KHQubWV0aG9kKX0pLnRoZW4oKCk9Pm8odCxkKSkudGhlbihhc3luYyBwPT57aWYoaS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgaD17cmVzdWx0OnAsanNvbnJwYzoiMi4wIixpZDp0LmlkfTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJyZXNwb25zZSIsbWVzc2FnZTpoLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpOmF3YWl0IHM/LnNlbmQoaCl9LGFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtqc29ucnBjOiIyLjAiLGlkOnQuaWQsZXJyb3I6e2NvZGU6TnVtYmVyLmlzU2FmZUludGVnZXIocC5jb2RlKT9wLmNvZGU6ZWUuSW50ZXJuYWxFcnJvcixtZXNzYWdlOnAubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5wLmRhdGEhPT12b2lkIDAmJntkYXRhOnAuZGF0YX19fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpoLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpOmF3YWl0IHM/LnNlbmQoaCl9KS5jYXRjaChwPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7cH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQuaWQpPT09aSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZSh0LmlkKX0pfV9vbnByb2dyZXNzKHQpe2NvbnN0e3Byb2dyZXNzVG9rZW46biwuLi5vfT10LnBhcmFtcyxzPU51bWJlcihuKSxyPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KHMpO2lmKCFyKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkodCl9YCkpO3JldHVybn1jb25zdCBpPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KHMpLGE9dGhpcy5fdGltZW91dEluZm8uZ2V0KHMpO2lmKGEmJmkmJmEucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KHMpfWNhdGNoKHUpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHMpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHMpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHMpLGkodSk7cmV0dXJufXIobyl9X29ucmVzcG9uc2UodCl7Y29uc3Qgbj1OdW1iZXIodC5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChuKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShuKSxvcyh0KSlvKHQpO2Vsc2V7Y29uc3QgaT1uZXcgSyh0LmVycm9yLmNvZGUsdC5lcnJvci5tZXNzYWdlLHQuZXJyb3IuZGF0YSk7byhpKX1yZXR1cm59Y29uc3Qgcz10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChuKTtpZihzPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KHQpfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUobiksdGhpcy5fY2xlYW51cFRpbWVvdXQobik7bGV0IHI9ITE7aWYob3ModCkmJnQucmVzdWx0JiZ0eXBlb2YgdC5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBpPXQucmVzdWx0O2lmKGkudGFzayYmdHlwZW9mIGkudGFzaz09Im9iamVjdCIpe2NvbnN0IGE9aS50YXNrO3R5cGVvZiBhLnRhc2tJZD09InN0cmluZyImJihyPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQoYS50YXNrSWQsbikpfX1pZihyfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShuKSxvcyh0KSlzKHQpO2Vsc2V7Y29uc3QgaT1LLmZyb21FcnJvcih0LmVycm9yLmNvZGUsdC5lcnJvci5tZXNzYWdlLHQuZXJyb3IuZGF0YSk7cyhpKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbSh0LG4sbyl7Y29uc3R7dGFzazpzfT1vPz97fTtpZighcyl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdCh0LG4sbyl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgSz9pOm5ldyBLKGVlLkludGVybmFsRXJyb3IsU3RyaW5nKGkpKX19cmV0dXJufWxldCByO3RyeXtjb25zdCBpPWF3YWl0IHRoaXMucmVxdWVzdCh0LE1sLG8pO2lmKGkudGFzaylyPWkudGFzay50YXNrSWQseWllbGR7dHlwZToidGFza0NyZWF0ZWQiLHRhc2s6aS50YXNrfTtlbHNlIHRocm93IG5ldyBLKGVlLkludGVybmFsRXJyb3IsIlRhc2sgY3JlYXRpb24gZGlkIG5vdCByZXR1cm4gYSB0YXNrIik7Zm9yKDs7KXtjb25zdCBhPWF3YWl0IHRoaXMuZ2V0VGFzayh7dGFza0lkOnJ9LG8pO2lmKHlpZWxke3R5cGU6InRhc2tTdGF0dXMiLHRhc2s6YX0seXQoYS5zdGF0dXMpKXthLnN0YXR1cz09PSJjb21wbGV0ZWQiP3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOnJ9LG4sbyl9OmEuc3RhdHVzPT09ImZhaWxlZCI/eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBLKGVlLkludGVybmFsRXJyb3IsYFRhc2sgJHtyfSBmYWlsZWRgKX06YS5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgSyhlZS5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gd2FzIGNhbmNlbGxlZGApfSk7cmV0dXJufWlmKGEuc3RhdHVzPT09ImlucHV0X3JlcXVpcmVkIil7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX07cmV0dXJufWNvbnN0IHU9YS5wb2xsSW50ZXJ2YWw/P3RoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7YXdhaXQgbmV3IFByb21pc2UoZD0+c2V0VGltZW91dChkLHUpKSxvPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgSz9pOm5ldyBLKGVlLkludGVybmFsRXJyb3IsU3RyaW5nKGkpKX19fXJlcXVlc3QodCxuLG8pe2NvbnN0e3JlbGF0ZWRSZXF1ZXN0SWQ6cyxyZXN1bXB0aW9uVG9rZW46cixvbnJlc3VtcHRpb250b2tlbjppLHRhc2s6YSxyZWxhdGVkVGFzazp1fT1vPz97fTtyZXR1cm4gbmV3IFByb21pc2UoKGQscCk9Pntjb25zdCBoPVQ9PntwKFQpfTtpZighdGhpcy5fdHJhbnNwb3J0KXtoKG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpKTtyZXR1cm59aWYodGhpcy5fb3B0aW9ucz8uZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcz09PSEwKXRyeXt0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodC5tZXRob2QpLGEmJnRoaXMuYXNzZXJ0VGFza0NhcGFiaWxpdHkodC5tZXRob2QpfWNhdGNoKFQpe2goVCk7cmV0dXJufW8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtjb25zdCBmPXRoaXMuX3JlcXVlc3RNZXNzYWdlSWQrKywkPXsuLi50LGpzb25ycGM6IjIuMCIsaWQ6Zn07bz8ub25wcm9ncmVzcyYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuc2V0KGYsby5vbnByb2dyZXNzKSwkLnBhcmFtcz17Li4udC5wYXJhbXMsX21ldGE6ey4uLnQucGFyYW1zPy5fbWV0YXx8e30scHJvZ3Jlc3NUb2tlbjpmfX0pLGEmJigkLnBhcmFtcz17Li4uJC5wYXJhbXMsdGFzazphfSksdSYmKCQucGFyYW1zPXsuLi4kLnBhcmFtcyxfbWV0YTp7Li4uJC5wYXJhbXM/Ll9tZXRhfHx7fSxbJHRdOnV9fSk7Y29uc3Qgaz1UPT57dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoZiksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoZiksdGhpcy5fY2xlYW51cFRpbWVvdXQoZiksdGhpcy5fdHJhbnNwb3J0Py5zZW5kKHtqc29ucnBjOiIyLjAiLG1ldGhvZDoibm90aWZpY2F0aW9ucy9jYW5jZWxsZWQiLHBhcmFtczp7cmVxdWVzdElkOmYscmVhc29uOlN0cmluZyhUKX19LHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aX0pLmNhdGNoKHNlPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke3NlfWApKSk7Y29uc3QgWj1UIGluc3RhbmNlb2YgSz9UOm5ldyBLKGVlLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhUKSk7cChaKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQoZixUPT57aWYoIW8/LnNpZ25hbD8uYWJvcnRlZCl7aWYoVCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwKFQpO3RyeXtjb25zdCBaPV9mKG4sVC5yZXN1bHQpO1ouc3VjY2Vzcz9kKFouZGF0YSk6cChaLmVycm9yKX1jYXRjaChaKXtwKFopfX19KSxvPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2sobz8uc2lnbmFsPy5yZWFzb24pfSk7Y29uc3Qgej1vPy50aW1lb3V0Pz9KayxBPSgpPT5rKEsuZnJvbUVycm9yKGVlLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6en0pKTt0aGlzLl9zZXR1cFRpbWVvdXQoZix6LG8/Lm1heFRvdGFsVGltZW91dCxBLG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCB4PXU/LnRhc2tJZDtpZih4KXtjb25zdCBUPVo9Pntjb25zdCBzZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChmKTtzZT9zZShaKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzcG9uc2UgaGFuZGxlciBtaXNzaW5nIGZvciBzaWRlLWNoYW5uZWxlZCByZXF1ZXN0ICR7Zn1gKSl9O3RoaXMuX3JlcXVlc3RSZXNvbHZlcnMuc2V0KGYsVCksdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHgse3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKFo9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChmKSxwKFopfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aX0pLmNhdGNoKFQ9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChmKSxwKFQpfSl9KX1hc3luYyBnZXRUYXNrKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczp0fSxMbCxuKX1hc3luYyBnZXRUYXNrUmVzdWx0KHQsbixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOnR9LG4sbyl9YXN5bmMgbGlzdFRhc2tzKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6dH0sRmwsbil9YXN5bmMgY2FuY2VsVGFzayh0LG4pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6dH0sRSQsbil9YXN5bmMgbm90aWZpY2F0aW9uKHQsbil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodC5tZXRob2QpO2NvbnN0IG89bj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBhPXsuLi50LGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxbJHRdOm4ucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTphLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXModC5tZXRob2QpJiYhdC5wYXJhbXMmJiFuPy5yZWxhdGVkUmVxdWVzdElkJiYhbj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyh0Lm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZCh0Lm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZSh0Lm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IGE9ey4uLnQsanNvbnJwYzoiMi4wIn07bj8ucmVsYXRlZFRhc2smJihhPXsuLi5hLHBhcmFtczp7Li4uYS5wYXJhbXMsX21ldGE6ey4uLmEucGFyYW1zPy5fbWV0YXx8e30sWyR0XTpuLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoYSxuKS5jYXRjaCh1PT50aGlzLl9vbmVycm9yKHUpKX0pO3JldHVybn1sZXQgaT17Li4udCxqc29ucnBjOiIyLjAifTtuPy5yZWxhdGVkVGFzayYmKGk9ey4uLmkscGFyYW1zOnsuLi5pLnBhcmFtcyxfbWV0YTp7Li4uaS5wYXJhbXM/Ll9tZXRhfHx7fSxbJHRdOm4ucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGksbil9c2V0UmVxdWVzdEhhbmRsZXIodCxuKXtjb25zdCBvPXRkKHQpO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywocyxyKT0+e2NvbnN0IGk9bmQodCxzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG4oaSxyKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcih0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKHQpfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKHQpe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHt0fSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKXtjb25zdCBvPXRkKHQpO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLHM9Pntjb25zdCByPW5kKHQscyk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKHIpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIodCl7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKHQpfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcih0KXtjb25zdCBuPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQodCk7biE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUodCkpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UodCxuLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3Qgcz10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZSh0LG4sbyxzKX1hc3luYyBfY2xlYXJUYXNrUXVldWUodCxuKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbCh0LG4pO2Zvcihjb25zdCBzIG9mIG8paWYocy50eXBlPT09InJlcXVlc3QiJiZlZChzLm1lc3NhZ2UpKXtjb25zdCByPXMubWVzc2FnZS5pZCxpPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2k/KGkobmV3IEsoZWUuSW50ZXJuYWxFcnJvciwiVGFzayBjYW5jZWxsZWQgb3IgY29tcGxldGVkIikpLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHIpKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzb2x2ZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke3J9IGR1cmluZyB0YXNrICR7dH0gY2xlYW51cGApKX19fWFzeW5jIF93YWl0Rm9yVGFza1VwZGF0ZSh0LG4pe2xldCBvPXRoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7dHJ5e2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlPy5nZXRUYXNrKHQpO3M/LnBvbGxJbnRlcnZhbCYmKG89cy5wb2xsSW50ZXJ2YWwpfWNhdGNoe31yZXR1cm4gbmV3IFByb21pc2UoKHMscik9PntpZihuLmFib3J0ZWQpe3IobmV3IEsoZWUuSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpO3JldHVybn1jb25zdCBpPXNldFRpbWVvdXQocyxvKTtuLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NsZWFyVGltZW91dChpKSxyKG5ldyBLKGVlLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUodCxuKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIHM9PntpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKHMsdC5pZCx7bWV0aG9kOnQubWV0aG9kLHBhcmFtczp0LnBhcmFtc30sbil9LGdldFRhc2s6YXN5bmMgcz0+e2NvbnN0IHI9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIXIpdGhyb3cgbmV3IEsoZWUuSW52YWxpZFBhcmFtcywiRmFpbGVkIHRvIHJldHJpZXZlIHRhc2s6IFRhc2sgbm90IGZvdW5kIik7cmV0dXJuIHJ9LHN0b3JlVGFza1Jlc3VsdDphc3luYyhzLHIsaSk9Pnthd2FpdCBvLnN0b3JlVGFza1Jlc3VsdChzLHIsaSxuKTtjb25zdCBhPWF3YWl0IG8uZ2V0VGFzayhzLG4pO2lmKGEpe2NvbnN0IHU9eXMucGFyc2Uoe21ldGhvZDoibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiLHBhcmFtczphfSk7YXdhaXQgdGhpcy5ub3RpZmljYXRpb24odSkseXQoYS5zdGF0dXMpJiZ0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihzKX19LGdldFRhc2tSZXN1bHQ6cz0+by5nZXRUYXNrUmVzdWx0KHMsbiksdXBkYXRlVGFza1N0YXR1czphc3luYyhzLHIsaSk9Pntjb25zdCBhPWF3YWl0IG8uZ2V0VGFzayhzLG4pO2lmKCFhKXRocm93IG5ldyBLKGVlLkludmFsaWRQYXJhbXMsYFRhc2sgIiR7c30iIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKHl0KGEuc3RhdHVzKSl0aHJvdyBuZXcgSyhlZS5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7c30iIGZyb20gdGVybWluYWwgc3RhdHVzICIke2Euc3RhdHVzfSIgdG8gIiR7cn0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMocyxyLGksbik7Y29uc3QgdT1hd2FpdCBvLmdldFRhc2socyxuKTtpZih1KXtjb25zdCBkPXlzLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6dX0pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKGQpLHl0KHUuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIocyl9fSxsaXN0VGFza3M6cz0+by5saXN0VGFza3MocyxuKX19fWZ1bmN0aW9uIG9kKGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBHayhlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IHM9byxyPXRbc107aWYocj09PXZvaWQgMCljb250aW51ZTtjb25zdCBpPW5bc107b2QoaSkmJm9kKHIpP25bc109ey4uLmksLi4ucn06bltzXT1yfXJldHVybiBufShlPT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eShlLHtnZXQ6KHQsbik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0KVtuXX0pOmUpKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJytlKyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIFlrIGV4dGVuZHMgS2t7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2godCxuKXt9X2Vuc3VyZUV2ZW50U2xvdCh0KXtsZXQgbj10aGlzLl9ldmVudFNsb3RzLmdldCh0KTtpZighbil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbdF07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKHQpfWApO249e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQodCxuKTtsZXQgcz1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQocyk7bGV0IHI9bjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8saT0+e2xldCBhPWkucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKHQsYSksci5vbkhhbmRsZXI/LihhKTtmb3IobGV0IHUgb2ZbLi4uci5saXN0ZW5lcnNdKXUoYSl9KX1yZXR1cm4gbn1zZXRFdmVudEhhbmRsZXIodCxuKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3QodCk7by5vbkhhbmRsZXImJm4mJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKHQpfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcodCl9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPW59Z2V0RXZlbnRIYW5kbGVyKHQpe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldCh0KT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIodCxuKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QodCkubGlzdGVuZXJzLnB1c2gobil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpO2lmKCFvKXJldHVybjtsZXQgcz1vLmxpc3RlbmVycy5pbmRleE9mKG4pO3MhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKHMsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KHQsbik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIodCxuKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0odCxuKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCh0LG4sbyl7biYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7dH0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPSh0LG4pPT57bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKHQsbil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsbil7bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtufSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIFFrPSIyMDI2LTAxLTI2IixYaz0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIGV3e2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3Rvcih0PXdpbmRvdy5wYXJlbnQsbil7dGhpcy5ldmVudFRhcmdldD10LHRoaXMuZXZlbnRTb3VyY2U9bix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYobiYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgcz1tJC5zYWZlUGFyc2Uoby5kYXRhKTtzLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixzLmRhdGEpLHRoaXMub25tZXNzYWdlPy4ocy5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK3MuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQodCxuKXt0Lm1ldGhvZCE9PVhrJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLHQpLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UodCwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgdHc9QihbYigibGlnaHQiKSxiKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIikscW49QihbYigiaW5saW5lIiksYigiZnVsbHNjcmVlbiIpLGIoInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLG53PUIoW2IoIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLGIoIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLGIoIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxiKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksYigiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxiKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLGIoIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLGIoIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksYigiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLGIoIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLGIoIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksYigiLS1jb2xvci10ZXh0LWdob3N0IiksYigiLS1jb2xvci10ZXh0LWluZm8iKSxiKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksYigiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxiKCItLWNvbG9yLXRleHQtd2FybmluZyIpLGIoIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLGIoIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxiKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxiKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLGIoIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxiKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLGIoIi0tY29sb3ItYm9yZGVyLWluZm8iKSxiKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxiKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksYigiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLGIoIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksYigiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxiKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksYigiLS1jb2xvci1yaW5nLWludmVyc2UiKSxiKCItLWNvbG9yLXJpbmctaW5mbyIpLGIoIi0tY29sb3ItcmluZy1kYW5nZXIiKSxiKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLGIoIi0tY29sb3ItcmluZy13YXJuaW5nIiksYigiLS1mb250LXNhbnMiKSxiKCItLWZvbnQtbW9ubyIpLGIoIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksYigiLS1mb250LXdlaWdodC1tZWRpdW0iKSxiKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksYigiLS1mb250LXdlaWdodC1ib2xkIiksYigiLS1mb250LXRleHQteHMtc2l6ZSIpLGIoIi0tZm9udC10ZXh0LXNtLXNpemUiKSxiKCItLWZvbnQtdGV4dC1tZC1zaXplIiksYigiLS1mb250LXRleHQtbGctc2l6ZSIpLGIoIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxiKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksYigiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLGIoIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxiKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksYigiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxiKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLGIoIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksYigiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxiKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLGIoIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksYigiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxiKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLGIoIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksYigiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxiKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLGIoIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLGIoIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLGIoIi0tYm9yZGVyLXJhZGl1cy14cyIpLGIoIi0tYm9yZGVyLXJhZGl1cy1zbSIpLGIoIi0tYm9yZGVyLXJhZGl1cy1tZCIpLGIoIi0tYm9yZGVyLXJhZGl1cy1sZyIpLGIoIi0tYm9yZGVyLXJhZGl1cy14bCIpLGIoIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksYigiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLGIoIi0tc2hhZG93LWhhaXJsaW5lIiksYigiLS1zaGFkb3ctc20iKSxiKCItLXNoYWRvdy1tZCIpLGIoIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLG93PUgobncuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksQihbZygpLEt0KCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7dih7bWV0aG9kOmIoInVpL29wZW4tbGluayIpLHBhcmFtczp2KHt1cmw6ZygpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIHN3PXYoe2lzRXJyb3I6USgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLHJ3PXYoe2lzRXJyb3I6USgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxpdz12KHtpc0Vycm9yOlEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTt2KHttZXRob2Q6YigidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOnYoe30pfSk7dmFyIFlsPXYoe2Nvbm5lY3REb21haW5zOlIoZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczpSKGcoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6UihnKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6UihnKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLFFsPXYoe2NhbWVyYTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7dih7bWV0aG9kOmIoInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOnYoe3dpZHRoOnEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDpxKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBhdz12KHttZXRob2Q6YigidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGcoKSxZKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksY3c9dih7bWV0aG9kOmIoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGcoKSxZKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLGx3PXYoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOnYoe3JlYXNvbjpnKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSx1dz12KHtmb250czpnKCkub3B0aW9uYWwoKX0pLGR3PXYoe3ZhcmlhYmxlczpvdy5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOnV3Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxwdz12KHttZXRob2Q6YigidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6dih7fSl9KTtIKGcoKSxZKCkpO3ZhciBzZD12KHt0ZXh0OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7dih7bWV0aG9kOmIoInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczp2KHt9KS5vcHRpb25hbCgpfSk7dmFyIGh3PXYoe2V4cGVyaW1lbnRhbDpIKGcoKSxIKGcoKSxSbygpKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpLG9wZW5MaW5rczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczp2KHtsaXN0Q2hhbmdlZDpRKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOnYoe2xpc3RDaGFuZ2VkOlEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OnYoe3Blcm1pc3Npb25zOlFsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpZbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpzZC5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6c2Qub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzp2KHt0b29sczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxtdz12KHtleHBlcmltZW50YWw6SChnKCksSChnKCksUm8oKSkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMga2V5ZWQgYnkgaWRlbnRpZmllci4iKSx0b29sczp2KHtsaXN0Q2hhbmdlZDpRKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOlIocW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO3Yoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOnYoe30pLm9wdGlvbmFsKCl9KTt2KHtjc3A6WWwub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOlFsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46ZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6USgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTt2KHttZXRob2Q6YigidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6dih7bW9kZTpxbi5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBmdz12KHttb2RlOnFuLmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxndz1CKFtiKCJtb2RlbCIpLGIoImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO3Yoe3Jlc291cmNlVXJpOmcoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6Uihndykub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDpTdCgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6U3QoKS5vcHRpb25hbCgpfSk7dih7bWltZVR5cGVzOlIoZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7dih7bWV0aG9kOmIoInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6dih7Y29udGVudHM6UihCKFtWZixKZl0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7dih7bWV0aG9kOmIoInVpL21lc3NhZ2UiKSxwYXJhbXM6dih7cm9sZTpiKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OlIoVm8pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO3Yoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6dih7aHRtbDpnKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpZbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOlFsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIGJ3PXYoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOkdyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksZWc9dih7dG9vbEluZm86dih7aWQ6RG8ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOkdsLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOnR3Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6ZHcub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOnFuLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6Uihxbikub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOkIoW3Yoe2hlaWdodDpxKCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksdih7bWF4SGVpZ2h0OkIoW3EoKSxLdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKEIoW3Yoe3dpZHRoOnEoKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLHYoe21heFdpZHRoOkIoW3EoKSxLdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpnKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06QihbYigid2ViIiksYigiZGVza3RvcCIpLGIoIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczp2KHt0b3VjaDpRKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOlEoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czp2KHt0b3A6cSgpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDpxKCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOnEoKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDpxKCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLHZ3PXYoe21ldGhvZDpiKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOmVnLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO3Yoe21ldGhvZDpiKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczp2KHtjb250ZW50OlIoVm8pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGcoKSxZKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO3Yoe21ldGhvZDpiKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOnYoe2FwcEluZm86SnIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOm13LmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpnKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciB5dz12KHtwcm90b2NvbFZlcnNpb246ZygpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOkpyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6aHcuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6ZWcuZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksJHc9e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIHJkKGUsdCl7bGV0IG49ZVsifnN0YW5kYXJkIl07aWYobi5qc29uU2NoZW1hKXJldHVybiBuLmpzb25TY2hlbWFbdF0oJHcpO2lmKG4udmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IEpnKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5jJCksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKGUse2lvOnR9KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7bi52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBpZChlLHQsbj0iIil7bGV0IG89YXdhaXQgZVsifnN0YW5kYXJkIl0udmFsaWRhdGUodCk7aWYoby5pc3N1ZXMpe2xldCBzPW8uaXNzdWVzLm1hcChyPT57bGV0IGk9ci5wYXRoPy5tYXAoYT0+dHlwZW9mIGE9PSJvYmplY3QiP2Eua2V5OmEpLmpvaW4oIi4iKTtyZXR1cm4gaT9gJHtpfTogJHtyLm1lc3NhZ2V9YDpyLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKG4rcyl9cmV0dXJuIG8udmFsdWV9ZnVuY3Rpb24ga3coZSl7bGV0IHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3Quc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIixlKSx0LnN0eWxlLmNvbG9yU2NoZW1lPWV9ZnVuY3Rpb24gd3coZSx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7Zm9yKGxldFtuLG9db2YgT2JqZWN0LmVudHJpZXMoZSkpbyE9PXZvaWQgMCYmdC5zdHlsZS5zZXRQcm9wZXJ0eShuLG8pfWZ1bmN0aW9uIF93KGUpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX21jcC1ob3N0LWZvbnRzIikpcmV0dXJuO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pZD0iX19tY3AtaG9zdC1mb250cyIsdC50ZXh0Q29udGVudD1lLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Y2xhc3MgWGwgZXh0ZW5kcyBZa3tfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKHQpe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IG49YFtleHQtYXBwc10gQXBwLiR7dH0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKG4pO2NvbnNvbGUud2FybihgJHtufS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6YXcsdG9vbGlucHV0cGFydGlhbDpjdyx0b29scmVzdWx0OmJ3LHRvb2xjYW5jZWxsZWQ6bHcsaG9zdGNvbnRleHRjaGFuZ2VkOnZ3fTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKHQpe2lmKCFYbC5PTkVfU0hPVF9FVkVOVFMuaGFzKHQpfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKHQpfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZCh0KSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IG49YFtleHQtYXBwc10gIiR7U3RyaW5nKHQpfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihuKTtjb25zb2xlLndhcm4obil9c2V0RXZlbnRIYW5kbGVyKHQsbil7biYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5zZXRFdmVudEhhbmRsZXIodCxuKX1hZGRFdmVudExpc3RlbmVyKHQsbil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5hZGRFdmVudExpc3RlbmVyKHQsbil9b25FdmVudERpc3BhdGNoKHQsbil7dD09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLm59KX1jb25zdHJ1Y3Rvcih0LG49e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89dCx0aGlzLl9jYXBhYmlsaXRpZXM9bix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8aGUoe2ppdGxlc3M6ITB9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEtyLHM9Pihjb25zb2xlLmxvZygiUmVjZWl2ZWQgcGluZzoiLHMucGFyYW1zKSx7fSkpLHRoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLHZvaWQgMCl9cmVnaXN0ZXJDYXBhYmlsaXRpZXModCl7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBjYXBhYmlsaXRpZXMgYWZ0ZXIgdHJhbnNwb3J0IGlzIGVzdGFibGlzaGVkIik7dGhpcy5fY2FwYWJpbGl0aWVzPUdrKHRoaXMuX2NhcGFiaWxpdGllcyx0KX1yZWdpc3RlclRvb2wodCxuLG8pe2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1t0XSl0aHJvdyBFcnJvcihgVG9vbCAke3R9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBzPXRoaXMscj0oKT0+e3MuX2luaXRpYWxpemVkU2VudCYmcy5fY2FwYWJpbGl0aWVzLnRvb2xzPy5saXN0Q2hhbmdlZCYmcy5zZW5kVG9vbExpc3RDaGFuZ2VkKCl9LGk9bi5pbnB1dFNjaGVtYSE9PXZvaWQgMCxhPXt0aXRsZTpuLnRpdGxlLGRlc2NyaXB0aW9uOm4uZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6bi5pbnB1dFNjaGVtYSxvdXRwdXRTY2hlbWE6bi5vdXRwdXRTY2hlbWEsYW5ub3RhdGlvbnM6bi5hbm5vdGF0aW9ucyxfbWV0YTpuLl9tZXRhLGVuYWJsZWQ6ITAsZW5hYmxlKCl7dGhpcy5lbmFibGVkPSEwLHIoKX0sZGlzYWJsZSgpe3RoaXMuZW5hYmxlZD0hMSxyKCl9LHVwZGF0ZSh1KXtPYmplY3QuYXNzaWduKHRoaXMsdSkscigpfSxyZW1vdmUoKXtzLl9yZWdpc3RlcmVkVG9vbHNbdF09PT1hJiYoZGVsZXRlIHMuX3JlZ2lzdGVyZWRUb29sc1t0XSxyKCkpfSxoYW5kbGVyOmFzeW5jKHUsZCk9PntpZighYS5lbmFibGVkKXRocm93IEVycm9yKGBUb29sICR7dH0gaXMgZGlzYWJsZWRgKTtsZXQgcDtpZihpKXtsZXQgaD1hLmlucHV0U2NoZW1hLGY9aD9hd2FpdCBpZChoLHU/P3t9LGBJbnZhbGlkIGlucHV0IGZvciB0b29sICR7dH06IGApOnU/P3t9O3A9YXdhaXQgbyhmLGQpfWVsc2UgcD1hd2FpdCBvKGQpO3JldHVybiBhLm91dHB1dFNjaGVtYSYmIXAuaXNFcnJvciYmKHAuc3RydWN0dXJlZENvbnRlbnQ9YXdhaXQgaWQoYS5vdXRwdXRTY2hlbWEscC5zdHJ1Y3R1cmVkQ29udGVudCxgSW52YWxpZCBvdXRwdXQgZm9yIHRvb2wgJHt0fTogYCkpLHB9fTtyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZFRvb2xzW3RdPWEsIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyYmIXRoaXMudHJhbnNwb3J0JiZ0aGlzLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHt0b29sczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5lbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpLHIoKSxhfV90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMTtlbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpe3RoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkfHwodGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5vbmNhbGx0b29sPWFzeW5jKHQsbik9PntsZXQgbz10aGlzLl9yZWdpc3RlcmVkVG9vbHNbdC5uYW1lXTtpZighbyl0aHJvdyBFcnJvcihgVG9vbCAke3QubmFtZX0gbm90IGZvdW5kYCk7cmV0dXJuIG8uaGFuZGxlcih0LmFyZ3VtZW50cyxuKX0sdGhpcy5vbmxpc3R0b29scz1hc3luYyh0LG4pPT4oe3Rvb2xzOmF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHRoaXMuX3JlZ2lzdGVyZWRUb29scykuZmlsdGVyKChbbyxzXSk9PnMuZW5hYmxlZCkubWFwKGFzeW5jKFtvLHNdKT0+e2xldCByPXtuYW1lOm8sdGl0bGU6cy50aXRsZSxkZXNjcmlwdGlvbjpzLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnMuaW5wdXRTY2hlbWE/YXdhaXQgcmQocy5pbnB1dFNjaGVtYSwiaW5wdXQiKTp7dHlwZToib2JqZWN0Iixwcm9wZXJ0aWVzOnt9fX07cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYoci5vdXRwdXRTY2hlbWE9YXdhaXQgcmQocy5vdXRwdXRTY2hlbWEsIm91dHB1dCIpKSxzLmFubm90YXRpb25zJiYoci5hbm5vdGF0aW9ucz1zLmFubm90YXRpb25zKSxzLl9tZXRhJiYoci5fbWV0YT1zLl9tZXRhKSxyfSkpfSkpfWFzeW5jIHNlbmRUb29sTGlzdENoYW5nZWQodD17fSl7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRUb29sTGlzdENoYW5nZWQiKSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIscGFyYW1zOnR9KX1nZXRIb3N0Q2FwYWJpbGl0aWVzKCl7cmV0dXJuIHRoaXMuX2hvc3RDYXBhYmlsaXRpZXN9Z2V0SG9zdFZlcnNpb24oKXtyZXR1cm4gdGhpcy5faG9zdEluZm99Z2V0SG9zdENvbnRleHQoKXtyZXR1cm4gdGhpcy5faG9zdENvbnRleHR9Z2V0IG9udG9vbGlucHV0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiKX1zZXQgb250b29saW5wdXQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIsdCl9Z2V0IG9udG9vbGlucHV0cGFydGlhbCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIpfXNldCBvbnRvb2xpbnB1dHBhcnRpYWwodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiLHQpfWdldCBvbnRvb2xyZXN1bHQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiKX1zZXQgb250b29scmVzdWx0KHQpe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iix0KX1nZXQgb250b29sY2FuY2VsbGVkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIil9c2V0IG9udG9vbGNhbmNlbGxlZCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIsdCl9Z2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiKX1zZXQgb25ob3N0Y29udGV4dGNoYW5nZWQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdCl9X29udGVhcmRvd247Z2V0IG9udGVhcmRvd24oKXtyZXR1cm4gdGhpcy5fb250ZWFyZG93bn1zZXQgb250ZWFyZG93bih0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9udGVhcmRvd24iLHRoaXMuX29udGVhcmRvd24sdCksdGhpcy5fb250ZWFyZG93bj10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKHB3LChuLG8pPT57aWYoIXRoaXMuX29udGVhcmRvd24pdGhyb3cgRXJyb3IoIk5vIG9udGVhcmRvd24gaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb250ZWFyZG93bihuLnBhcmFtcyxvKX0pfV9vbmNhbGx0b29sO2dldCBvbmNhbGx0b29sKCl7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2x9c2V0IG9uY2FsbHRvb2wodCl7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmNhbGx0b29sIix0aGlzLl9vbmNhbGx0b29sLHQpLHRoaXMuX29uY2FsbHRvb2w9dCx0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihHZiwobixvKT0+e2lmKCF0aGlzLl9vbmNhbGx0b29sKXRocm93IEVycm9yKCJObyBvbmNhbGx0b29sIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2wobi5wYXJhbXMsbyl9KX1fb25saXN0dG9vbHM7Z2V0IG9ubGlzdHRvb2xzKCl7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzfXNldCBvbmxpc3R0b29scyh0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9ubGlzdHRvb2xzIix0aGlzLl9vbmxpc3R0b29scyx0KSx0aGlzLl9vbmxpc3R0b29scz10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKEtmLChuLG8pPT57aWYoIXRoaXMuX29ubGlzdHRvb2xzKXRocm93IEVycm9yKCJObyBvbmxpc3R0b29scyBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmxpc3R0b29scyhuLnBhcmFtcyxvKX0pfWFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodCl7c3dpdGNoKHQpe2Nhc2Uic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSI6aWYoIXRoaXMuX2hvc3RDYXBhYmlsaXRpZXM/LnNhbXBsaW5nKXRocm93IEVycm9yKGBIb3N0IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgKHJlcXVpcmVkIGZvciAke3R9KWApO2JyZWFrfX1hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkodCl7c3dpdGNoKHQpe2Nhc2UidG9vbHMvY2FsbCI6Y2FzZSJ0b29scy9saXN0IjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB0b29sIGNhcGFiaWxpdHkgKHJlcXVpcmVkIGZvciAke3R9KWApO3JldHVybjtjYXNlInBpbmciOmNhc2UidWkvcmVzb3VyY2UtdGVhcmRvd24iOnJldHVybjtkZWZhdWx0OnRocm93IEVycm9yKGBObyBoYW5kbGVyIGZvciBtZXRob2QgJHt0fSByZWdpc3RlcmVkYCl9fWFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodCl7fWFzc2VydFRhc2tDYXBhYmlsaXR5KHQpe3Rocm93IEVycm9yKCJUYXNrcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSh0KXt0aHJvdyBFcnJvcigiVGFzayBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzeW5jIGNhbGxTZXJ2ZXJUb29sKHQsbil7aWYodGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNhbGxTZXJ2ZXJUb29sIiksdHlwZW9mIHQ9PSJzdHJpbmciKXRocm93IEVycm9yKGBjYWxsU2VydmVyVG9vbCgpIGV4cGVjdHMgYW4gb2JqZWN0IGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYnV0IHJlY2VpdmVkIGEgc3RyaW5nICgiJHt0fSIpLiBEaWQgeW91IG1lYW46IGNhbGxTZXJ2ZXJUb29sKHsgbmFtZTogIiR7dH0iLCBhcmd1bWVudHM6IHsgLi4uIH0gfSk/YCk7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0b29scy9jYWxsIixwYXJhbXM6dH0sR3Ise29ucHJvZ3Jlc3M6KCk9Pnt9LHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6ITAsLi4ubn0pfWFzeW5jIHJlYWRTZXJ2ZXJSZXNvdXJjZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVhZFNlcnZlclJlc291cmNlIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9yZWFkIixwYXJhbXM6dH0sV2Ysbil9YXN5bmMgbGlzdFNlcnZlclJlc291cmNlcyh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgibGlzdFNlcnZlclJlc291cmNlcyIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvbGlzdCIscGFyYW1zOnR9LEhmLG4pfWFzeW5jIGNyZWF0ZVNhbXBsaW5nTWVzc2FnZSh0LG4pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjcmVhdGVTYW1wbGluZ01lc3NhZ2UiKTtsZXQgbz10LnRvb2xzP1hmOlFmO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIscGFyYW1zOnR9LG8sbil9c2VuZE1lc3NhZ2UodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRNZXNzYWdlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL21lc3NhZ2UiLHBhcmFtczp0fSxpdyxuKX1zZW5kTG9nKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL21lc3NhZ2UiLHBhcmFtczp0fSl9dXBkYXRlTW9kZWxDb250ZXh0KHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJ1cGRhdGVNb2RlbENvbnRleHQiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvdXBkYXRlLW1vZGVsLWNvbnRleHQiLHBhcmFtczp0fSxObCxuKX1vcGVuTGluayh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgib3BlbkxpbmsiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvb3Blbi1saW5rIixwYXJhbXM6dH0sc3csbil9c2VuZE9wZW5MaW5rPXRoaXMub3Blbkxpbms7ZG93bmxvYWRGaWxlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJkb3dubG9hZEZpbGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvZG93bmxvYWQtZmlsZSIscGFyYW1zOnR9LHJ3LG4pfXJlcXVlc3RUZWFyZG93bih0PXt9KXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIixwYXJhbXM6dH0pfXJlcXVlc3REaXNwbGF5TW9kZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVxdWVzdERpc3BsYXlNb2RlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3JlcXVlc3QtZGlzcGxheS1tb2RlIixwYXJhbXM6dH0sZncsbil9c2VuZFNpemVDaGFuZ2VkKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3NpemUtY2hhbmdlZCIscGFyYW1zOnR9KX1zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpe2xldCB0PSExLG49MCxvPTAscz0oKT0+e3R8fCh0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3Q9ITE7bGV0IGk9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9aS5zdHlsZS5oZWlnaHQ7aS5zdHlsZS5oZWlnaHQ9Im1heC1jb250ZW50IjtsZXQgdT1NYXRoLmNlaWwoaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO2kuc3R5bGUuaGVpZ2h0PWE7bGV0IGQ9TWF0aC5jZWlsKHdpbmRvdy5pbm5lcldpZHRoKTsoZCE9PW58fHUhPT1vKSYmKG49ZCxvPXUsdGhpcy5zZW5kU2l6ZUNoYW5nZWQoe3dpZHRoOmQsaGVpZ2h0OnV9KSl9KSl9O3MoKTtsZXQgcj1uZXcgUmVzaXplT2JzZXJ2ZXIocyk7cmV0dXJuIHIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLHIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KSwoKT0+ci5kaXNjb25uZWN0KCl9YXN5bmMgY29ubmVjdCh0PW5ldyBldyh3aW5kb3cucGFyZW50LHdpbmRvdy5wYXJlbnQpLG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJBcHAgaXMgYWxyZWFkeSBjb25uZWN0ZWQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyBhZ2Fpbi4iKTt0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITEsYXdhaXQgc3VwZXIuY29ubmVjdCh0KTt0cnl7bGV0IG89YXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2luaXRpYWxpemUiLHBhcmFtczp7YXBwQ2FwYWJpbGl0aWVzOnRoaXMuX2NhcGFiaWxpdGllcyxhcHBJbmZvOnRoaXMuX2FwcEluZm8scHJvdG9jb2xWZXJzaW9uOlFrfX0seXcsbik7aWYobz09PXZvaWQgMCl0aHJvdyBFcnJvcihgU2VydmVyIHNlbnQgaW52YWxpZCBpbml0aWFsaXplIHJlc3VsdDogJHtvfWApO3RoaXMuX2hvc3RDYXBhYmlsaXRpZXM9by5ob3N0Q2FwYWJpbGl0aWVzLHRoaXMuX2hvc3RJbmZvPW8uaG9zdEluZm8sdGhpcy5faG9zdENvbnRleHQ9by5ob3N0Q29udGV4dCxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIn0pLHRoaXMuX2luaXRpYWxpemVkU2VudD0hMCx0aGlzLm9wdGlvbnM/LmF1dG9SZXNpemUmJnRoaXMuc2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKX1jYXRjaChvKXt0aHJvdyB0aGlzLmNsb3NlKCksb319fWxldCBhZD0iIjtjb25zdCB0Zz0oZSx0LG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KT0+e2lmKCFlKXJldHVybjsoZS50aGVtZT09PSJsaWdodCJ8fGUudGhlbWU9PT0iZGFyayIpJiZ0LmFwcGx5RG9jdW1lbnRUaGVtZShlLnRoZW1lKTtjb25zdCBvPWUuc3R5bGVzPy52YXJpYWJsZXM7byYmdHlwZW9mIG89PSJvYmplY3QiJiZ0LmFwcGx5SG9zdFN0eWxlVmFyaWFibGVzKG8pO2NvbnN0IHM9ZS5zdHlsZXM/LmNzcz8uZm9udHM7dHlwZW9mIHM9PSJzdHJpbmciJiZzJiZzIT09YWQmJih0LmFwcGx5SG9zdEZvbnRzKHMpLGFkPXMpO2NvbnN0IHI9ZS5zYWZlQXJlYUluc2V0cztpZihyKWZvcihjb25zdCBpIG9mWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSl7Y29uc3QgYT1OdW1iZXIocltpXT8/MCk7bi5zdHlsZS5zZXRQcm9wZXJ0eShgLS1pbnNldC0ke2l9YCxgJHtOdW1iZXIuaXNGaW5pdGUoYSkmJmE+MD9hOjB9cHhgKX19LG5nPWU9PmUucmVwbGFjZSgvWyY8PiInXS9nLHQ9Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW3RdKSxTdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTAgMy41IDUuNSA4IDEwIDEyLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JyxUdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNiAzLjUgMTAuNSA4IDYgMTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLHp3PSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0zLjUgNiA4IDEwLjUgMTIuNSA2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPicseHc9Jzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTkuNSAyLjVoNHY0TTYuNSAxMy41aC00di00TTEzLjUgMi41IDkgN00yLjUgMTMuNSA3IDkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JyxJdz1lPT57Y29uc3QgdD1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS50b3RhbCkpLG49TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuZnJvbSkpLG89TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuY291bnQpKSxzPW4+MCxyPW4rbzx0O2lmKCFzJiYhcilyZXR1cm4iIjtjb25zdCBpPWUubm91bj9gICR7bmcoZS5ub3VuKX1gOiIiLGE9bz9gJHtuKzF94oCTJHtuK299IG9mICR7dH1gOmAwIG9mICR7dH1gO3JldHVybmA8bmF2IGNsYXNzPSJjay1wYWdlciIgYXJpYS1sYWJlbD0iUGFnZXMiPjxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWJ0biIgdHlwZT0iYnV0dG9uIiAke2UucHJldn0ke3M/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IlByZXZpb3VzJHtpfSI+JHtTd308c3Bhbj5QcmV2aW91czwvc3Bhbj48L2J1dHRvbj48c3BhbiBjbGFzcz0iY2stcGFnZXItbiI+JHthfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjay1wYWdlci1idG4iIHR5cGU9ImJ1dHRvbiIgJHtlLm5leHR9JHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSJOZXh0JHtpfSI+PHNwYW4+TmV4dDwvc3Bhbj4ke1R3fTwvYnV0dG9uPjwvbmF2PiR7ZS5hbGw/YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke2UuYWxsfT48c3Bhbj5WaWV3IGFsbCAke3R9PC9zcGFuPiR7eHd9PC9idXR0b24+YDoiIn1gfSxBdz0oZSx0KT0+YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke3R9PjxzcGFuIGRhdGEtbGFiZWw+JHtuZyhlKX08L3NwYW4+JHt6d308L2J1dHRvbj5gLEFlPW5ldyBYbCh7bmFtZToiaG90ZWwtc3RvcmVmcm9udCIsdmVyc2lvbjoiMS4wLjAifSx7b3BlbkxpbmtzOnt9LGF2YWlsYWJsZURpc3BsYXlNb2RlczpbImlubGluZSIsImZ1bGxzY3JlZW4iXX0pLG9nPXthcHBseURvY3VtZW50VGhlbWU6a3csYXBwbHlIb3N0U3R5bGVWYXJpYWJsZXM6d3csYXBwbHlIb3N0Rm9udHM6X3d9LEc9ZT0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSksbD1lPT5TdHJpbmcoZT8/IiIpLnJlcGxhY2UoL1smPD4iJ10vZyx0PT50PT09IiYiPyImYW1wOyI6dD09PSI8Ij8iJmx0OyI6dD09PSI+Ij8iJmd0OyI6dD09PSciJz8iJnF1b3Q7IjoiJiMzOTsiKTtsZXQgRmU9IiIsa3M9IiIsVGk9IiI7Y29uc3QgQ3c9KCk9PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LnRoZW1lPT09ImRhcmsiLGV1PSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJhbmQiKTtpZighZXx8IWtzKXJldHVybjtjb25zdCB0PUN3KCkmJiEhVGksbj10P1RpOmtzO2UuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PW4mJihlLnNyYz1uKSxlLmNsYXNzTGlzdC50b2dnbGUoImRhcmstYXJ0Iix0KX07bGV0IGNpPSExLHppPSIiLHhpPSIiLHR1PXt9LG51PSExLHNnPSIiLFM9e2NoZWNrSW46IiIsY2hlY2tPdXQ6IiIsZ3Vlc3RzOjJ9LFU9MTtjb25zdCBCdD01O2xldCByZT1udWxsLGh0PVtdLHJ0PSIiLHZlPVtdLFA9bnVsbCx3cz0wO2NvbnN0IFB3PW5ldyBTZXQoWyJmb3JnZXRQcmVmZXJlbmNlcyIsImFkZFRvVHJpcCIsImNsZWFyVHJpcCIsInJlcXVlc3RCb29raW5nIiwiY2FuY2VsQm9va2luZyIsImNoYW5nZUJvb2tpbmciLCJzaWduSW4iLCJzaWduT3V0Il0pLHh0PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/YGhvdGVsOiR7ZS5ob3RlbD8uaWQ/PyIifWA6dD09PSJleHRyYXMiP2UuZm9yQm9va2luZz9gZXh0cmFzOmJvb2tpbmc6JHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX1gOmBleHRyYXM6JHtlLmhvdGVsPy5pZD8/IiJ9YDp0PT09InBvbGljeSJ8fHQ9PT0icG9saWNpZXMifHx0PT09InBvbGljeS1taXNzaW5nIj9gcG9saWN5OiR7ZS5ob3RlbD8uaWQ/PyIifToke2UudG9waWM/PyIifWA6dD09PSJjYW5jZWxsYXRpb24tcHJldmlldyI/YGNhbmNlbDoke2UuYm9va2luZz8uY29uZmlybWF0aW9uQ29kZT8/IiJ9YDp0PT09ImNoYW5nZS1wcmV2aWV3Ij9gY2hhbmdlOiR7ZS5jb25maXJtYXRpb25Db2RlPz9lLmJvb2tpbmc/LmNvbmZpcm1hdGlvbkNvZGU/PyIifWA6dD09PSJkZXN0aW5hdGlvbnMiP2BkZXN0aW5hdGlvbnM6JHtlLnNjb3BlPy5uYW1lPz8iIn1gOnQ9PT0iaG90ZWxzInx8dD09PSJuby1ob3RlbHMiP2Bob3RlbHM6JHtlLmFzaz8uY2l0eT8/IiJ9OiR7ZS5hc2s/LnF1ZXJ5Pz9lLnF1ZXJ5Pz8iIn1gOnR9LHhuPWU9PnshUHx8UncuaGFzKFN0cmluZyhQLnZpZXcpKXx8eHQoZSkhPT14dChQKSYmKHZlPVsuLi52ZSx7cGF5bG9hZDpQLGxhYmVsOk93KFApLHZlcnNpb246d3N9XS5zbGljZSgtNikpfSxFdz1lPT57Y29uc3QgdD1TdHJpbmcoZT8udmlldz8/IiIpLG49ZT8uc3RheT8uY2hlY2tJbj97Y2hlY2tJbjplLnN0YXkuY2hlY2tJbixjaGVja091dDplLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOmUuc3RheS5ndWVzdHM/PzJ9Ont9O2lmKHQ9PT0idHJpcCIpcmV0dXJue2tleToidmlld1RyaXAiLGFyZ3M6e319O2lmKHQ9PT0iYm9va2luZ3MiKXJldHVybntrZXk6Imxpc3RCb29raW5ncyIsYXJnczp7fX07aWYoKHQ9PT0iaG90ZWxzInx8dD09PSJkZXN0aW5hdGlvbnMifHx0PT09Im5vLWhvdGVscyImJmUuYXNrKSYmZS5hc2spcmV0dXJue2tleToibGlzdEhvdGVscyIsYXJnczp7Li4uZS5hc2t9fTtpZih0PT09ImNvbXBhcmlzb24iJiZBcnJheS5pc0FycmF5KGUuY29sdW1ucykpcmV0dXJue2tleToiY29tcGFyZSIsYXJnczp7Li4ubiwuLi5lLnRpdGxlP3t0aXRsZTplLnRpdGxlfTp7fSwuLi5lLnJlY29tbWVuZGVkP3tyZWNvbW1lbmRlZDplLnJlY29tbWVuZGVkfTp7fSxlbnRyaWVzOmUuY29sdW1ucy5tYXAobz0+KHtob3RlbDpvLmhvdGVsPy5pZCwuLi5vLmJlc3RGb3I/e2Jlc3RGb3I6by5iZXN0Rm9yfTp7fSwuLi5vLnByb3M/Lmxlbmd0aD97cHJvczpvLnByb3N9Ont9LC4uLm8uY29ucz8ubGVuZ3RoP3tjb25zOm8uY29uc306e319KSl9fTtpZigodD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMiKSYmZS5ob3RlbD8uaWQpcmV0dXJue2tleToiZ2V0SG90ZWwiLGFyZ3M6e2hvdGVsOmUuaG90ZWwuaWQsLi4ubiwuLi5lLnJvb21zX3dhbnRlZD97cm9vbXM6ZS5yb29tc193YW50ZWR9Ont9fX07aWYodD09PSJleHRyYXMiJiZlLmZvckJvb2tpbmcpcmV0dXJue2tleToibGlzdEV4dHJhcyIsYXJnczppdChTdHJpbmcoZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGUpKX07aWYodD09PSJleHRyYXMiJiZlLmhvdGVsPy5pZClyZXR1cm57a2V5OiJsaXN0RXh0cmFzIixhcmdzOntob3RlbDplLmhvdGVsLmlkLC4uLm59fTtpZih0PT09Iml0aW5lcmFyeSIpcmV0dXJue2tleToiaXRpbmVyYXJ5IixhcmdzOnt0aXRsZTplLnRpdGxlLC4uLm4sZGF5czooZS5kYXlzPz9bXSkubWFwKG89Pih7bGFiZWw6by5sYWJlbCwuLi5vLm5vdGU/e25vdGU6by5ub3RlfTp7fSxpdGVtczooby5pdGVtcz8/W10pLm1hcChzPT5zLmlkKX0pKX19fSxjZD1lPT57dmU9dmUuZmlsdGVyKHQ9PiFlLmluY2x1ZGVzKFN0cmluZyh0LnBheWxvYWQ/LnZpZXcpKSl9LFJ3PW5ldyBTZXQoWyJmaW5kLWJvb2tpbmciLCJib29raW5nIiwiY2FuY2VsbGVkIiwiY2hhbmdlZCIsImVycm9yIiwibmVlZHMtZ3Vlc3QiLCJzaWduZWQtb3V0IiwibWVtYmVyLXNpZ24taW4iLCJtZW1iZXItbm90LWZvdW5kIl0pLE93PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7aWYodD09PSJjb21wYXJpc29uIilyZXR1cm4gYyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApO2lmKHQ9PT0iaXRpbmVyYXJ5IilyZXR1cm4gYygidGhlIHBsYW4iLCLooYznqIvorqHliJIiKTtpZih0PT09Im5vLWhvdGVscyIpcmV0dXJuIGMoInRoZSBzZWFyY2giLCLmkJzntKIiKTtpZih0PT09ImRlc3RpbmF0aW9ucyIpcmV0dXJuIGUuc2NvcGU/Lm5hbWU/U3RyaW5nKGUuc2NvcGUubmFtZSk6YygiYWxsIGRlc3RpbmF0aW9ucyIsIuWFqOmDqOebrueahOWcsCIpO2lmKHQ9PT0iaG90ZWxzIil7aWYoZS5hc2s/LmNpdHkpcmV0dXJuIFN0cmluZyhlLmFzay5jaXR5KTtjb25zdCBuPVsuLi5uZXcgU2V0KChlLmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby5jaXR5KSkpXTtyZXR1cm4gbi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGAke2UudG90YWw/PzB9IGhvdGVsc2AsYCR7ZS50b3RhbD8/MH0g5a626YWS5bqXYCl9cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/U3RyaW5nKGUuaG90ZWw/Lm5hbWU/P2MoInRoZSBob3RlbCIsIumFkuW6lyIpKTp0PT09ImNhbmNlbGxhdGlvbi1wcmV2aWV3Ij9jKCJ0aGUgY2FuY2VsbGF0aW9uIiwi5Y+W5raIIik6dD09PSJjaGFuZ2UtcHJldmlldyI/YygidGhlIGNoYW5nZSIsIuS/ruaUuSIpOnQ9PT0ibWVtYmVyIj9jKCJ5b3VyIG1lbWJlcnNoaXAiLCLkvJrlkZgiKTp0PT09ImV4dHJhcyI/ZS5mb3JCb29raW5nP2MoYGFkZC1vbnMgZm9yICR7ZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGV9YCxgJHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCk6YyhgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/InRoZSBob3RlbCIpfSBhZGQtb25zYCxgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/IumFkuW6lyIpfemZhOWKoOacjeWKoWApOnQ9PT0idHJpcCI/YygidGhlIHRyaXAiLCLooYznqIsiKTp0PT09ImJvb2tpbmdzIj9jKCJ5b3VyIGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIik6dD09PSJwb2xpY3kifHx0PT09InBvbGljaWVzIj9jKCJ0aGUgcG9saWNpZXMiLCLmlL/nrZYiKTpjKCJiYWNrIiwi6L+U5ZueIil9LHJnPSgpPT57Y29uc3QgZT1HKCJiYWNrYnRuIiksdD12ZS5hdCgtMSk7ZS5oaWRkZW49IXQsdCYmKGUuaW5uZXJIVE1MPWAke0UuY2hldkx9PHNwYW4+JHtsKHQubGFiZWwpfTwvc3Bhbj5gKSxpZygpfSxOdz17aG90ZWxzOjEsaG90ZWw6Miwibm8tcm9vbXMiOjIsIm5lZWRzLWRhdGVzIjoyLHRyaXA6MywibmVlZHMtZ3Vlc3QiOjMsYm9va2luZzo0fSxadz1lPT57bGV0IHQ9TndbU3RyaW5nKGU/LnZpZXc/PyIiKV0/PzA7ZT8udmlldz09PSJ0cmlwIiYmIShlLmxpbmVzPz9bXSkubGVuZ3RoJiYodD0wKSxlPy52aWV3PT09ImhvdGVscyImJiEoZS5ob3RlbHM/P1tdKS5sZW5ndGgmJih0PTApO2NvbnN0IG49ZT8udmlldz09PSJib29raW5nIiYmZT8uYm9va2luZz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiO24mJih0PTMpLGU/Lm9wZW5lZCYmIW4mJih0PTApLEcoImZsb3czIikudGV4dENvbnRlbnQ9bj9jKCJQYXkiLCLku5jmrL4iKTpjKCJCb29rIiwi6aKE6K6iIik7Y29uc3Qgbz1HKCJmbG93Iik7by5oaWRkZW49IXQ7Zm9yKGNvbnN0IHMgb2Ygby5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpKXtjb25zdCByPU51bWJlcihzLmRhdGFzZXQuc3RlcCk7cy5jbGFzc0xpc3QudG9nZ2xlKCJkb25lIixyPHQpLHI9PT10P3Muc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJzdGVwIik6cy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIpfWlnKCl9LGlnPSgpPT57Rygic3ViaGVhZCIpLmhpZGRlbj1HKCJiYWNrYnRuIikuaGlkZGVuJiZHKCJmbG93IikuaGlkZGVufTtsZXQgRnQ9IiIsSWk9IiIsSXQ9MCxMbj0hMSxzcz0iIjtjb25zdCBhZz1lPT57Y29uc3QgdD1lPy5bImN1cmxlc3MvdHJpcCJdO2lmKCF0KXJldHVybjtjb25zdCBuPXR5cGVvZiB0LmZyb209PSJzdHJpbmciP3QuZnJvbToiIjtuJiZzcyYmbiE9PXNzfHwobiYmIXNzJiYoc3M9biksdHlwZW9mIHQudHJpcElkPT0ic3RyaW5nIiYmdC50cmlwSWQmJihJaT10LnRyaXBJZCksSXQ9TnVtYmVyKHQuY291bnQ/PzApLEFycmF5LmlzQXJyYXkodC5saW5lcykmJihodD10LmxpbmVzLExuPSEwKSl9LGNnPWU9PklpP3suLi5lLHRyaXA6SWl9OmUsbGc9bmV3IE1hcCxqdz1lPT57Y29uc3QgdD1bZT8uYm9va2luZywuLi5BcnJheS5pc0FycmF5KGU/LmJvb2tpbmdzKT9lLmJvb2tpbmdzOltdXTtmb3IoY29uc3QgbiBvZiB0KW4/LmNvbmZpcm1hdGlvbkNvZGUmJm4/Lmd1ZXN0Py5lbWFpbCYmbGcuc2V0KFN0cmluZyhuLmNvbmZpcm1hdGlvbkNvZGUpLnRvVXBwZXJDYXNlKCksU3RyaW5nKG4uZ3Vlc3QuZW1haWwpKX0saXQ9ZT0+e2NvbnN0IHQ9bGcuZ2V0KGUudG9VcHBlckNhc2UoKSk7cmV0dXJuIHQ/e2Jvb2tpbmc6ZSxlbWFpbDp0fTp7Ym9va2luZzplfX0sdWc9ZT0+dHVbZV0/PyIiLEpvPWU9PiEhdHVbZV0sTXc9Sm87bGV0IGRnPSJob2xkIixvdT0hMSxwZz0hMSxrZT1udWxsLGN0PSIiO2NvbnN0IEF0PWU9PmtlJiZlP2tlLnN1cHBsaWVycy5maW5kKHQ9PnQuaWQ9PT1lKTp2b2lkIDAsVWU9ZT0+e2NvbnN0IHQ9QXQoZSk7aWYoIXQpcmV0dXJue25hbWU6RmUsYm9va2luZ01vZGU6ZGcsZGVtbzpudSxzYW5kYm94Om91LHBob25lUmVxdWlyZWQ6cGcsZXh0cmFzOiEwLGNoYW5nZXM6ITB9O2NvbnN0IG49dC5jYXBhYmlsaXRpZXM/P3t9O3JldHVybntuYW1lOlN0cmluZyh0Lm5hbWUpLGJvb2tpbmdNb2RlOm4uYm9va2luZz09PSJwYXktYXQtaG90ZWwiPyJwYXktYXQtaG90ZWwiOiJob2xkIixkZW1vOnQubW9kZSE9PSJsaXZlIixzYW5kYm94OnQubW9kZT09PSJzYW5kYm94IixwaG9uZVJlcXVpcmVkOiEhbi5yZXF1aXJlc1Bob25lLGV4dHJhczpuLmV4dHJhcyE9PSExLGNoYW5nZXM6bi5jaGFuZ2VzIT09ITF9fSxFbj1lPT57Y29uc3QgdD1lPy5icmFuZD9TdHJpbmcoZS5icmFuZCk6IiIsbj1BdChlPy5zdXBwbGllcik7aWYoIW4pcmV0dXJuIHQ7Y29uc3Qgbz1TdHJpbmcobi5uYW1lKTtyZXR1cm4gdCYmdCE9PW8/YCR7b30gwrcgJHt0fWA6b30sbGQ9KCk9PihrZT9rZS5zdXBwbGllcnMubWFwKGU9PmUuY2FwYWJpbGl0aWVzPy5jb2RlUHJlZml4KS5maWx0ZXIoQm9vbGVhbik6eGk/W3hpXTpbXSkubWFwKGU9PmAke2V9LeKApmApLmpvaW4oIiBvciAiKSxzdT1lPT5rZT9bLi4ubmV3IFNldChlLm1hcCh0PT5TdHJpbmcodC5zdXBwbGllcj8/IiIpKS5maWx0ZXIoQm9vbGVhbikpXTpbXTtsZXQgX249ITE7Y29uc3QgdWQ9ZT0+e19uPWUsZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmNhcmQiKT8uY2xhc3NMaXN0LnRvZ2dsZSgiYnVzeSIsZSl9O2xldCBfcz0wLGhnPSIiLG1nPSIiO2NvbnN0IGF0PSgpPT57Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGVhZCIpO2lmKCFlKXJldHVybjtjb25zdCB0PSgpPT5lLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pO3QoKSxzZXRUaW1lb3V0KHQsMTgwKX0saj0oZSx0PXt9LG49e30pPT57Y29uc3Qgbz11ZyhlKTtpZighbylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBubyB0b29sIGZvciAke2V9YCkpO2lmKF9uKXJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7dWQoITApO2NvbnN0IHM9X3M7cmV0dXJuIEFlLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOm8sYXJndW1lbnRzOmNnKHQpfSkuZmluYWxseSgoKT0+dWQoITEpKS50aGVuKHI9PnthZyhyPy5fbWV0YSk7Y29uc3QgaT1yPy5zdHJ1Y3R1cmVkQ29udGVudCxhPWkmJm4uZm9sZD9uLmZvbGQoaSk6aSx1PVB3LmhhcyhlKSYmYSYmYS52aWV3IT09ImVycm9yIjtpZihzPT09X3MmJmEpe2hnPWk/SlNPTi5zdHJpbmdpZnkoaSk6IiIsbWc9SlNPTi5zdHJpbmdpZnkoYSk7Y29uc3QgZD14dChhKSE9PXh0KFApO2QmJihOPW51bGwpLG4ucHVzaCE9PSExJiYhbi5zdGF5JiZ4bihhKSx1JiYod3MrPTEpLGEudmlldz09PSJib29raW5nIiYmKGNkKFsidHJpcCIsIm5lZWRzLWRhdGVzIiwibmVlZHMtZ3Vlc3QiXSksQXJyYXkuaXNBcnJheShhLmZhaWxlZCkmJmEuZmFpbGVkLmxlbmd0aHx8KFRlPW51bGwpKSwoYS52aWV3PT09ImNhbmNlbGxlZCJ8fGEudmlldz09PSJjaGFuZ2VkIikmJmNkKFsiY2FuY2VsbGF0aW9uLXByZXZpZXciLCJjaGFuZ2UtcHJldmlldyJdKSxuLnN0YXkmJmEudmlldz09PSJ0cmlwIiYmUD8oTG58fChodD1hLmxpbmVzPz9bXSksSXQ9TG4/SXQ6aHQubGVuZ3RoLHdlKFApKTood2UoYSksZCYmYXQoKSl9ZWxzZSB1JiYod3MrPTEpO3JldHVybiBxdyhyLG4ubm90ZSkscn0pfSxxdz0oZSx0KT0+e2NvbnN0IG49KGU/LmNvbnRlbnQ/P1tdKS5maW5kKG89Pm8/LnR5cGU9PT0idGV4dCIpPy50ZXh0OyFufHwhQWUuZ2V0SG9zdENhcGFiaWxpdGllcygpPy51cGRhdGVNb2RlbENvbnRleHR8fEFlLnVwZGF0ZU1vZGVsQ29udGV4dCh7Y29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6dD9gJHt0fSAke1N0cmluZyhuKX1gOlN0cmluZyhuKX1dfSkuY2F0Y2goKCk9Pnt9KX07bGV0IFlyPSExO2NvbnN0IEx3PSIoVGhlIGNhcmQgcHJpY2VkIGl0cyBvd24gZGVmYXVsdCBkYXRlcywgdG9uaWdodCwgdG8gc2hvdyB0aGUgcm9vbXM7IHRoZSBndWVzdCBoYXMgbm90IGNob3NlbiB0aGVtLikiLGd0PWU9PntsZXQgdD0wO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9MSl0PSh0KjMxK2UuY2hhckNvZGVBdChuKSklMzYwO3JldHVybmAtLXNob3QtYTpoc2woJHt0fSA0MiUgMzQlKTstLXNob3QtYjpoc2woJHsodCszOCklMzYwfSA0NiUgMjIlKWB9LFp0PWU9Pntjb25zdCB0PVN0cmluZyhlPz8iIiksbj0vXlxzKlvjgJBcW11ccyoo5qih5ouffHNpbXVsYXRlZHx0ZXN0KVxzKlvjgJFcXV1ccyovaS5leGVjKHQpLG89bCgobj90LnNsaWNlKG5bMF0ubGVuZ3RoKTp0KS5yZXBsYWNlKC8tL2csIuKAkSIpKTtyZXR1cm4gbj9gPHNwYW4gY2xhc3M9InNpbSI+JHtsKG5bMV0pfTwvc3Bhbj4ke299YDpvfSxidD1lPT5lLnJlcGxhY2UoL15ccypb44CQXFtdXHMqKOaooeaLn3xzaW11bGF0ZWR8dGVzdClccypb44CRXF1dXHMqL2ksIiIpLnJlcGxhY2UoL1teXHB7TH1ccHtOfSBdL2d1LCIgIikuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5zbGljZSgwLDIpLm1hcCh0PT50WzBdPy50b1VwcGVyQ2FzZSgpPz8iIikuam9pbigiIiksZmc9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9ImN1cnJlbnRDb2xvciIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiAzLjVsMi42IDUuMyA1LjkuOS00LjMgNC4xIDEgNS44TDEyIDE2LjkgNi44IDE5LjZsMS01LjhMMy41IDkuN2w1LjktLjl6Ii8+PC9zdmc+JyxjZT0oZSx0PTEuOCk9PmA8c3ZnIGNsYXNzPSJpY28iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iJHt0fSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHtlfTwvc3ZnPmAsRT17Y2FsZW5kYXI6Y2UoJzxyZWN0IHg9IjMuNSIgeT0iNSIgd2lkdGg9IjE3IiBoZWlnaHQ9IjE1LjUiIHJ4PSIyLjUiLz48cGF0aCBkPSJNMy41IDkuNWgxN004IDN2NE0xNiAzdjQiLz4nKSxzZWFyY2g6Y2UoJzxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjYuNSIvPjxwYXRoIGQ9Im0yMCAyMC00LjItNC4yIi8+JyksY2hlY2s6Y2UoJzxwYXRoIGQ9Im01IDEyLjUgNC41IDQuNUwxOSA3LjUiLz4nLDIpLGRvbmU6Y2UoJzxwYXRoIGQ9Im02IDEyLjUgNCA0IDgtOSIvPicsMi42KSxhbGVydDpjZSgnPHBhdGggZD0iTTEyIDQuMiAzIDE5LjVoMTh6Ii8+PHBhdGggZD0iTTEyIDEwdjQuMk0xMiAxN2guMDEiLz4nKSxlcnJvcjpjZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDcuOHY1TTEyIDE2LjJoLjAxIi8+JyksY2xvY2s6Y2UoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiA3LjVWMTJsMyAyIi8+JyksYmVkOmNlKCc8cGF0aCBkPSJNMyAxOC41VjYuNU0zIDE0aDE4djQuNU0yMSAxNHYtMi41YTMgMyAwIDAgMC0zLTNoLTdWMTQiLz48Y2lyY2xlIGN4PSI3IiBjeT0iMTEiIHI9IjEuOCIvPicpLHVzZXJzOmNlKCc8Y2lyY2xlIGN4PSI5IiBjeT0iOC41IiByPSIzLjIiLz48cGF0aCBkPSJNMy41IDE5YTUuNSA1LjUgMCAwIDEgMTEgME0xNiA1LjZhMyAzIDAgMCAxIDAgNS44TTE3LjUgMTRhNSA1IDAgMCAxIDMgNSIvPicpLHNpemU6Y2UoJzxwYXRoIGQ9Ik00IDlWNGg1TTIwIDE1djVoLTVNNCA0bDYgNk0yMCAyMGwtNi02Ii8+JyksdmlldzpjZSgnPHBhdGggZD0iTTIuNSAxMlM2IDUuNSAxMiA1LjUgMjEuNSAxMiAyMS41IDEyIDE4IDE4LjUgMTIgMTguNSAyLjUgMTIgMi41IDEyeiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIuOCIvPicpLGN1cDpjZSgnPHBhdGggZD0iTTQgOWgxMnY1YTUgNSAwIDAgMS01IDVIOWE1IDUgMCAwIDEtNS01ek0xNiAxMC41aDEuNWEyLjUgMi41IDAgMCAxIDAgNUgxNk04IDMuNVY2TTEyIDMuNVY2Ii8+JyksaW5mbzpjZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDExdjUuMk0xMiA3LjhoLjAxIi8+Jyksd2luZG93OmNlKCc8cmVjdCB4PSI0LjUiIHk9IjQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgcng9IjEuNSIvPjxwYXRoIGQ9Ik0xMiA0djE2TTQuNSAxMmgxNSIvPicpLGxvY2s6Y2UoJzxyZWN0IHg9IjQuNSIgeT0iMTAuNSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjEwIiByeD0iMi4yIi8+PHBhdGggZD0iTTggMTAuNVY3LjVhNCA0IDAgMCAxIDggMHYzIi8+JykscGluOmNlKCc8cGF0aCBkPSJNMTIgMjFzLTYuNS01LjYtNi41LTExYTYuNSA2LjUgMCAwIDEgMTMgMEMxOC41IDE1LjQgMTIgMjEgMTIgMjF6Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMCIgcj0iMi40Ii8+JyksY2hldkw6Y2UoJzxwYXRoIGQ9Im0xNC41IDYtNiA2IDYgNiIvPicsMiksY2hldlI6Y2UoJzxwYXRoIGQ9Im05LjUgNiA2IDYtNiA2Ii8+JywyKSxhcnJvdzpjZSgnPHBhdGggZD0iTTUgMTJoMTRNMTMgNmw2IDYtNiA2Ii8+JywyKSxzbGlkZXJzOmNlKCc8cGF0aCBkPSJNNCA3aDEwTTE4IDdoMk00IDE3aDRNMTIgMTdoOCIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iNyIgcj0iMiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTciIHI9IjIiLz4nKSxzb3J0OmNlKCc8cGF0aCBkPSJNNyA0djE2TTMuNSA3LjUgNyA0bDMuNSAzLjVNMTcgMjBWNE0xMy41IDE2LjUgMTcgMjBsMy41LTMuNSIvPicpLHRhZzpjZSgnPHBhdGggZD0iTTMuNSAxMi41di04YTEgMSAwIDAgMSAxLTFoOGw4IDgtOSA5eiIvPjxjaXJjbGUgY3g9IjgiIGN5PSI4IiByPSIxLjQiLz4nKX07bGV0IG9lPSJlbiI7Y29uc3QgYz0oZSx0KT0+b2U9PT0iemgiP3Q6ZSxnZz1bIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLHBlPWU9PmU+MD9vZT09PSJ6aCI/YCR7ZX3mmZpgOmAke2V9ICR7ZT09PTE/Im5pZ2h0IjoibmlnaHRzIn1gOiIiLEN0PWU9Pm9lPT09InpoIj9gJHtlfeWwj+aXtmA6YCR7ZX0gJHtOdW1iZXIoZSk9PT0xPyJob3VyIjoiaG91cnMifWAsRHc9ZT0+b2U9PT0iemgiP2Ake2V96Ze0YDpgJHtlfSAke2U9PT0xPyJyb29tIjoicm9vbXMifWAsVmU9ZT0+e2NvbnN0IHQ9bmV3IERhdGUoYCR7ZX1UMTI6MDA6MDBaYCk7aWYoTnVtYmVyLmlzTmFOKHQuZ2V0VGltZSgpKSlyZXR1cm57bWQ6ZSxkb3c6IiIsbG9uZzplLGRheTplLG1vbjoiIn07Y29uc3Qgbj10LmdldFVUQ01vbnRoKCkrMSxvPXQuZ2V0VVRDRGF0ZSgpO2lmKG9lPT09InpoIil7Y29uc3Qgcj1nZ1t0LmdldFVUQ0RheSgpXT8/IiI7cmV0dXJue21kOmAke2595pyIJHtvfeaXpWAsZG93OnIsbG9uZzpgJHt0LmdldFVUQ0Z1bGxZZWFyKCl95bm0JHtufeaciCR7b33ml6UgJHtyLnJlcGxhY2UoIuWRqCIsIuaYn+acnyIpfWAsZGF5OlN0cmluZyhvKSxtb246YCR7bn3mnIhgfX1jb25zdCBzPXI9PnQudG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1HQiIsey4uLnIsdGltZVpvbmU6IlVUQyJ9KTtyZXR1cm57bWQ6YCR7b30gJHtzKHttb250aDoic2hvcnQifSl9YCxkb3c6cyh7d2Vla2RheToic2hvcnQifSksbG9uZzpzKHt3ZWVrZGF5OiJsb25nIixkYXk6Im51bWVyaWMiLG1vbnRoOiJsb25nIix5ZWFyOiJudW1lcmljIn0pLGRheTpTdHJpbmcobyksbW9uOnMoe21vbnRoOiJzaG9ydCJ9KX19LEJ3PWU9PmUmJnR5cGVvZiBlLnZhbHVlPT0ibnVtYmVyIj9gPHNwYW4gY2xhc3M9InJhdGUiIGFyaWEtbGFiZWw9IiR7bChjKGBSYXRlZCAke2UudmFsdWV9IGJ5ICR7ZS5jb3VudH0gZ3Vlc3RzYCxg6K+E5YiGICR7ZS52YWx1ZX3vvIwke2UuY291bnR9IOadoeeCueivhGApKX0iPiR7Zmd9JHtsKGUudmFsdWUpfTxzbWFsbD4oJHtsKE51bWJlcihlLmNvdW50KS50b0xvY2FsZVN0cmluZygiZW4tR0IiKSl9KTwvc21hbGw+PC9zcGFuPmA6IiIsRnc9IkRlbW9uc3RyYXRpb24gZGF0YTogdGhlc2UgcmF0ZXMgYW5kIHJvb20gY291bnRzIHdlcmUgbWFkZSB1cCBmb3IgdGhpcyBkZW1vLiIsZGQ9ZT0+e2NvbnN0IHQ9cj0+cjw9LjAzOTI4P3IvMTIuOTI6KChyKy4wNTUpLzEuMDU1KSoqMi40LFtuLG8sc109WzEsMyw1XS5tYXAocj0+dChOdW1iZXIucGFyc2VJbnQoZS5zbGljZShyLHIrMiksMTYpLzI1NSkpO3JldHVybiAuMjEyNioobj8/MCkrLjcxNTIqKG8/PzApKy4wNzIyKihzPz8wKX0sc3Q9KGUsdCk9Pntjb25zdFtuLG9dPVtkZChlKSxkZCh0KV0uc29ydCgocyxyKT0+ci1zKTtyZXR1cm4oKG4/PzApKy4wNSkvKChvPz8wKSsuMDUpfSxjcz1lPT50eXBlb2YgZT09InN0cmluZyImJi9eI1swLTlhLWZdezZ9JC9pLnRlc3QoZSksTmU9e2xpZ2h0OiIjZmZmZmZmIixkYXJrOiIjMTExNzIzIixpbms6IiMwYzE0MjQiLGlua0Rhcms6IiNlZWYyZjkifSxiZz1lPT57aWYoIWNzKGUpKXJldHVybjtjb25zdCB0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDt0LnN0eWxlLnNldFByb3BlcnR5KCItLWFjY2VudC1yYXciLGUpLHQuZGF0YXNldC5hY2NlbnQ9IiIsc3QoZSxOZS5kYXJrKTwzP3QuZGF0YXNldC5hY2NlbnREaW09IiI6ZGVsZXRlIHQuZGF0YXNldC5hY2NlbnREaW19LGxpPXtzYW5zOmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWYtc2FucyIpLnRyaW0oKXx8InNhbnMtc2VyaWYiLGRpc3BsYXk6Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoIi0tZi1kaXNwbGF5IikudHJpbSgpfHwic2VyaWYifSxwZD1uZXcgU2V0KFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ic3R5bGVzaGVldCJdJyldLm1hcChlPT5lLmdldEF0dHJpYnV0ZSgiaHJlZiIpPz8iIikpLHZnPWU9PntpZighZXx8IUFycmF5LmlzQXJyYXkoZS5jc3MpKXJldHVybjtjb25zdCB0PWk9PnR5cGVvZiBpPT0ic3RyaW5nIiYmL14iW0EtWmEtejAtOSBdKyIoLCAiW0EtWmEtejAtOSBdKyIpKiQvLnRlc3QoaSk/aToiIjtmb3IoY29uc3QgaSBvZiBlLmNzcyl7aWYodHlwZW9mIGkhPSJzdHJpbmcifHxwZC5oYXMoaSl8fCEvXihodHRwczpcL1wvW15ccyInPD5dK3xodHRwOlwvXC8obG9jYWxob3N0fDEyN1wuMFwuMFwuMSkoOlxkKyk/XC9bXlxzIic8Pl0qKSQvLnRlc3QoaSkpY29udGludWU7cGQuYWRkKGkpO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2EucmVsPSJzdHlsZXNoZWV0IixhLmhyZWY9aSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpfWNvbnN0IG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89dChlLmJvZHkpLHM9dChlLmRpc3BsYXkpLHI9dChlLm51bWVyaWMpO28mJm4uc3R5bGUuc2V0UHJvcGVydHkoIi0tZi1zYW5zIixgJHtvfSwgJHtsaS5zYW5zfWApLHMmJm4uc3R5bGUuc2V0UHJvcGVydHkoIi0tZi1kaXNwbGF5IixgJHtzfSwgJHtsaS5kaXNwbGF5fWApLHImJihuLnN0eWxlLnNldFByb3BlcnR5KCItLWYtbnVtIixgJHtyfSwgJHtsaS5zYW5zfWApLG4uc2V0QXR0cmlidXRlKCJkYXRhLWZvbnQtbnVtIiwiIikpfSx5Zz1lPT57Y29uc3QgdD10eXBlb2YgZT09InN0cmluZyI/e2NvbG9yOmV9OmU7aWYoIXR8fCFjcyh0LmNvbG9yKSlyZXR1cm47Y29uc3Qgbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbz0ocyxyKT0+bi5zdHlsZS5zZXRQcm9wZXJ0eShzLHIpO28oIi0tYnJhbmQiLHQuY29sb3IpLG8oIi0tYnJhbmQtaG92ZXIiLGNzKHQuaG92ZXIpP3QuaG92ZXI6YGNvbG9yLW1peChpbiBzcmdiLCAke3QuY29sb3J9IDg4JSwgYmxhY2spYCksbygiLS1icmFuZC1wcmVzcyIsY3ModC5wcmVzcyk/dC5wcmVzczpgY29sb3ItbWl4KGluIHNyZ2IsICR7dC5jb2xvcn0gNzglLCBibGFjaylgKSxvKCItLWJyYW5kLW9uIixzdCh0LmNvbG9yLCIjZmZmZmZmIik+PXN0KHQuY29sb3IsTmUuaW5rKT8iI2ZmZmZmZiI6TmUuaW5rKSxvKCItLWJyYW5kLWluayIsc3QodC5jb2xvcixOZS5saWdodCk+PTQuNT90LmNvbG9yOk5lLmluayksbygiLS1icmFuZC1mb2N1cyIsc3QodC5jb2xvcixOZS5saWdodCk+PTM/dC5jb2xvcjpOZS5pbmspLG8oIi0tYnJhbmQtaW5rLWRhcmsiLHN0KHQuY29sb3IsTmUuZGFyayk+PTQuNT90LmNvbG9yOk5lLmlua0RhcmspLG8oIi0tYnJhbmQtZm9jdXMtZGFyayIsc3QodC5jb2xvcixOZS5kYXJrKT49Mz90LmNvbG9yOk5lLmlua0RhcmspLG4uZGF0YXNldC5icmFuZD0iIixzdCh0LmNvbG9yLE5lLmRhcmspPDM/bi5kYXRhc2V0LmJyYW5kRGFya0RpbT0iIjpkZWxldGUgbi5kYXRhc2V0LmJyYW5kRGFya0RpbX0sVXc9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjdXJsZXNzLXRoZW1lIik7aWYoISghZXx8ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSE9PSJhcHBsaWNhdGlvbi9qc29uIikpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlLnRleHRDb250ZW50Pz8iIik7dD8uYWNjZW50JiZiZyh0LmFjY2VudCksdD8ucHJpbWFyeSYmeWcodC5wcmltYXJ5KSx0Py5mb250cyYmdmcodC5mb250cyl9Y2F0Y2h7fX07VXcoKTtjb25zdCBIdz0oKT0+e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPW9lPT09InpoIj8iemgtQ04iOiJlbiIsRygiaG9tZSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiQmFjayB0byB0aGUgaG90ZWxzIiwi5Zue5Yiw6YWS5bqX6aaW6aG1IikpLEcoImhlYWR0cmlwIikuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjKCJWaWV3IHRoZSB0cmlwIiwi5p+l55yL6KGM56iLIikpLEcoImhlYWR0cmlwd29yZCIpLnRleHRDb250ZW50PWMoIlRyaXAiLCLooYznqIsiKSxHKCJmbG93Iikuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjKCJCb29raW5nIHN0ZXBzIiwi6aKE6K6i5q2l6aqkIikpLEcoImZsb3cxIikudGV4dENvbnRlbnQ9YygiSG90ZWwiLCLpgInphZLlupciKSxHKCJmbG93MiIpLnRleHRDb250ZW50PWMoIlJvb20iLCLpgInmiL/lnosiKSxHKCJmbG93MyIpLnRleHRDb250ZW50PWMoIkJvb2siLCLpooTorqIiKX0sV3c9KCk9PntHKCJkZW1vc3RyaXAiKS5oaWRkZW49IW51LEcoImRlbW90ZXh0IikudGV4dENvbnRlbnQ9b3U/YyhgQSB0ZXN0IGNvcHkgb2YgJHtGZXx8InRoZSBob3RlbCJ9J3Mgc3lzdGVtIOKAlCBub3RoaW5nIGhlcmUgaXMgYSByZWFsIGJvb2tpbmcuYCwi6YWS5bqX57O757uf55qE5rWL6K+V5Ymv5pys77yM6L+Z6YeM55qE6aKE6K6i6YO95LiN5piv55yf5a6e6aKE6K6i44CCIik6YygiU2FtcGxlIHJhdGVzIGFuZCByb29tcyDigJQgbm90aGluZyBoZXJlIGNhbiByZWFsbHkgYmUgYm9va2VkLiIsIuekuuS+i+S7t+agvOWSjOaIv+Wei++8jOi/memHjOaXoOazleecn+WunumihOiuouOAgiIpLEcoImRlbW9sYWJlbCIpLnRleHRDb250ZW50PWMoIkRlbW8iLCLmvJTnpLoiKSxHKCJkZW1vc3RyaXAiKS50aXRsZT1zZ3x8Rnd9LF9lPWU9Pntjb25zdCB0PVZlKGUpO3JldHVybiB0LmRvdz9vZT09PSJ6aCI/YCR7dC5tZH0gJHt0LmRvd31gOmAke3QuZG93fSAke3QubWR9YDplfSxFZT0oZSx0KT0+TWF0aC5yb3VuZCgoRGF0ZS5wYXJzZShgJHt0fVQxMjowMDowMFpgKS1EYXRlLnBhcnNlKGAke2V9VDEyOjAwOjAwWmApKS84NjRlNSksS289ZT0+ZT8uY2hlY2tJbiYmZT8uY2hlY2tPdXQ/ZS5jaGVja091dDw9ZS5jaGVja0luP19lKGUuY2hlY2tJbik6YCR7X2UoZS5jaGVja0luKX0g4oCTICR7X2UoZS5jaGVja091dCl9IMK3ICR7cGUoRWUoZS5jaGVja0luLGUuY2hlY2tPdXQpKX1gOiIiLFNzPShlLHQsbik9Pntjb25zdCBvPWh0LmZpbmQocz0+cy5raW5kPT09InJvb20iJiZzLmhvdGVsSWQ9PT1lJiZzLnJvb21SZWY9PT10JiZzLnN0YXk/LmNoZWNrSW49PT1uPy5jaGVja0luJiZzLnN0YXk/LmNoZWNrT3V0PT09bj8uY2hlY2tPdXQpO3JldHVybiBOdW1iZXIobz8ucXVhbnRpdHk/PzApfSxWdz0oZSx0KT0+e2NvbnN0IG49aHQuZmluZChvPT5vLmtpbmQ9PT0iZXh0cmEiJiZvLmhvdGVsSWQ9PT1lJiZvLmV4dHJhUmVmPT09dCk7cmV0dXJuIE51bWJlcihuPy5xdWFudGl0eT8/MCl9LFRzPShlLHQsbixvPTEpPT50PjA/YDxzcGFuIGNsYXNzPSJzdGVwIj4KICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX0gZGF0YS1uPSIke3QtMX0iIGFyaWEtbGFiZWw9IiR7bChjKGBPbmUgZmV3ZXIgJHtufWAsYOWHj+WwkeS4gOmXtCAke259YCkpfSI+4oiSPC9idXR0b24+CiAgICAgICAgIDxzcGFuIGNsYXNzPSJuIj4ke3R9PC9zcGFuPgogICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfSBkYXRhLW49IiR7dCsxfSIgYXJpYS1sYWJlbD0iJHtsKGMoYE9uZSBtb3JlICR7bn1gLGDlop7liqDkuIDpl7QgJHtufWApKX0iPis8L2J1dHRvbj4KICAgICAgIDwvc3Bhbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFkZCIgJHtlfSBkYXRhLW49IiR7b30iIGFyaWEtbGFiZWw9IiR7bChjKGBBZGQgJHtufWAsYOa3u+WKoCAke259YCkpfSI+CiAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNCIKICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgNXYxNE01IDEyaDE0Ii8+PC9zdmc+CiAgICAgICA8L2J1dHRvbj5gLCRnPShlLHQpPT57Y29uc3Qgbj10fHxTZygpO3JldHVybighUy5jaGVja0lufHxTLmNoZWNrSW48bikmJihTLmNoZWNrSW49biksKCFTLmNoZWNrT3V0fHxTLmNoZWNrT3V0PD1TLmNoZWNrSW4pJiYoUy5jaGVja091dD1FdChTLmNoZWNrSW4sMSkpLFFyKCJjaSIsbix7cm9vbXM6YXUoImRhdGEtcm9vbXMtbiIsInJuIil9KX0scnU9e2NpOlsiY2kiLCJjbyJdLGxjaTpbImxjaSIsImxjbyJdLGRjaTpbImRjaSIsImRjbyJdfSxKdz0xMztsZXQgTj1udWxsO2NvbnN0IGl1PXt9LGxzPWU9PmAke2Uuc2xpY2UoMCw3KX0tMDFgLEFpPShlLHQpPT57Y29uc3Qgbj1uZXcgRGF0ZShgJHtlfVQxMjowMDowMFpgKTtyZXR1cm4gbi5zZXRVVENNb250aChuLmdldFVUQ01vbnRoKCkrdCwxKSxuLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCl9LHpzPTg7bGV0IEx0PSExO2NvbnN0IGtnPSgpPT5VPjE/YyhgJHtTLmd1ZXN0c30gJHtTLmd1ZXN0cz09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn0gcGVyIHJvb20gwrcgJHtVfSByb29tc2AsYOavj+mXtCAke1MuZ3Vlc3RzfSDkurogwrcgJHtVfSDpl7RgKTpjKGAke1MuZ3Vlc3RzfSAke1MuZ3Vlc3RzPT09MT8iZ3Vlc3QiOiJndWVzdHMifSDCtyAxIHJvb21gLGAke1MuZ3Vlc3RzfSDkurogwrcgMSDpl7RgKSxhdT0oZSx0KT0+YAogIDxkaXYgY2xhc3M9IndoZW4tcm9vbXMgd2hlbi1wYXJ0eSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiR3Vlc3RzIGFuZCByb29tcyIsIuS6uuaVsOWSjOmXtOaVsCIpfSI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBhcnR5LXRpbGUiIGRhdGEtcGFydHkgYXJpYS1leHBhbmRlZD0iJHtMdD8idHJ1ZSI6ImZhbHNlIn0iIGFyaWEtY29udHJvbHM9IiR7dH0tcGFuZWwiPgogICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiR3Vlc3RzIiwi5Lq65pWwIil9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icGFydHktdiIgZGF0YS1wYXJ0eS13b3Jkcz4ke2woa2coKSl9PC9zcGFuPgogICAgICAke0UuY2hldlJ9CiAgICA8L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9InBhcnR5LXBhbmVsIiBpZD0iJHt0fS1wYW5lbCIke0x0PyIiOiIgaGlkZGVuIn0+CiAgICAgIDxkaXYgY2xhc3M9InBhcnR5LXJvdyI+CiAgICAgICAgPHNwYW4+JHtjKCJHdWVzdHMgaW4gZWFjaCByb29tIiwi5q+P6Ze05YWl5L2P5Lq65pWwIil9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdGVwIGxpZ2h0Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWd1ZXN0cy1uPSItMSIgZGF0YS1vbj0iJHtlfSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgZmV3ZXIgZ3Vlc3QiLCLlsJHkuIDkuroiKX0iJHtTLmd1ZXN0czw9MT8iIGRpc2FibGVkIjoiIn0+4oiSPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibiIgZGF0YS1ndWVzdHMtc2hvd24+JHtsKFMuZ3Vlc3RzKX08L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1ndWVzdHMtbj0iMSIgZGF0YS1vbj0iJHtlfSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgbW9yZSBndWVzdCIsIuWkmuS4gOS6uiIpfSIke1MuZ3Vlc3RzPj16cz8iIGRpc2FibGVkIjoiIn0+KzwvYnV0dG9uPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcnR5LXJvdyI+CiAgICAgICAgPHNwYW4+JHtjKCJSb29tcyIsIumXtOaVsCIpfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcCBsaWdodCI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfT0iLTEiIGFyaWEtbGFiZWw9IiR7YygiT25lIGZld2VyIHJvb20iLCLlsJHkuIDpl7QiKX0iJHtVPD0xPyIgZGlzYWJsZWQiOiIifT7iiJI8L2J1dHRvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJuIiBpZD0iJHt0fSI+JHtsKFUpfTwvc3Bhbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9PSIxIiBhcmlhLWxhYmVsPSIke2MoIk9uZSBtb3JlIHJvb20iLCLlpJrkuIDpl7QiKX0iJHtVPj1CdD8iIGRpc2FibGVkIjoiIn0+KzwvYnV0dG9uPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj5gLFFyPShlLHQsbik9PntpdVtlXT17bWluOnQscm9vbXM6bi5yb29tcyxzaWRlOm4uc2lkZT8/IiIscGVuZGluZzohIW4ucGVuZGluZ307Y29uc3RbbyxzXT1ydVtlXSxyPUVlKFMuY2hlY2tJbixTLmNoZWNrT3V0KSxpPShhLHUsZCk9Pntjb25zdCBwPVZlKHUpLGg9Tj8ucGFpcj09PWUmJk4ucGlja2luZz09PWE7cmV0dXJuIG4ucGVuZGluZyYmIWg/YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0id2hlbi10aWxlIiBkYXRhLWNhbD0iJHtlfToke2F9IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1sYWJlbD0iJHtkfS4gJHtjKCJDaG9vc2UgYSBkYXRlIiwi6YCJ5oup5pel5pyfIil9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7ZH08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Ind2IHd2LWVtcHR5Ij4ke2MoIkFkZCBkYXRlIiwi6YCJ5pel5pyfIil9PC9zcGFuPgogICAgICA8L2J1dHRvbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IndoZW4tdGlsZSIgZGF0YS1jYWw9IiR7ZX06JHthfSIgYXJpYS1leHBhbmRlZD0iJHtoPyJ0cnVlIjoiZmFsc2UifSIgYXJpYS1sYWJlbD0iJHtkfSwgJHtsKHAubG9uZyl9LiAke2MoIkNoYW5nZSB0aGUgZGF0ZXMiLCLkv67mlLnml6XmnJ8iKX0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHtkfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0id3YiPiR7bChwLm1kKX08c21hbGw+JHtsKHAuZG93KX08L3NtYWxsPjwvc3Bhbj4KICAgICAgPC9idXR0b24+YH07cmV0dXJuYAogIDxkaXYgY2xhc3M9IndoZW5iYXIke24ucGVuZGluZz8iIHBlbmRpbmciOiIifSIgZGF0YS13aGVuPSIke2V9Ij4KICAgIDxkaXYgY2xhc3M9IndoZW4tZGF0ZXMiPgogICAgICAke2koImluIixTLmNoZWNrSW4sYygiQ2hlY2staW4iLCLlhaXkvY8iKSl9CiAgICAgIDxzcGFuIGNsYXNzPSJ3aGVuLW4iJHtlPT09ImNpIj8nIGlkPSJuaWdodHMiJzoiIn0+JHtuLnBlbmRpbmc/IuKGkiI6bChwZShyKSl9PC9zcGFuPgogICAgICAke2koIm91dCIsUy5jaGVja091dCxjKCJDaGVjay1vdXQiLCLnprvlupciKSl9CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IndoZW4tc2lkZSI+JHtuLnJvb21zfSR7bi5zaWRlPz8iIn08L2Rpdj4KICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iJHtvfSIgdmFsdWU9IiR7bChTLmNoZWNrSW4pfSIgbWluPSIke2wodCl9IiBoaWRkZW4+CiAgICA8aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9IiR7c30iIHZhbHVlPSIke2woUy5jaGVja091dCl9IiBtaW49IiR7bChFdChTLmNoZWNrSW4sMSkpfSIgaGlkZGVuPgogICAgJHtOPy5wYWlyPT09ZT9LdygpOiIifQogIDwvZGl2PmB9LEt3PSgpPT57aWYoIU4pcmV0dXJuIiI7Y29uc3QgZT1OLHQ9bHMoZS5taW4pLG49QWkodCxKdy0xKSxvPXA9PihWZShwKSxfZShwKSkscz1uZXcgTWFwKGUucGFpcj09PSJjaSImJmUucGlja2luZz09PSJpbiImJkFycmF5LmlzQXJyYXkoUD8uZGF0ZXMpP1AuZGF0ZXMuZmlsdGVyKHA9PnAuZnJvbSkubWFwKHA9PltTdHJpbmcocC5jaGVja0luKSxwXSk6W10pLHI9Wy4uLnMudmFsdWVzKCldLmZpbmQocD0+cC5sb3dlc3QpPz9bLi4ucy52YWx1ZXMoKV0uZmluZChwPT5wLmJlc3QpLGk9RWUoU3RyaW5nKFA/LnN0YXk/LmNoZWNrSW4/PyIiKSxTdHJpbmcoUD8uc3RheT8uY2hlY2tPdXQ/PyIiKSl8fDEsYT1lLnBpY2tpbmc9PT0iaW4iP2MoIkNob29zZSBjaGVjay1pbiIsIumAieaLqeWFpeS9j+aXpeacnyIpOmMoIkNob29zZSBjaGVjay1vdXQiLCLpgInmi6nnprvlupfml6XmnJ8iKSx1PWUuaW4mJmUub3V0P2Ake28oZS5pbil9IOKAkyAke28oZS5vdXQpfSDCtyAke3BlKEVlKGUuaW4sZS5vdXQpKX1gOmUuaW4/YCR7YygiQ2hlY2staW4iLCLlhaXkvY8iKX0gJHtvKGUuaW4pfWA6IiIsZD1wPT57Y29uc3QgaD1uZXcgRGF0ZShgJHtwfVQxMjowMDowMFpgKSxmPW9lPT09InpoIj9gJHtoLmdldFVUQ0Z1bGxZZWFyKCl95bm0JHtoLmdldFVUQ01vbnRoKCkrMX3mnIhgOmgudG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1HQiIse21vbnRoOiJsb25nIix5ZWFyOiJudW1lcmljIix0aW1lWm9uZToiVVRDIn0pLCQ9KGguZ2V0VVRDRGF5KCkrNiklNyxrPW5ldyBEYXRlKERhdGUuVVRDKGguZ2V0VVRDRnVsbFllYXIoKSxoLmdldFVUQ01vbnRoKCkrMSwwKSkuZ2V0VVRDRGF0ZSgpLHo9W107Zm9yKGxldCBBPTA7QTwkO0ErPTEpei5wdXNoKCc8c3BhbiBjbGFzcz0iY2QgYmxhbmsiPjwvc3Bhbj4nKTtmb3IobGV0IEE9MTtBPD1rO0ErPTEpe2NvbnN0IHg9YCR7cC5zbGljZSgwLDgpfSR7U3RyaW5nKEEpLnBhZFN0YXJ0KDIsIjAiKX1gLFQ9eDxlLm1pbixaPXg9PT1lLmluLHNlPXg9PT1lLm91dCxKPVsiY2QiLFo/ImluIjoiIixaJiZlLm91dD8iaGFzLW91dCI6IiIsc2U/Im91dCI6IiIsZS5pbiYmZS5vdXQmJng+ZS5pbiYmeDxlLm91dD8iYmV0d2VlbiI6IiIseD09PWUubWluPyJ0b2RheSI6IiIscy5oYXMoeCk/Imhhcy1wIjoiIixzLmdldCh4KT8ubG93ZXN0PyJsb3dlc3QiOiIiLGUucGlja2luZz09PSJvdXQiJiZlLmluJiZ4PGUuaW4/ImJlZm9yZSI6IiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIiksVj1zLmdldCh4KT8uZnJvbTt6LnB1c2goYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJHtKfSIgZGF0YS1kYXk9IiR7eH0iJHtUPyIgZGlzYWJsZWQiOiIifSBhcmlhLWxhYmVsPSIke2woVmUoeCkubG9uZyl9JHtaP2MoIiwgY2hlY2staW4iLCLvvIzlhaXkvY8iKTpzZT9jKCIsIGNoZWNrLW91dCIsIu+8jOemu+W6lyIpOiIifSR7Vj9sKGMoYCwgZnJvbSAke1Z9YCxg77yMJHtWfei1t2ApKToiIn0iJHtafHxzZT8nIGFyaWEtcHJlc3NlZD0idHJ1ZSInOiIifT48c3Bhbj48YiBjbGFzcz0iY2QtbiI+JHtBfTwvYj4ke1Y/YDxpIGNsYXNzPSJjZC1wIj4ke2woVil9PC9pPmA6IiJ9PC9zcGFuPjwvYnV0dG9uPmApfXJldHVybmA8ZGl2IGNsYXNzPSJjYWwtbW9udGgiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1tdCI+JHtsKGYpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1ncmlkIj4keyhvZT09PSJ6aCI/WyLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iLCLml6UiXTpbIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSIsIlN1Il0pLm1hcChBPT5gPHNwYW4gY2xhc3M9ImNhbC1kb3ciIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke0F9PC9zcGFuPmApLmpvaW4oIiIpfSR7ei5qb2luKCIiKX08L2Rpdj4KICAgICAgPC9kaXY+YH07cmV0dXJuYAogICAgPGRpdiBjbGFzcz0iY2FsIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHthfSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhbC10b3AiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1zYXkiIGFyaWEtbGl2ZT0icG9saXRlIj4ke2F9PHNtYWxsPiR7bCh1KX08L3NtYWxsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1uYXYiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLW5hdj0iLTEiIGFyaWEtbGFiZWw9IiR7YygiUHJldmlvdXMgbW9udGgiLCLkuIrkuKrmnIgiKX0iJHtlLm1vbnRoPD10PyIgZGlzYWJsZWQiOiIifT4ke0UuY2hldkx9PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtbmF2PSIxIiBhcmlhLWxhYmVsPSIke2MoIk5leHQgbW9udGgiLCLkuIvkuKrmnIgiKX0iJHtlLm1vbnRoPj1uPyIgZGlzYWJsZWQiOiIifT4ke0UuY2hldlJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWwtbW9udGhzIj4ke2QoZS5tb250aCl9JHtkKEFpKGUubW9udGgsMSkpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWwtZm9vdCI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNhbC1sZWdlbmQiPiR7cj9gPHNwYW4gY2xhc3M9ImNhbC1iZXN0Ij4ke2woYyhgTG93ZXN0OiBhcnJpdmUgJHtvKFN0cmluZyhyLmNoZWNrSW4pKX0sIGZyb20gJHtyLmZyb219YCxg5pyA5L2O77yaJHtvKFN0cmluZyhyLmNoZWNrSW4pKX3lhaXkvY/vvIwke3IuZnJvbX3otbdgKSl9PC9zcGFuPmA6ZS5waWNraW5nPT09ImluIj9jKCJUYXAgdGhlIG5pZ2h0IHlvdSBhcnJpdmUuIiwi54K56YCJ5YWl5L2P6YKj5aSp44CCIik6YygiVGFwIHRoZSBtb3JuaW5nIHlvdSBsZWF2ZS4iLCLngrnpgInnprvlupfpgqPlpKnjgIIiKX0ke3Muc2l6ZT9gPHNtYWxsPiR7bChjKGBQcmljZXM6ICR7cGUoaSl9IGZyb20gdGhhdCBkYXksIHRheGVzIGluLiBEYXlzIHdpdGhvdXQgb25lIHdlcmUgbm90IHF1b3RlZC5gLGDku7fmoLzkuLrlvZPlpKnlhaXkvY8gJHtwZShpKX3nmoTmgLvku7fvvIzlkKvnqI7vvJvmsqHmnInku7fmoLznmoTml6XlrZDmnKrmiqXku7fjgIJgKSl9PC9zbWFsbD5gOiIifTwvc3Bhbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLWNsb3NlPiR7ZS5pbiYmZS5vdXQ/YygiRG9uZSIsIuWujOaIkCIpOmMoIkNsb3NlIiwi5YWz6ZetIil9PC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YH0sUHQ9KGUsdCk9Pntjb25zdCBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC53aGVuYmFyW2RhdGEtd2hlbj0iJHtlfSJdYCksbz1pdVtlXTshbnx8IW98fChuLm91dGVySFRNTD1RcihlLG8ubWluLHtyb29tczpvLnJvb21zLHNpZGU6by5zaWRlLHBlbmRpbmc6by5wZW5kaW5nfSksdCYmZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KT8uZm9jdXMoKSl9LEd3PShlLHQpPT57Y29uc3Qgbj1pdVtlXTtpZighbilyZXR1cm47aWYoTiYmTi5wYWlyPT09ZSYmTi5waWNraW5nPT09dCl7Tj1udWxsLFB0KGUsYFtkYXRhLWNhbD0iJHtlfToke3R9Il1gKTtyZXR1cm59Y29uc3Qgbz1TLmNoZWNrSW4scz1TLmNoZWNrT3V0O049e3BhaXI6ZSxwaWNraW5nOnQsbW9udGg6bHModD09PSJvdXQiJiZzP3M6b3x8bi5taW4pLGluOm8sb3V0OnMsbWluOm4ubWlufSxOLm1vbnRoPGxzKG4ubWluKSYmKE4ubW9udGg9bHMobi5taW4pKSxQdChlLGBbZGF0YS1jYWw9IiR7ZX06JHt0fSJdYCl9LHdnPSgpPT57aWYoIU4/LmluKXJldHVybjtjb25zdHtwYWlyOmV9PU4sdD1OLmluLG49Ti5vdXQmJk4ub3V0PnQ/Ti5vdXQ6RXQodCwxKTtOPW51bGw7Y29uc3RbbyxzXT1ydVtlXSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG8pLGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocyk7IXJ8fCFpfHwoaS52YWx1ZT1uLHIudmFsdWU9dCxyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSkpLFB0KGUsYFtkYXRhLWNhbD0iJHtlfTppbiJdYCkpfSxZdz1lPT57aWYoIU58fGU8Ti5taW4pcmV0dXJuO2NvbnN0e3BhaXI6dH09TjtpZihOLnBpY2tpbmc9PT0iaW4ifHwhTi5pbnx8ZTw9Ti5pbil7Ti5pbj1lLCghTi5vdXR8fE4ub3V0PD1lKSYmKE4ub3V0PSIiKSxOLnBpY2tpbmc9Im91dCIsUHQodCxgW2RhdGEtZGF5PSIke2V9Il1gKTtyZXR1cm59Ti5vdXQ9ZSx3ZygpfSxfZz0oKT0+cGUoUy5jaGVja0luJiZTLmNoZWNrT3V0P0VlKFMuY2hlY2tJbixTLmNoZWNrT3V0KTowKSxFdD0oZSx0KT0+bmV3IERhdGUoRGF0ZS5wYXJzZShgJHtlfVQxMjowMDowMFpgKSt0Kjg2NGU1KS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLFNnPSgpPT5uZXcgRGF0ZShEYXRlLm5vdygpLW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSo2ZTQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksVGc9ZT0+e2NvbnN0IHQ9Wy4uLmU/LnRvZGF5P1tlLnRvZGF5Lm1pbixlLnRvZGF5Lm1heF06W10sLi4uKGU/LmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby50b2RheVRoZXJlPz8iIikpXS5maWx0ZXIobz0+L15cZHs0fS1cZHsyfS1cZHsyfSQvLnRlc3QobykpLnNvcnQoKSxuPVNnKCk7cmV0dXJue21pbjpbdFswXT8/bixuXS5zb3J0KClbMF0/P24sc3RhcnQ6dC5hdCgtMSk/P259fSxRdz1lPT57Y29uc3R7bWluOnQsc3RhcnQ6bn09VGcoZSk7KCFTLmNoZWNrSW58fFMuY2hlY2tJbjx0KSYmKFMuY2hlY2tJbj1uKSwoIVMuY2hlY2tPdXR8fFMuY2hlY2tPdXQ8PVMuY2hlY2tJbikmJihTLmNoZWNrT3V0PUV0KFMuY2hlY2tJbiwxKSk7Y29uc3Qgbz1RcigiZGNpIix0LHtyb29tczphdSgiZGF0YS1yb29tcy1uIiwicm4iKSxzaWRlOmUuc2NvcGU/IiI6YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kIj4ke0Uuc2VhcmNofSR7YygiU2VhcmNoIiwi5pCc57SiIil9PC9idXR0b24+YH0pLHM9YDxkaXYgY2xhc3M9InNlYXJjaCI+CiAgICAgIDxsYWJlbCBjbGFzcz0id2hlcmUiPiR7RS5waW59PGlucHV0IGlkPSJ3aGVyZSIgdHlwZT0ic2VhcmNoIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbCIsIuWfjuW4guOAgeWbveWutuaIlumFkuW6l+WQjSIpfSIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSB0byIsIuebrueahOWcsCIpfSI+PC9sYWJlbD4KICAgICAgJHtvfQogICAgPC9kaXY+YCxyPWQ9PmA8ZGl2IGNsYXNzPSJwbGFjZXMiPiR7ZC5tYXAoKHAsaCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bChwLm5hbWUpfSIke2g+PWt0PyIgaGlkZGVuIjoiIn0+JHtsKHAubmFtZSl9IDxzbWFsbD4ke2wocC5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCIiKX0ke2QubGVuZ3RoPmt0P2A8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLXBsYWNlcyI+KyR7ZC5sZW5ndGgta3R9IG1vcmU8L2J1dHRvbj5gOiIifTwvZGl2PmAsaT1lLnNjb3BlO2lmKGkpcmV0dXJuW2A8ZGl2IGNsYXNzPSJoZWxsbyI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7bChpLm5hbWUpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGUudG90YWwpfSAke2woZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyIpfSBpbiAke2woKGkuY2l0aWVzPz9bXSkubGVuZ3RoKX0gY2l0aWVzPC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0ic2VhcmNoIj4ke299PC9kaXY+YCxyKGkuY2l0aWVzPz9bXSksYDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2UtYWxsPSIke2woaS5uYW1lKX0iPiR7bChjKGBBbGwgJHtlLnRvdGFsfSBpbiAke2kubmFtZX1gLGAke2kubmFtZX3lhajpg6ggJHtlLnRvdGFsfSDlrrZgKSl9PC9idXR0b24+PC9kaXY+YF0uam9pbigiIik7Y29uc3QgYT1lLnJlZ2lvbnM/P1tdLHU9YS5mbGF0TWFwKGQ9PmQuY291bnRyaWVzPz9bXSkuZmxhdE1hcChkPT5kLmNpdGllcz8/W10pLm1hcCgoZCxwKT0+KHtjOmQsaTpwfSkpLnNvcnQoKGQscCk9Pk51bWJlcihwLmMuY291bnQpLU51bWJlcihkLmMuY291bnQpfHxkLmktcC5pKS5zbGljZSgwLGt0KS5tYXAoKHtjOmR9KT0+ZCk7cmV0dXJuW2A8ZGl2IGNsYXNzPSJoZWxsbyI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7YygiV2hlcmUgdG8/Iiwi5oOz5L2P5ZOq6YeM77yfIil9PC9oMj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woYyhgJHtlLnRvdGFsfSAke2Uudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifSR7a2U/YCBmcm9tICR7a2Uuc3VwcGxpZXJzLmxlbmd0aH0gZ3JvdXBzYDoiIn0sIHByaWNlZCBmb3IgdGhlIG5pZ2h0cyB5b3UgY2hvb3NlLmAsYCR7ZS50b3RhbH0g5a626YWS5bqXJHtrZT9g77yM5p2l6IeqICR7a2Uuc3VwcGxpZXJzLmxlbmd0aH0g5Liq6ZuG5ZuiYDoiIn3vvIzmjInkvaDpgInnmoTml6XmnJ/miqXku7fjgIJgKSl9PC9kaXY+PC9kaXY+YCxzLGtlJiZrZS5zdXBwbGllcnMubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiSG90ZWwgZ3JvdXBzIiwi6YWS5bqX6ZuG5ZuiIil9PC9kaXY+PGRpdiBjbGFzcz0icGxhY2VzIGdyb3VwcyI+JHtrZS5zdXBwbGllcnMubWFwKGQ9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIGdyb3VwIiB0eXBlPSJidXR0b24iIGRhdGEtZ3JvdXAtaG9tZT0iJHtsKGQuaWQpfSI+JHtkLmxvZ29Vcmw/YDxpbWcgc3JjPSIke2woZC5sb2dvVXJsKX0iIGFsdD0iIj5gOiIifSR7bChkLm5hbWUpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PjwvZGl2PmA6IiIsdS5sZW5ndGg/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiVG9wIGNpdGllcyIsIueDremXqOWfjuW4giIpfTwvZGl2PiR7cih1KX08L2Rpdj5gOiIiLGEubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiQnkgcmVnaW9uIiwi5oyJ5Zyw5Yy6Iil9PC9kaXY+PGRpdiBjbGFzcz0icGxhY2VzIj4ke2EubWFwKChkLHApPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSB0YWIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1yZWdpb249IiR7cH0iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4ke2woZC5uYW1lKX0gPHNtYWxsPiR7bChkLmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PjwvZGl2PmA6IiIsLi4uYS5tYXAoKGQscCk9PmAKICAgICAgPGRpdiBjbGFzcz0icmVnaW9uIiBkYXRhLXJlZ2lvbi1ib2R5PSIke3B9IiBoaWRkZW4+CiAgICAgICAgJHsoZC5jb3VudHJpZXM/P1tdKS5tYXAoKGgsZik9Pntjb25zdCAkPWguY2l0aWVzPz9bXSxrPSQubGVuZ3RoPT09MT8kWzBdOnZvaWQgMDtyZXR1cm5gCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0IiR7Zj49dWk/IiBoaWRkZW4iOiIifT4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdC1jb3VudHJ5IiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bChoLm5hbWUpfSI+JHtsKGgubmFtZSl9JHtrJiZrLm5hbWUhPT1oLm5hbWU/YDxzbWFsbD4gwrcgJHtsKGsubmFtZSl9PC9zbWFsbD5gOiIifSA8c21hbGwgY2xhc3M9Im4iPiR7bChoLmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPgogICAgICAgICAgICAkeyQubGVuZ3RoPjE/cigkKToiIn0KICAgICAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX0KICAgICAgICAkeyhkLmNvdW50cmllcz8/W10pLmxlbmd0aD51aT9gPGRpdiBjbGFzcz0icGxhY2VzIj48YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLWNvdW50cmllcyI+KyR7KGQuY291bnRyaWVzPz9bXSkubGVuZ3RoLXVpfSBtb3JlIGNvdW50cmllczwvYnV0dG9uPjwvZGl2PmA6IiJ9CiAgICAgIDwvZGl2PmApLGA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhbGwtaG90ZWxzIj4ke2woYyhgQnJvd3NlIGFsbCAke2UudG90YWx9ICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9YCxg5rWP6KeI5YWo6YOoICR7ZS50b3RhbH0g5a626YWS5bqXYCkpfTwvYnV0dG9uPgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9ImhvbWUtbGlua3MiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+wrc8L3NwYW4+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIkZpbmQgYSBib29raW5nIGJ5IGl0cyBjb2RlIiwi55So56Gu6K6k56CB5p+l5om+6aKE6K6iIil9PC9idXR0b24+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LGt0PTgsdWk9Nix6Zz0oZSx0PSExKT0+e2NvbnN0IG49ZS5mb3JTdGF5O2lmKG4pcmV0dXJuYDxzcGFuIGNsYXNzPSJ0LWZyb20iPiR7bChuLnRvdGFsKX08c21hbGwgY2xhc3M9InQtc3ViIj48c3BhbiBjbGFzcz0ibmIiPiR7bChbTnVtYmVyKG4ucm9vbXMpPjE/YyhgJHtuLnJvb21zfSByb29tcyDDl2AsYCR7bi5yb29tc33pl7Qgw5dgKToiIixOdW1iZXIobi5ob3Vycyk+MD9jKGAke0N0KG4uaG91cnMpfSB0b2RheWAsYOS7iuWkqSR7Q3Qobi5ob3Vycyl9YCk6cGUoTnVtYmVyKG4ubmlnaHRzKSldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIikpfTwvc3Bhbj48c3BhbiBjbGFzcz0idC1zZXAiPiDCtyA8L3NwYW4+PHNwYW4gY2xhc3M9Im5iIj4ke2MoInRheGVzIGluIiwi5ZCr56iO6LS5Iil9PC9zcGFuPjwvc21hbGw+PC9zcGFuPmA7aWYoZS5ub1Jvb21zRm9yU3RheSl7Y29uc3Qgbz1lLm5vUm9vbXNGb3JTdGF5Q29kZSxzPWUubm9Sb29tc0ZvclN0YXlBcmdzPz97fTtyZXR1cm5gPHNwYW4gY2xhc3M9InQtZnJvbSB0LW5vbmUiPiR7KG8/bz09PSJwYXJ0eSI6L3NsZWVwcy8udGVzdChTdHJpbmcoZS5ub1Jvb21zRm9yU3RheSkpKT9sKGMoYE5vIHJvb20gc2xlZXBzICR7Uy5ndWVzdHN9YCxg5rKh5pyJ5Y+v5L2PICR7Uy5ndWVzdHN9IOS6uueahOaIv+Wei2ApKTpvPT09ImhvdXJseS1vdmVyIj9sKGMoIlRvZGF5J3MgaG91cnMgYXJlIG92ZXIiLCLku4rlpKnnmoTpkp/ngrnmiL/lt7Lnu5PmnZ8iKSk6bz09PSJob3VybHktbm90LXlldCImJnMub3BlbnNBdD9sKGMoYE9uIHNhbGUgdG9kYXkgZnJvbSAke3Mub3BlbnNBdH1gLGDku4rlpKkgJHtzLm9wZW5zQXR9IOW8gOWNlmApKTpvPT09ImhvdXJseS1ub25lIj9jKCJObyByb29tcyBieSB0aGUgaG91ciB0b2RheSIsIuS7iuWkqeayoeaciemSn+eCueaIvyIpOm89PT0ic29sZC1vdXQiJiZ0P2MoIlNvbGQgb3V0IGJ5IHRoZSBob3VyIHRvZGF5Iiwi5LuK5aSp55qE6ZKf54K55oi/5bey6K6i5ruhIik6YygiTm8gcm9vbSBmb3IgdGhlc2UgZGF0ZXMiLCLov5nkupvml6XmnJ/msqHmnInnqbrmiL8iKX08L3NwYW4+YH1yZXR1cm4gZS5mcm9tTmlnaHRseT9gPHNwYW4gY2xhc3M9InQtZnJvbSI+PHNwYW4gY2xhc3M9InQtcHJlIj4ke2MoIkZyb20gIiwiIil9PC9zcGFuPiR7bChlLmZyb21OaWdodGx5KX0ke2MoIiIsJzxzcGFuIGNsYXNzPSJ0LXByZSI+IOi1tzwvc3Bhbj4nKX08c21hbGw+JHtjKCIgLyBuaWdodCArIHRheCIsIuavj+aZmu+8jOacquWQq+eojui0uSIpfTwvc21hbGw+PC9zcGFuPmA6YDxzcGFuIGNsYXNzPSJ0LWZyb20gdC1ub25lIj4ke2MoIkFkZCBkYXRlcyBmb3IgcHJpY2VzIiwi6YCJ5aW95pel5pyf55yL5Lu35qC8Iil9PC9zcGFuPmB9O2xldCBDaT0hMTtjb25zdCBYdz1lPT57Y29uc3QgdD1lLmZvclN0YXk7aWYoIXQpcmV0dXJuIiI7Y29uc3Qgbj1bZS5sb3dlc3Q/YDxzcGFuIGNsYXNzPSJiYWRnZSBnb29kIj4ke2MoIkxvd2VzdCBwcmljZSIsIuacgOS9juS7tyIpfTwvc3Bhbj5gOiIiLC4uLihBcnJheS5pc0FycmF5KHQubGFiZWxzKT90LmxhYmVsczpbXSkubWFwKG89PkVnW29dKS5maWx0ZXIoQm9vbGVhbikubWFwKG89PmA8c3BhbiBjbGFzcz0iYmFkZ2Uke28/LnNhdmU/IiBnb29kIjoiIn0iPiR7bChjKG8/LnRleHQ/PyIiLG8/LnpoPz8iIikpfTwvc3Bhbj5gKSx0LmZyZWVDYW5jZWxsYXRpb24mJiFDaT9gPHNwYW4gY2xhc3M9InBlcmsiPiR7RS5jaGVja30ke2MoIkZyZWUgY2FuY2VsbGF0aW9uIiwi5YWN6LS55Y+W5raIIil9PC9zcGFuPmA6IiIsTnVtYmVyKHQucm9vbXNMZWZ0KTw9Mz9gPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4iPiR7RS5jbG9ja30ke2woYyhgJHt0LnJvb21zTGVmdH0gbGVmdGAsYOS7heWJqSAke3Qucm9vbXNMZWZ0fSDpl7RgKSl9PC9zcGFuPmA6IiJdLmZpbHRlcihCb29sZWFuKTtyZXR1cm4gbi5sZW5ndGg/YDxzcGFuIGNsYXNzPSJ0LXRhZ3MiPiR7bi5qb2luKCIiKX08L3NwYW4+YDoiIn0sRHQ9KCk9PlMuY2hlY2tJbiYmUy5jaGVja091dD97Y2hlY2tJbjpTLmNoZWNrSW4sY2hlY2tPdXQ6Uy5jaGVja091dCxndWVzdHM6Uy5ndWVzdHMsLi4uVT4xP3tyb29tczpVfTp7fX06e30sdXM9ZT0+e2NvbnN0e2NoZWNrSW46dCxjaGVja091dDpuLGd1ZXN0czpvLHJvb21zOnMsLi4ucn09ZT8/e307cmV0dXJuIHJ9LGVfPShlLHQpPT57Y29uc3R7bWluOm4sc3RhcnQ6b309VGcodCk7cmV0dXJuKCFTLmNoZWNrSW58fFMuY2hlY2tJbjxuKSYmKFMuY2hlY2tJbj1vKSwoIVMuY2hlY2tPdXR8fFMuY2hlY2tPdXQ8PVMuY2hlY2tJbikmJihTLmNoZWNrT3V0PUV0KFMuY2hlY2tJbiwxKSksUXIoImxjaSIsbix7cm9vbXM6YXUoImRhdGEtbGlzdC1yb29tcyIsImxybiIpLHNpZGU6ZT8iIjpgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InByaWNlLWxpc3QiPiR7YygiU2hvdyBwcmljZXMiLCLmn6XnnIvku7fmoLwiKX08L2J1dHRvbj5gLHBlbmRpbmc6IWV9KX07bGV0IEplPSJkYXRlcyI7Y29uc3QgeGc9ImRhdGVzIixkcz1lPT57Y29uc3QgdD1lPz97fTtyZXR1cm57Li4udC5ncm91cHx8dC5zdXBwbGllcj97Z3JvdXA6dC5ncm91cHx8dC5zdXBwbGllcn06e30sLi4udC5icmFuZD97YnJhbmQ6dC5icmFuZH06e30sLi4uQXJyYXkuaXNBcnJheSh0LmZhY2lsaXRpZXMpJiZ0LmZhY2lsaXRpZXMubGVuZ3RoP3tmYWNpbGl0aWVzOnQuZmFjaWxpdGllc306e30sLi4udC5mcmVlQ2FuY2VsbGF0aW9uP3tmcmVlQ2FuY2VsbGF0aW9uOiEwfTp7fSwuLi50LmJyZWFrZmFzdD97YnJlYWtmYXN0OiEwfTp7fX19LGhkPWU9Pntjb25zdHtncm91cDp0LHN1cHBsaWVyOm4sYnJhbmQ6byxmYWNpbGl0aWVzOnMsZnJlZUNhbmNlbGxhdGlvbjpyLGJyZWFrZmFzdDppLC4uLmF9PWU/P3t9O3JldHVybiBhfSx0Xz1lPT57Y29uc3QgdD1kcyhlKTtyZXR1cm4odC5ncm91cD8xOjApKyh0LmJyYW5kPzE6MCkrKHQuZmFjaWxpdGllcz8ubGVuZ3RoPz8wKSsodC5mcmVlQ2FuY2VsbGF0aW9uPzE6MCkrKHQuYnJlYWtmYXN0PzE6MCkrKGU/LmhvdXJseT8xOjApfSxuXz1lPT57aWYoIWUucmVmaW5lJiYhZS5ob3VybHkpcmV0dXJuIiI7Y29uc3QgdD1lLnJlZmluZT8/e30sbj0ocyxyLGksYSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHNvcnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1maWx0ZXI9IiR7bChzKX0iIGFyaWEtcHJlc3NlZD0iJHthPyJ0cnVlIjoiZmFsc2UifSI+JHtsKHIpfSR7aT09PXZvaWQgMD8iIjpgIDxzbWFsbD4ke2woaSl9PC9zbWFsbD5gfTwvYnV0dG9uPmAsbz0ocyxyKT0+ci5sZW5ndGg/YDxkaXYgY2xhc3M9ImZncm91cCI+PHNwYW4gY2xhc3M9InNvcnRzLWsiPiR7bChzKX08L3NwYW4+JHtyLmpvaW4oIiIpfTwvZGl2PmA6IiI7cmV0dXJuW28oYygiR3JvdXAiLCLpm4blm6IiKSwodC5ncm91cHM/P1tdKS5tYXAocz0+bihgZ3JvdXA6JHtzLmlkfWAsU3RyaW5nKEF0KHMuaWQpPy5uYW1lPz9zLmlkKSxzLmNvdW50LHMub24pKSksbyhjKCJCcmFuZCIsIuWTgeeJjCIpLCh0LmJyYW5kcz8/W10pLm1hcChzPT5uKGBicmFuZDoke3MubmFtZX1gLHMubmFtZSxzLmNvdW50LHMub24pKSksbyhjKCJIYXMiLCLorr7mlr0iKSwodC5mYWNpbGl0aWVzPz9bXSkubWFwKHM9Pm4oYGZhY2lsaXR5OiR7cy5rZXl9YCxzLmxhYmVsLHMuY291bnQscy5vbikpKSxvKGMoIlJvb20iLCLmiL/lnosiKSxbLi4uKHQucm9vbT8/W10pLm1hcChzPT5uKHMua2V5LHMubGFiZWwscy5jb3VudCxzLm9uKSksLi4uZS5ob3VybHk/W24oImhvdXJseSIsYygiQnkgdGhlIGhvdXIgdG9kYXkiLCLmnInpkp/ngrnmiL8iKSx2b2lkIDAsISFlLmFzaz8uaG91cmx5KV06W11dKV0uam9pbigiIil9LFBpPWU9PiEhZT8uYXNrPy5ob3VybHl8fChlPy5ob3RlbHM/P1tdKS5zb21lKHQ9Pk51bWJlcih0LmZvclN0YXk/LmhvdXJzKT4wKSxJZz0oZSx0LG4pPT57Y29uc3Qgbz0hIWUuc3RheT8uY2hlY2tJbixzPXRfKGUuYXNrKSxyPW5fKGUpLGk9QWcuZmluZCgoW2RdKT0+ZD09PW4pLGE9aT9jKGlbMV0saVsyXSk6YygiUmVjb21tZW5kZWQiLCLmjqjojZAiKSx1PShkLHApPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSB0b29sIiB0eXBlPSJidXR0b24iIGRhdGEtcGFuZWw9IiR7ZH0iIGFyaWEtZXhwYW5kZWQ9IiR7SmU9PT1kPyJ0cnVlIjoiZmFsc2UifSI+JHtwfTwvYnV0dG9uPmA7cmV0dXJuYAogICAgJHtQaShlKT9gPGRpdiBjbGFzcz0iaG91ci1ub3RlIj4ke0UuY2xvY2t9PHNwYW4+JHtjKCJSb29tcyBieSB0aGUgaG91ciwgdG9kYXkuIFBpY2sgYSBob3RlbCB0byBjaG9vc2Ugd2hlbiB5b3UgYXJyaXZlLiIsIuS7iuWkqeeahOmSn+eCueaIv++8jOmAieS4gOWutuWGjeaMkeWIsOW6l+aXtumXtOOAgiIpfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibmlnaHRseS1saXN0Ij4ke2MoIlN0YXkgdGhlIG5pZ2h0IGluc3RlYWQiLCLmlLnnnIvmjInmmZrlhaXkvY8iKX08L2J1dHRvbj48L2Rpdj5gOmVfKG8sZSl9CiAgICAke3R8fHJ8fHM/YDxkaXYgY2xhc3M9InBsYWNlcyB0b29sYmFyIj4KICAgICAgJHt0P3UoInNvcnQiLGAke0Uuc29ydH08c3Bhbj4ke2MoIlNvcnQiLCLmjpLluo8iKX0ke2MoIjogIiwi77yaIil9JHtsKGEpfTwvc3Bhbj5gKToiIn0KICAgICAgJHtyfHxzP3UoImZpbHRlcnMiLGAke0Uuc2xpZGVyc308c3Bhbj4ke2MoIkZpbHRlcnMiLCLnrZvpgIkiKX0ke3M/YCDCtyAke3N9YDoiIn08L3NwYW4+YCk6IiJ9CiAgICAgICR7cz9gPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImNsZWFyLWZpbHRlcnMiPiR7YygiQ2xlYXIiLCLmuIXpmaQiKX08L2J1dHRvbj5gOiIifQogICAgPC9kaXY+YDoiIn0KICAgICR7dD9gPGRpdiBjbGFzcz0iZmlsdGVyLXBhbmVsIiBkYXRhLXBhbmVsLWJvZHk9InNvcnQiJHtKZT09PSJzb3J0Ij8iIjoiIGhpZGRlbiJ9PiR7dH08L2Rpdj5gOiIifQogICAgJHtyP2A8ZGl2IGNsYXNzPSJmaWx0ZXItcGFuZWwiIGRhdGEtcGFuZWwtYm9keT0iZmlsdGVycyIke0plPT09ImZpbHRlcnMiPyIiOiIgaGlkZGVuIn0+JHtyfTwvZGl2PmA6IiJ9YH0sQWc9W1siZ3JvdXAiLCJSZWNvbW1lbmRlZCIsIuaOqOiNkCJdLFsicHJpY2UtbG93IiwiTG93ZXN0IHByaWNlIiwi5Lu35qC85LuO5L2O5Yiw6auYIl0sWyJwcmljZS1oaWdoIiwiSGlnaGVzdCBwcmljZSIsIuS7t+agvOS7jumrmOWIsOS9jiJdLFsicmF0aW5nIiwiUmF0aW5nIiwi6K+E5YiGIl1dLG9fPTM7bGV0IERuPSJpbmxpbmUiLENnPVtdO2NvbnN0IEJuPSgpPT5Ebj09PSJmdWxsc2NyZWVuIixjdT0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnQgLnRpbGVzIik7aWYoZT8ub2Zmc2V0V2lkdGgpe2NvbnN0IG89Z2V0Q29tcHV0ZWRTdHlsZShlKS5ncmlkVGVtcGxhdGVDb2x1bW5zLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtpZihvPjApcmV0dXJuIG99Y29uc3QgdD13aW5kb3cuaW5uZXJXaWR0aHx8RygiY29udGVudCIpLmNsaWVudFdpZHRofHwwO2lmKHQ8PTUyMClyZXR1cm4gMTtjb25zdCBuPUcoImNvbnRlbnQiKS5jbGllbnRXaWR0aHx8dC00MDtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmZsb29yKChuKzE0KS8yMzQpKXx8Mn07bGV0IGx1PTA7Y29uc3Qgc189NSxYcj0oZT0wKT0+e2NvbnN0IHQ9bHV8fGN1KCksbj10PT09MT9zXzpNYXRoLm1heCgyLHQqb18pO3JldHVybiBlPm4mJmU8PW4rTWF0aC5tYXgoMix0KT9lOm59O2xldCB4cz0wO2NvbnN0IHJfPWU9Pm9lPT09InpoIj9lLnJlcGxhY2UoLz5QcmV2aW91czwvZywiPuS4iuS4gOmhtTwiKS5yZXBsYWNlKC8+TmV4dDwvZywiPuS4i+S4gOmhtTwiKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJQcmV2aW91c1teIl0qIi9nLCdhcmlhLWxhYmVsPSLkuIrkuIDpobUiJykucmVwbGFjZSgvYXJpYS1sYWJlbD0iTmV4dFteIl0qIi9nLCdhcmlhLWxhYmVsPSLkuIvkuIDpobUiJykucmVwbGFjZSgvYXJpYS1sYWJlbD0iUGFnZXMiL2csJ2FyaWEtbGFiZWw9Iue/u+mhtSInKS5yZXBsYWNlKC8oXGQrKeKAkyhcZCspIG9mIChcZCspL2csIuesrCAkMeKAkyQyIOWutu+8jOWFsSAkMyDlrrYiKS5yZXBsYWNlKC8wIG9mIChcZCspL2csIuWFsSAkMSDlrrYiKS5yZXBsYWNlKC9WaWV3IGFsbCAoXGQrKS9nLCLmn6XnnIvlhajpg6ggJDEg5a62Iik6ZSxpXz1lPT57eHM9WHIoTnVtYmVyKGUudG90YWw/PyhlLmhvdGVscz8/W10pLmxlbmd0aCktTnVtYmVyKGUub2Zmc2V0Pz8wKSk7Y29uc3QgdD1CbigpP2UuaG90ZWxzPz9bXTooZS5ob3RlbHM/P1tdKS5zbGljZSgwLHhzKTtDaT10Lmxlbmd0aD4xJiZ0LmV2ZXJ5KHg9PnguZm9yU3RheT8uZnJlZUNhbmNlbGxhdGlvbik7Y29uc3Qgbj1bLi4ubmV3IFNldCh0Lm1hcCh4PT5TdHJpbmcoeC5jaXR5KSkpXSxvPXg9Pntjb25zdCBUPXQuZmluZChaPT5aLmNpdHk9PT14KT8uY291bnRyeTtyZXR1cm4gVCYmIVN0cmluZyhUKS5zdGFydHNXaXRoKHgpP1N0cmluZyhUKToiIn0scz1bLi4ubmV3IFNldCh0Lm1hcCh4PT5TdHJpbmcoeC5jb3VudHJ5Pz8iIikpKV0scj1zLmxlbmd0aD4xLGk9eD0+YAogICAgPGRpdiBjbGFzcz0iY2l0eWdyb3VwIj4KICAgICAgJHtuLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJjaXR5bmFtZSI+JHtsKHgpfSR7IXImJm8oeCk/YDxzbWFsbD4gwrcgJHtsKG8oeCkpfTwvc21hbGw+YDoiIn08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJ0aWxlcyI+CiAgICAgICAgJHt0LmZpbHRlcihUPT5ULmNpdHk9PT14KS5tYXAoVD0+YAogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSR7VC5sb3dlc3Q/IiBsb3dlc3QiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woVC5pZCl9Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtc2hvdCIgc3R5bGU9IiR7Z3QoU3RyaW5nKFQuaWQpKX0iPgogICAgICAgICAgICAgICR7VC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChULmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChidChTdHJpbmcoVC5uYW1lKSkpfTwvc3Bhbj4KICAgICAgICAgICAgICAke0VuKFQpP2A8c3BhbiBjbGFzcz0idC1icmFuZCI+JHtsKEVuKFQpKX08L3NwYW4+YDoiIn0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1ib2R5Ij4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1uYW1lIj4ke1p0KFQubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1ldGEiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtd2hlcmUiPiR7bChbVC5hcmVhLG4ubGVuZ3RoPjF8fFN0cmluZyhULm5hbWUpLmluY2x1ZGVzKFN0cmluZyhULmNpdHkpKT8iIjpULmNpdHldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICR7QncoVC5yYXRpbmcpfQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAke1h3KFQpfQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWZvb3QiPiR7emcoVCxQaShlKSl9PHNwYW4gY2xhc3M9InQtZ28iIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke0UuY2hldlJ9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9idXR0b24+YCkuam9pbigiIil9CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YCxhPU51bWJlcihlLnRvdGFsPz90Lmxlbmd0aCksdT1OdW1iZXIoZS5vZmZzZXQ/PzApLGQ9YS11LXQubGVuZ3RoLHA9ZS5wbGFjZXM/P1tdO2UuYXNrPy5jaXR5O2NvbnN0IGg9cC5sZW5ndGg/YDxkaXYgY2xhc3M9InBsYWNlcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUiLCLlnLDngrkiKX0iPgogICAgICAgICAgICR7cC5tYXAoKHgsVCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bCh4LnBsYWNlKX0iJHtUPj1rdD8iIGhpZGRlbiI6IiJ9PiR7bCh4LmxhYmVsKX0gPHNtYWxsPiR7bCh4LmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfQogICAgICAgICAgICR7cC5sZW5ndGg+a3Q/YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im1vcmUtcGxhY2VzIj4rJHtwLmxlbmd0aC1rdH0gbW9yZTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgIDwvZGl2PmA6IiIsZj1TdHJpbmcoZS5zb3J0Pz8iZ3JvdXAiKSwkPSEoKGUuY3VycmVuY2llcz8/W10pLmxlbmd0aD4xKSxrPXQubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InBsYWNlcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiT3JkZXIiLCLmjpLluo8iKX0iPiR7QWcuZmlsdGVyKChbeF0pPT4kfHwheC5zdGFydHNXaXRoKCJwcmljZSIpKS5tYXAoKFt4LFQsWl0pPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSBzb3J0IiB0eXBlPSJidXR0b24iIGRhdGEtc29ydD0iJHt4fSIgYXJpYS1wcmVzc2VkPSIke3g9PT1mPyJ0cnVlIjoiZmFsc2UifSI+JHtjKFQsWil9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIix6PWUuYXNrPy5jaXR5P1N0cmluZyhlLmFzay5jaXR5KTplLmFzaz8ucXVlcnk/YOKAnCR7U3RyaW5nKGUuYXNrLnF1ZXJ5KX3igJ1gOm4ubGVuZ3RoPT09MT9TdHJpbmcoblswXSk6YyhgQWxsICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9YCwi5YWo6YOo6YWS5bqXIiksQT0hIWUuc3RheT8uY2hlY2tJbjtyZXR1cm5bYDxkaXYgY2xhc3M9Imxpc3QtaCI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7bCh6KX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChQaShlKT9jKGAke2F9ICR7YT09PTE/ZS52b2NhYj8ubm91bj8/ImhvdGVsIjplLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn0gwrcgYnkgdGhlIGhvdXIgdG9kYXksIHRheGVzIGluYCxgJHthfSDlrrYgwrcg5LuK5aSp55qE6ZKf54K55oi/77yM5ZCr56iO5Lu3YCk6b2U9PT0iemgiP2Ake2F9IOWutiR7QT9gIMK3ICR7cGUoRWUoZS5zdGF5LmNoZWNrSW4sZS5zdGF5LmNoZWNrT3V0KSl9JHtVPjE/YOOAgSR7VX3pl7RgOiIifeeahOWQq+eojuaAu+S7t2A6IiDCtyDpgInlpb3ml6XmnJ/nnIvkvY/lrr/mgLvku7cifWA6YCR7YX0gJHthPT09MT9lLnZvY2FiPy5ub3VuPz8iaG90ZWwiOmUudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifSR7QT9gIMK3IHByaWNlcyBmb3IgJHtwZShFZShlLnN0YXkuY2hlY2tJbixlLnN0YXkuY2hlY2tPdXQpKX0ke1U+MT9gLCAke1V9IHJvb21zYDoiIn0sIHRheGVzIGluYDoiIMK3IGFkZCBkYXRlcyB0byBzZWUgd2hhdCBhIHN0YXkgY29zdHMifWApfSR7Q2k/YDwvZGl2PjxkaXYgY2xhc3M9ImgtZnJlZSI+JHtFLmNoZWNrfSR7YygiRXZlcnkgaG90ZWwgaGVyZSBpcyBmcmVlIHRvIGNhbmNlbCIsIui/memHjOavj+WutumDveWPr+S7peWFjei0ueWPlua2iCIpfWA6IiJ9PC9kaXY+PC9kaXY+YCxoLElnKGUsayxmKSxlLndpZGVuZWQ/YDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2woYyhgTm90aGluZyBtYXRjaGVkICR7ZS53aWRlbmVkLmZyb219LiBUaGVzZSBhcmUgJHtlLndpZGVuZWQudG99LmAsYOayoeacieaJvuWIsOS4juKAnCR7ZS53aWRlbmVkLmZyb2194oCd55u456ym55qE57uT5p6c77yM5Lul5LiL5pivJHtlLndpZGVuZWQudG9944CCYCkpfTwvZGl2PmA6IiIsYDxkaXY+JHtyP3MubWFwKHg9PmA8ZGl2IGNsYXNzPSJjb3VudHJ5bmFtZSI+JHtsKHgpfTwvZGl2PiR7bi5maWx0ZXIoVD0+dC5zb21lKFo9PlouY2l0eT09PVQmJlN0cmluZyhaLmNvdW50cnk/PyIiKT09PXgpKS5tYXAoaSkuam9pbigiIil9YCkuam9pbigiIik6bi5tYXAoaSkuam9pbigiIil9PC9kaXY+YCwoZS5jdXJyZW5jaWVzPz9bXSkubGVuZ3RoPjE/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBRdW90ZWQgaW4gJHtlLmN1cnJlbmNpZXMuam9pbigiLCAiKX0g4oCUIG5vIHJhdGUgaXMgYXBwbGllZCBoZXJlLCBzbyB0aGlzIGlzIG5vdCBhIHByaWNlIG9yZGVyLiBPbmUgY2l0eSBvciBvbmUgY291bnRyeSBnaXZlcyBvbmUgY3VycmVuY3kuYCxg5Lu35qC85YiG5Yir5LulICR7ZS5jdXJyZW5jaWVzLmpvaW4oIuOAgSIpfSDorqHvvIzov5nph4zkuI3lgZrmjaLnrpfvvIzmiYDku6XkuI3mjInku7fmoLzmjpLluo/jgILlj6rnnIvkuIDkuKrln47luILmiJblm73lrrbvvIzlsLHlj6rmnInkuIDnp43luIHnp43jgIJgKSl9PC9kaXY+YDoiIixlLm92ZXJCdWRnZXQ/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGAke2Uub3ZlckJ1ZGdldH0gbW9yZSBtYXRjaGVkIGFuZCBjYW1lIGluIG92ZXIgdGhlIHByaWNlIGNlaWxpbmcuYCxg5Y+m5pyJICR7ZS5vdmVyQnVkZ2V0fSDlrrbnrKblkIjmnaHku7bvvIzkvYbotoXlh7rkuobku7fmoLzkuIrpmZDjgIJgKSl9PC9kaXY+YDoiIixCbigpP2Q+MD9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFNob3dpbmcgJHt1P2Ake3UrMX3igJMke3UrdC5sZW5ndGh9YDp0Lmxlbmd0aH0gb2YgJHthfS5gLGDmmL7npLrnrKwgJHt1P2Ake3UrMX3igJMke3UrdC5sZW5ndGh9YDpgMeKAkyR7dC5sZW5ndGh9YH0g5a6277yM5YWxICR7YX0g5a6244CCYCkpfTwvZGl2PgogICAgICAgICAgICR7QXcoYyhgU2hvdyAke01hdGgubWluKDEyLGQpfSBtb3JlYCxg5YaN5pi+56S6ICR7TWF0aC5taW4oMTIsZCl9IOWutmApLCdkYXRhLWFjdD0ibW9yZS1ob3RlbHMiJyl9YDoiIjpyXyhJdyh7ZnJvbTp1LGNvdW50OnQubGVuZ3RoLHRvdGFsOk51bWJlcihhKSxwcmV2OidkYXRhLWFjdD0icGFnZS1wcmV2IicsbmV4dDonZGF0YS1hY3Q9InBhZ2UtbmV4dCInLGFsbDpDZy5pbmNsdWRlcygiZnVsbHNjcmVlbiIpPydkYXRhLWFjdD0iZnVsbHNjcmVlbiInOm51bGwsbm91bjoiaG90ZWxzIn0pKV0uam9pbigiIil9LGFfPWU9Pntjb25zdCB0PWUubmVhcmVzdD8/W10sbj1lLndpZGVuZWQ/YDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2woYyhgTm90aGluZyBtYXRjaGVkICR7ZS53aWRlbmVkLmZyb219LCBzbyB0aGlzIGxvb2tlZCBpbiAke2Uud2lkZW5lZC50b30uYCxg5rKh5pyJ5om+5Yiw5LiO4oCcJHtlLndpZGVuZWQuZnJvbX3igJ3nm7jnrKbnmoTnu5PmnpzvvIzmlLnkuLrlnKgke2Uud2lkZW5lZC50b33ph4zmib7jgIJgKSl9PC9kaXY+YDoiIjtpZihlLmJlZm9yZUZpbHRlcnMpcmV0dXJuIEplPSJmaWx0ZXJzIixbbixgPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChvZT09PSJ6aCI/YOi/memHjOeahCAke2UuYmVmb3JlRmlsdGVyc30g5a626YWS5bqX77yM5rKh5pyJ5LiA5a625ZCM5pe25ruh6Laz6L+Z5Lqb5p2h5Lu244CCYDplLndoeT8/YE5vbmUgb2YgdGhlICR7ZS5iZWZvcmVGaWx0ZXJzfSBoZXJlIGhhcyBhbGwgb2YgdGhvc2UgdG9nZXRoZXIuYCl9PC9kaXY+YCxJZyhlLCIiLFN0cmluZyhlLmFzaz8uc29ydD8/Imdyb3VwIikpXS5qb2luKCIiKTtpZighdC5sZW5ndGgpe2NvbnN0IG89U3RyaW5nKGUuYXNrPy5jaXR5Pz9lLnF1ZXJ5Pz9lLndpZGVuZWQ/LmZyb20/PyIiKTtyZXR1cm5gJHtufQogICAgICA8ZGl2IGNsYXNzPSJzdGF0ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke0Uuc2VhcmNofTwvZGl2PgogICAgICAgIDxoMiBjbGFzcz0ic3RhdGUtdCI+JHtvP2woYyhgTm90aGluZyBpbiDigJwke2994oCdYCxg4oCcJHtvfeKAneayoeaciee7k+aenGApKTpjKCJObyBob3RlbHMgbWF0Y2giLCLmsqHmnInnrKblkIjmnaHku7bnmoTphZLlupciKX08L2gyPgogICAgICAgIDxwIGNsYXNzPSJzdGF0ZS1kIj4ke28/bChjKGBObyBob3RlbCBoZXJlIGlzIGluIG9yIG5lYXIg4oCcJHtvfeKAnS4gVHJ5IGEgY2l0eSBvciBhIGNvdW50cnkuYCxg6L+Z6YeM5rKh5pyJ5L2N5LqO4oCcJHtvfeKAneaIlumZhOi/keeahOmFkuW6l+OAguaNouS4quWfjuW4guaIluWbveWutuivleivleOAgmApKTpjKCJUcnkgYSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbCBuYW1lLiIsIuaNouS4quWfjuW4guOAgeWbveWutuaIlumFkuW6l+WQjeivleivleOAgiIpfTwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2ggcmV0cnkiPgogICAgICAgICAgPGxhYmVsIGNsYXNzPSJ3aGVyZSI+JHtFLnNlYXJjaH08aW5wdXQgaWQ9IndoZXJlIiB0eXBlPSJzZWFyY2giIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJDaXR5IG9yIGhvdGVsIiwi5Z+O5biC5oiW6YWS5bqX5ZCNIil9IiBhcmlhLWxhYmVsPSIke2MoIldoZXJlIHRvIiwi55uu55qE5ZywIil9Ij48L2xhYmVsPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZpbmQiPiR7YygiU2VhcmNoIiwi5pCc57SiIil9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7RS5waW59JHtjKCJTZWUgZXZlcnkgZGVzdGluYXRpb24iLCLmn6XnnIvlhajpg6jnm67nmoTlnLAiKX08L2J1dHRvbj48L2Rpdj4KICAgICAgPC9kaXY+YH1yZXR1cm5bbixgPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChjKGBOb3RoaW5nIGNhbWUgaW4gdW5kZXIgdGhlIHByaWNlIGNlaWxpbmcuICR7dC5sZW5ndGg9PT0xPyJUaGUgbmVhcmVzdCBpcyI6IlRoZSBuZWFyZXN0IGFyZSJ9IG92ZXIgaXQuYCwi5rKh5pyJ5L2O5LqO5Lu35qC85LiK6ZmQ55qE6YWS5bqX44CC5Lul5LiL5piv5pyA5o6l6L+R55qE5Yeg5a6277yM5Lu35qC855Wl6auY44CCIikpfTwvZGl2PmAsYDxkaXYgY2xhc3M9InRpbGVzIj4ke3QubWFwKG89PmAKICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSBvdmVyIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChvLmlkKX0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0LXNob3QiIHN0eWxlPSIke2d0KFN0cmluZyhvLmlkKSl9Ij4KICAgICAgICAgICR7by5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChvLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKGJ0KFN0cmluZyhvLm5hbWUpKSl9PC9zcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idC1ib2R5Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW5hbWUiPiR7bChvLm5hbWUpfTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LXdoZXJlIj4ke2woW28uYXJlYSxvLmNpdHldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWZvb3QiPgogICAgICAgICAgICAke3pnKG8pfQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiI+JHtjKCJPdmVyIiwi6LaF5Ye6Iil9PC9zcGFuPgogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YF0uam9pbigiIil9LFBnPWU9Pntjb25zdCB0PVtlLmFyZWEsZS5jaXR5LFN0cmluZyhlLmNvdW50cnk/PyIiKS5zdGFydHNXaXRoKFN0cmluZyhlLmNpdHkpKXx8b2U9PT0iemgiJiYhZW4oU3RyaW5nKGUuY291bnRyeT8/IiIpKT8iIjplLmNvdW50cnldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIik7cmV0dXJuYAogIDxkaXYgY2xhc3M9Imhlcm8iIHN0eWxlPSIke2d0KFN0cmluZyhlLmlkKSl9Ij4KICAgICR7ZS5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChlLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKGJ0KFN0cmluZyhlLm5hbWUpKSl9PC9zcGFuPgogICAgPGRpdiBjbGFzcz0iaGVyby10eHQiPgogICAgICAke0VuKGUpJiYhU3RyaW5nKGUubmFtZSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhFbihlKS50b0xvd2VyQ2FzZSgpKT9gPHNwYW4gY2xhc3M9InQtYnJhbmQiPiR7bChFbihlKSl9PC9zcGFuPmA6IiJ9CiAgICAgIDxoMiBjbGFzcz0iaG90ZWwtbmFtZSI+JHtadChlLm5hbWUpfTwvaDI+CiAgICAgIDxkaXYgY2xhc3M9Imhlcm8td2hlcmUiPjxzcGFuPiR7bCh0KX08L3NwYW4+JHtlLnJhdGluZz9gPHNwYW4gY2xhc3M9InJhdGUiPiR7Zmd9JHtsKGUucmF0aW5nLnZhbHVlKX08c21hbGw+KCR7bChOdW1iZXIoZS5yYXRpbmcuY291bnQpLnRvTG9jYWxlU3RyaW5nKCJlbi1HQiIpKX0pPC9zbWFsbD48L3NwYW4+YDoiIn08L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogICR7ZS5zdW1tYXJ5Py9eXHMqKOaooeaLn+aVsOaNrnxzaW11bGF0ZWR8dGVzdCBkYXRhKS9pLnRlc3QoU3RyaW5nKGUuc3VtbWFyeSkpP2A8ZGl2IGNsYXNzPSJoLXN1bSBzaW0tbm90ZSI+JHtFLmluZm99PHNwYW4+JHtsKGUuc3VtbWFyeSl9PC9zcGFuPjwvZGl2PmA6YDxkaXYgY2xhc3M9Imgtc3VtIj4ke2woZS5zdW1tYXJ5KX08L2Rpdj5gOiIifQogICR7KGUuYW1lbml0aWVzPz9bXSkubGVuZ3RoP2A8dWwgY2xhc3M9ImFtZW4iIGFyaWEtbGFiZWw9IiR7YygiV2hhdCB0aGUgaG90ZWwgaGFzIiwi6YWS5bqX6K6+5pa9Iil9Ij4ke2UuYW1lbml0aWVzLnNsaWNlKDAsOCkubWFwKG49PmA8bGk+JHtsKG4pfTwvbGk+YCkuam9pbigiIil9PC91bD5gOiIifWB9LEVnPXsicm9vbS1vbmx5Ijp7dGV4dDoiUm9vbSBvbmx5Iix6aDoi5LiN5ZCr5pepIn0sYnJlYWtmYXN0Ont0ZXh0OiJCcmVha2Zhc3QiLHpoOiLlkKvml6kifSwiYnJlYWtmYXN0LTEiOnt0ZXh0OiJCcmVha2Zhc3QgZm9yIDEiLHpoOiLljZXml6kifSwiYnJlYWtmYXN0LTIiOnt0ZXh0OiJCcmVha2Zhc3QgZm9yIDIiLHpoOiLlj4zml6kifSwiYnJlYWtmYXN0LTMiOnt0ZXh0OiJCcmVha2Zhc3QgZm9yIDMiLHpoOiLkuInml6kifSxwYWNrYWdlOnt0ZXh0OiJQYWNrYWdlIix6aDoi5aWX6aSQIn0sImZsYXNoLXNhbGUiOnt0ZXh0OiJGbGFzaCBzYWxlIix6aDoi6ZmQ5pe254m55Lu3IixzYXZlOiEwfSwibmlnaHQtc25hY2siOnt0ZXh0OiJMYXRlLW5pZ2h0IHJhdGUiLHpoOiLlpJzlrrXku7ciLHNhdmU6ITB9LCJlYXJseS1ib29raW5nIjp7dGV4dDoiQm9vay1haGVhZCByYXRlIix6aDoi5o+Q5YmN6K6i5LyY5oOgIixzYXZlOiEwfSxwcm9tb3Rpb246e3RleHQ6IlByb21vdGlvbiIsemg6IuS/g+mUgCIsc2F2ZTohMH19LHV1PShlLHQ9bmV3IFNldCk9PltlLmJlZHMmJiF0LmhhcygiYmVkcyIpP2A8bGk+JHtFLmJlZH0ke2woZS5iZWRzKX08L2xpPmA6IiIsdC5oYXMoInNsZWVwcyIpPyIiOmA8bGk+JHtFLnVzZXJzfSR7bChjKGBTbGVlcHMgJHtlLnNsZWVwc31gLGDlj6/kvY8gJHtlLnNsZWVwc30g5Lq6YCkpfSR7TnVtYmVyKGUubWF4Q2hpbGRyZW4pPjA/bChjKGAgwrcgJHtlLm1heENoaWxkcmVufSAke051bWJlcihlLm1heENoaWxkcmVuKT09PTE/ImNoaWxkIjoiY2hpbGRyZW4ifWAsYCDCtyDlj6/luKYgJHtlLm1heENoaWxkcmVufSDlkI3lhL/nq6VgKSk6IiJ9PC9saT5gLGUuc2l6ZVNxbT9gPGxpPiR7RS5zaXplfSR7bChlLnNpemVTcW0pfSBtwrI8L2xpPmA6IiIsZS52aWV3JiYhdC5oYXMoInZpZXciKT9gPGxpPiR7L3dpbmRvd3znqpcvaS50ZXN0KFN0cmluZyhlLnZpZXcpKT9FLndpbmRvdzpFLnZpZXd9JHtsKFh0KGUudmlldykpfTwvbGk+YDoiIl0uam9pbigiIiksZHU9ZT0+e2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLmxhYmVscyk/ZS5sYWJlbHM6W107cmV0dXJuW2UuYnJlYWtmYXN0JiYhdC5zb21lKG49Pm4uc3RhcnRzV2l0aCgiYnJlYWtmYXN0IikpP2A8bGkgY2xhc3M9InBlcmsiPiR7RS5jdXB9PHNwYW4+JHtjKCI8Yj5CcmVha2Zhc3Q8L2I+IGluY2x1ZGVkIiwiPGI+5ZCr5pep6aSQPC9iPiIpfTwvc3Bhbj48L2xpPmA6IiIsZS5ob3VybHk/IiI6ZS5yZWZ1bmRhYmxlP2A8bGkgY2xhc3M9InBlcmsiPiR7RS5jaGVja308c3Bhbj48Yj4ke2MoIkZyZWUgY2FuY2VsbGF0aW9uIiwi5YWN6LS55Y+W5raIIil9PC9iPiR7ZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWw/bChjKGAgdW50aWwgJHtTdHJpbmcoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpLnJlcGxhY2UoLyAvZywiwqAiKX1gLGDvvIwke1h0KGUuZnJlZUNhbmNlbGxhdGlvbkxvY2FsKX0g5YmNYCkpOiIifTwvc3Bhbj48L2xpPmA6YDxsaSBjbGFzcz0icGVyayB3YXJuIj4ke0UuYWxlcnR9PHNwYW4+PGI+JHtjKCJOb24tcmVmdW5kYWJsZSIsIuS4jeWPr+WPlua2iCIpfTwvYj4ke2MoIiDigJQgdGhpcyByYXRlIGNhbm5vdCBiZSBjYW5jZWxsZWQiLCLvvIzmraTku7fmoLzorqLlkI7kuI3og73pgIDmlLkiKX08L3NwYW4+PC9saT5gLGUubWVtYmVyUmF0ZT9gPGxpIGNsYXNzPSJwZXJrIHNhdmUiPiR7RS50YWd9PHNwYW4+PGI+JHtsKGMoYCR7ZS5tZW1iZXJSYXRlLnRpZXJ9IG1lbWJlciByYXRlYCxgJHtlLm1lbWJlclJhdGUudGllcn3kvJrlkZjku7dgKSl9PC9iPiR7YygiIGFwcGxpZWQiLCLlt7LnlJ/mlYgiKX08L3NwYW4+PC9saT5gOiIiLGUucGF5bWVudD09PSJwcmVwYWlkIj9gPGxpIGNsYXNzPSJwZXJrIj4ke0UubG9ja308c3Bhbj48Yj4ke2MoIlBhaWQgaW4gYWR2YW5jZSIsIumcgOmihOS7mCIpfTwvYj48L3NwYW4+PC9saT5gOiIiXS5qb2luKCIiKX0scHU9ZT0+e2NvbnN0IG49KEFycmF5LmlzQXJyYXkoZS5sYWJlbHMpP2UubGFiZWxzOltdKS5tYXAobz0+RWdbb10pLmZpbHRlcihCb29sZWFuKS5tYXAobz0+YDxzcGFuIGNsYXNzPSJiYWRnZSR7bz8uc2F2ZT8iIGdvb2QiOiIifSI+JHtsKGMobz8udGV4dD8/IiIsbz8uemg/PyIiKSl9PC9zcGFuPmApO3JldHVybiBuLmxlbmd0aD9gPGRpdiBjbGFzcz0iYmFkZ2VzIj4ke24uam9pbigiIil9PC9kaXY+YDoiIn0sY189e1dpbmRvdzoi5pyJ56qXIiwiTm8gd2luZG93Ijoi5peg56qXIiwiUm9vbSBvbmx5Ijoi5LiN5ZCr5pepIiwiQnJlYWtmYXN0IGluY2x1ZGVkIjoi5ZCr5pepIixDaXR5OiLln47mma8ifSxtZD1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGZkPVsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWHQ9ZT0+e2NvbnN0IHQ9U3RyaW5nKGU/PyIiKTtyZXR1cm4gb2UhPT0iemgiP3Q6dC5zcGxpdCgiIMK3ICIpLm1hcChuPT57Y29uc3Qgbz0vXihcd3szfSkgKFxkezEsMn0pIChcd3szfSksPyAoXGR7MSwyfTpcZHsyfSkkLy5leGVjKG4udHJpbSgpKTtyZXR1cm4gbyYmbWQuaW5jbHVkZXMob1szXT8/IiIpJiZmZC5pbmNsdWRlcyhvWzFdPz8iIik/YCR7bWQuaW5kZXhPZihvWzNdPz8iIikrMX3mnIgke29bMl195pelICR7Z2dbZmQuaW5kZXhPZihvWzFdPz8iIildfSAke29bNF19YDpjX1tuLnRyaW0oKV0/P259KS5qb2luKCIgwrcgIil9LGxfPShlLHQsbik9Pntjb25zdFtvLHNdPXQuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKSxyPShvPz8wKSo2MCsocz8/MCkrbio2MCxpPWAke1N0cmluZyhNYXRoLmZsb29yKHIvNjApJTI0KS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKHIlNjApLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmAke19lKGUpfSDCtyAke3R94oCTJHtpfSDCtyAke259ICR7bj09PTE/ImhvdXIiOiJob3VycyJ9YH0sZWk9KGUsdCk9PnQ/LnN0YXJ0JiZlPy5jaGVja0luP2xfKFN0cmluZyhlLmNoZWNrSW4pLFN0cmluZyh0LnN0YXJ0KSxOdW1iZXIodC5ob3VycykpOktvKGUpLHRpPShlLHQpPT57aWYoIWU/LmNoZWNrSW58fCFlPy5jaGVja091dClyZXR1cm4iIjtjb25zdCBuPShzLHIsaT0iIik9Pntjb25zdCBhPVZlKHIpO3JldHVybmA8ZGl2IGNsYXNzPSJiYW5kLWQiPjxzcGFuIGNsYXNzPSJ3bCI+JHtzfTwvc3Bhbj48c3BhbiBjbGFzcz0id3YiPiR7bChhLm1kKX08c21hbGw+JHtsKGEuZG93KX0ke2l9PC9zbWFsbD48L3NwYW4+PC9kaXY+YH07aWYodD8uc3RhcnQpe2NvbnN0W3Mscl09U3RyaW5nKHQuc3RhcnQpLnNwbGl0KCI6IikubWFwKE51bWJlciksaT0ocz8/MCkqNjArKHI/PzApK051bWJlcih0LmhvdXJzKSo2MCxhPWAke1N0cmluZyhNYXRoLmZsb29yKGkvNjApJTI0KS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKGklNjApLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmA8ZGl2IGNsYXNzPSJiYW5kIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtsKGVpKGUsdCkpfSI+JHtuKGMoIkFycml2ZSIsIuWIsOW6lyIpLGUuY2hlY2tJbixgICR7bCh0LnN0YXJ0KX1gKX08c3BhbiBjbGFzcz0id2hlbi1uIj4ke2woQ3QodC5ob3VycykpfTwvc3Bhbj48ZGl2IGNsYXNzPSJiYW5kLWQiPjxzcGFuIGNsYXNzPSJ3bCI+JHtjKCJMZWF2ZSBieSIsIuacgOaZmuemu+W6lyIpfTwvc3Bhbj48c3BhbiBjbGFzcz0id3YiPiR7bChhKX08L3NwYW4+PC9kaXY+PC9kaXY+YH1jb25zdCBvPU51bWJlcihlLmd1ZXN0cyk+MD91XyhOdW1iZXIoZS5ndWVzdHMpKToiIjtyZXR1cm5gPGRpdiBjbGFzcz0iYmFuZCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7bChbS28oZSksb10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiwgIikpfSI+JHtuKGMoIkNoZWNrLWluIiwi5YWl5L2PIiksZS5jaGVja0luKX08c3BhbiBjbGFzcz0id2hlbi1uIj4ke2wocGUoRWUoZS5jaGVja0luLGUuY2hlY2tPdXQpKSl9JHtvP2A8c21hbGw+JHtsKG8pfTwvc21hbGw+YDoiIn08L3NwYW4+JHtuKGMoIkNoZWNrLW91dCIsIuemu+W6lyIpLGUuY2hlY2tPdXQpfTwvZGl2PmB9LHVfPWU9PmMoYCR7ZX0gJHtlPT09MT8iZ3Vlc3QiOiJndWVzdHMifWAsYCR7ZX3kvY1gKSxSZz1lPT57Y29uc3QgdD11PT57Y29uc3QgZD0vXihcZHsxLDJ9KTooXGR7Mn0pJC8uZXhlYyhTdHJpbmcodT8/IiIpKTtyZXR1cm4gZD9OdW1iZXIoZFsxXSkqNjArTnVtYmVyKGRbMl0pOnZvaWQgMH0sbj10KGU/LmVhcmxpZXN0U3RhcnQpLG89dChlPy5sYXRlc3RTdGFydCkscz10KGU/LmxhdGVzdEVuZCk/PzE0NDAscj1OdW1iZXIoZT8uaG91cnMpfHwwO2lmKG49PT12b2lkIDB8fG89PT12b2lkIDApcmV0dXJuW107Y29uc3QgaT1NYXRoLmNlaWwobi81KSo1LGE9aTw9bz9baV06W107Zm9yKGxldCB1PU1hdGguY2VpbCgoaSsxKS82MCkqNjA7dTw9bzt1Kz02MClhLnB1c2godSk7cmV0dXJuIGEuZmlsdGVyKHU9PnU8PW8mJnUrcio2MDw9cykubWFwKHU9PmAke1N0cmluZyhNYXRoLmZsb29yKHUvNjApKS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKHUlNjApLnBhZFN0YXJ0KDIsIjAiKX1gKX0scnM9KGUsdCk9Pntjb25zdCBuPS9eKFxkezEsMn0pOihcZHsyfSkkLy5leGVjKGUpO2lmKCFuKXJldHVybiBTdHJpbmcodD8ubGF0ZXN0RW5kPz8iIik7Y29uc3Qgbz1OdW1iZXIoblsxXSkqNjArTnVtYmVyKG5bMl0pKyhOdW1iZXIodD8uaG91cnMpfHwwKSo2MCxzPS9eKFxkezEsMn0pOihcZHsyfSkkLy5leGVjKFN0cmluZyh0Py5sYXRlc3RFbmQ/PyIiKSkscj1zP051bWJlcihzWzFdKSo2MCtOdW1iZXIoc1syXSk6byxpPU1hdGgubWluKG8scik7cmV0dXJuYCR7U3RyaW5nKE1hdGguZmxvb3IoaS82MCklMjQpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcoaSU2MCkucGFkU3RhcnQoMiwiMCIpfWB9LGh1PW5ldyBNYXAsbXU9KGUsdCxuLG8pPT57Y29uc3Qgcz10LmhvdXJseT9SZyh0LmhvdXJseSk6W10scj10LmhvdXJseT9odS5nZXQoU3RyaW5nKHQuaWQpKT8/c1swXT8/IiI6IiI7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJyb29tLWJ1eSI+CiAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPgogICAgICAgICAgJHt0LnB1YmxpY1N0YXlUb3RhbD9gPGRpdiBjbGFzcz0icC13YXMiPiR7bCh0LnB1YmxpY1Jvb21zVG90YWw/P3QucHVibGljU3RheVRvdGFsKX08L2Rpdj5gOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0icC10b3RhbCI+JHtsKHQucm9vbXNUb3RhbD8/dC5zdGF5VG90YWwpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke3QuaG91cmx5P2woYyhgRm9yICR7Q3QodC5ob3VybHkuaG91cnMpfSR7VT4xP2AsICR7VX0gcm9vbXNgOiIifSwgdGF4ZXMgaW5gLGAke0N0KHQuaG91cmx5LmhvdXJzKX0ke1U+MT9g44CBJHtVfemXtGA6IiJ977yM5ZCr56iO6LS5YCkpOmwoYyhgVG90YWwgZm9yICR7cGUoRWUobi5jaGVja0luLG4uY2hlY2tPdXQpKX0ke1U+MT9gLCAke1V9IHJvb21zYDoiIn0sIHRheGVzIGluYCxgJHtwZShFZShuLmNoZWNrSW4sbi5jaGVja091dCkpfSR7VT4xP2DjgIEke1V96Ze0YDoiIn3mgLvku7fvvIzlkKvnqI7otLlgKSl9PC9kaXY+CiAgICAgICAgICAke3QuaG91cmx5PyIiOmA8ZGl2IGNsYXNzPSJwLW5pZ2h0Ij4ke2woYyhgUm9vbSByYXRlICR7dC5uaWdodGx5fSBhIG5pZ2h0YCxg5oi/5Lu35q+P5pmaICR7dC5uaWdodGx5fWApKX08L2Rpdj5gfQogICAgICAgICAgJHt0Lm1lbWJlclJhdGU/YDxkaXYgY2xhc3M9InAtbWVtYmVyIj4ke2woYyhgJHt0Lm1lbWJlclJhdGUudGllcn0gcmF0ZWAsYCR7dC5tZW1iZXJSYXRlLnRpZXJ95Lu3YCkpfTwvZGl2PmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke28/YCR7VHMoYGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iYCxvLFN0cmluZyh0Lm5hbWUpLFUpfTxidXR0b24gY2xhc3M9ImdvIHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJ0cmlwIj4ke2MoIlJldmlldyIsIuWOu+aguOWvuSIpfSR7RS5hcnJvd308L2J1dHRvbj5gOnQuaG91cmx5P2A8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImdvIGFkZCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woVSl9IiBkYXRhLXN0YXJ0PSIke2wocil9IiR7cj8iIjoiIGRpc2FibGVkIn0gYXJpYS1sYWJlbD0iJHtsKGMoYFJlc2VydmUgJHt0Lm5hbWV9IGZyb20gJHtyfWAsYOmihOiuoiR7dC5uYW1lfe+8jCR7cn3liLDlupdgKSl9Ij4ke2MoIlJlc2VydmUiLCLpooTorqIiKX0ke3I/YCDCtyAke2wocil9YDoiIn08L2J1dHRvbj5gOmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImdvIGFkZCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woVSl9IiBhcmlhLWxhYmVsPSIke2woYyhgUmVzZXJ2ZSAke3QubmFtZX1gLGDpooTorqIke3QubmFtZX1gKSl9Ij4ke2MoIlJlc2VydmUiLCLpooTorqIiKX08L2J1dHRvbj5gfTwvZGl2PgogICAgICA8L2Rpdj5gfSxPZz1lPT5OdW1iZXIoZS5yb29tc0xlZnQpPD0zP2A8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiBsZWZ0Ij4ke0UuY2xvY2t9JHtsKGMoYCR7ZS5yb29tc0xlZnR9IGxlZnQgYXQgdGhpcyByYXRlYCxg5q2k5Lu35qC85LuF5YmpICR7ZS5yb29tc0xlZnR9IOmXtGApKX08L3NwYW4+YDoiIixkXz0oZSx0KT0+e2NvbnN0IG49bmV3IFNldDtpZighdClyZXR1cm57bGVhZDoiIixzYWlkOm59O2NvbnN0IG89W107ZS52aWV3JiZlLnZpZXchPT10LnZpZXcmJihvLnB1c2goWHQoZS52aWV3KSksbi5hZGQoInZpZXciKSksZS5iZWRzJiZlLmJlZHMhPT10LmJlZHMmJihvLnB1c2goU3RyaW5nKGUuYmVkcykpLG4uYWRkKCJiZWRzIikpO2NvbnN0IHM9TnVtYmVyKGUuc2l6ZVNxbSkscj1OdW1iZXIodC5zaXplU3FtKTtzJiZyJiZzIT09ciYmby5wdXNoKHM+cj9jKGAke3Mtcn0gbcKyIGxhcmdlcmAsYOmdouenr+WkpyAke3Mtcn0gbcKyYCk6YyhgJHtyLXN9IG3CsiBzbWFsbGVyYCxg6Z2i56ev5bCPICR7ci1zfSBtwrJgKSksTnVtYmVyKGUuc2xlZXBzKT5OdW1iZXIodC5zbGVlcHMpJiYoby5wdXNoKGMoYHNsZWVwcyAke2Uuc2xlZXBzfWAsYOWPr+S9jyAke2Uuc2xlZXBzfSDkurpgKSksbi5hZGQoInNsZWVwcyIpKTtjb25zdCBpPVN0cmluZyh0LnJvb21UeXBlPy5uYW1lPz90Lm5hbWU/PyIiKTtyZXR1cm57bGVhZDpvLmxlbmd0aD9gPHAgY2xhc3M9InJvb20tbGVhZCI+PHNwYW4gY2xhc3M9ImxlYWQtayI+JHtsKGMoYFVubGlrZSAke2l9YCxg55u45q+UJHtpfWApKX08L3NwYW4+JHtsKG8uc2xpY2UoMCwzKS5qb2luKCIgwrcgIikpfTwvcD5gOiIiLHNhaWQ6bn19LHBfPShlLHQsbixvKT0+e2NvbnN0IHM9U3MoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKTtyZXR1cm5gCiAgICA8YXJ0aWNsZSBjbGFzcz0icm9vbSR7cz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2d0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwoYnQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5uYW1lKX08L2gzPgogICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgPHVsIGNsYXNzPSJmYWN0cyI+JHt1dSh0LG8/LnNhaWQpfTwvdWw+CiAgICAgICAgJHtwdSh0KX0KICAgICAgICA8dWwgY2xhc3M9InBlcmtzIj4ke2R1KHQpfTwvdWw+CiAgICAgICAgJHtPZyh0KX0KICAgICAgPC9kaXY+CiAgICAgICR7bXUoZSx0LG4scyl9CiAgICA8L2FydGljbGU+YH0saF89KGUsdCxuLG8pPT57Y29uc3Qgcz10WzBdPz97fSxyPVN0cmluZyhzLnJvb21UeXBlPy5uYW1lPz9zLm5hbWUpO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJydHlwZSR7dC5zb21lKGE9PlNzKFN0cmluZyhlLmlkKSxTdHJpbmcoYS5pZCksbik+MCk/IiBoZWxkIjoiIn0iPgogICAgICA8ZGl2IGNsYXNzPSJydHlwZS1oZWFkIj4KICAgICAgICA8c3BhbiBjbGFzcz0icm9vbS1zaG90IiBzdHlsZT0iJHtndChgJHtlLmlkfToke3Mucm9vbVR5cGU/LmlkPz9zLmlkfWApfSI+CiAgICAgICAgICAke3MuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2wocy5pbWFnZVVybCl9IiBhbHQ9IiI+YDpsKGJ0KHIpKX0KICAgICAgICA8L3NwYW4+CiAgICAgICAgPGRpdiBjbGFzcz0icm9vbS1tYWluIj4KICAgICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wocil9PC9oMz4KICAgICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgICA8dWwgY2xhc3M9ImZhY3RzIj4ke3V1KHMsbz8uc2FpZCl9PC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9InJ0eXBlLW4iPiR7bChjKGAke3QubGVuZ3RofSAke3QubGVuZ3RoPT09MT8icmF0ZSI6InJhdGVzIn1gLGAke3QubGVuZ3RofSDnp43ku7fmoLxgKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJyYXRlcyI+JHt0Lm1hcChhPT57Y29uc3QgdT1TcyhTdHJpbmcoZS5pZCksU3RyaW5nKGEuaWQpLG4pO3JldHVybmAKICAgICAgICA8ZGl2IGNsYXNzPSJycmF0ZSR7dT8iIGhlbGQiOiIifSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW1haW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW5hbWUiPiR7bChhLnJhdGU/Lm5hbWU/P2EubmFtZSl9PC9kaXY+CiAgICAgICAgICAgICR7cHUoYSl9CiAgICAgICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7ZHUoYSl9PC91bD4KICAgICAgICAgICAgJHtPZyhhKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHttdShlLGEsbix1KX0KICAgICAgICA8L2Rpdj5gfSkuam9pbigiIil9PC9kaXY+CiAgICA8L2FydGljbGU+YH0sbV89KGUsdCxuKT0+e2NvbnN0IG89U3MoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKSxzPVJnKHQuaG91cmx5KSxyPWh1LmdldChTdHJpbmcodC5pZCkpPz9zWzBdO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJyb29tIGhvdXJseSR7bz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2d0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwoYnQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5yb29tVHlwZT8ubmFtZT8/dC5uYW1lKX08c3BhbiBjbGFzcz0icm9vbS1ob3VycyI+IMK3ICR7bChDdCh0LmhvdXJseS5ob3VycykpfTwvc3Bhbj48L2gzPgogICAgICAgIDx1bCBjbGFzcz0iZmFjdHMiPiR7dXUodCl9PC91bD4KICAgICAgICAke3B1KHQpfQogICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7ZHUodCl9PC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGFydHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIlN0YXJ0IHRpbWUiLCLliLDlupfml7bpl7QiKX0iPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkFycml2ZSBhdCIsIuWIsOW6l+aXtumXtCIpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3MubWFwKGk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdXItc3RhcnQ9IiR7bChpKX0iIGRhdGEtcm9vbT0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke2k9PT1yPyJ0cnVlIjoiZmFsc2UifSI+JHtsKGkpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKHI/YyhgJHtyfeKAkyR7cnMocix0LmhvdXJseSl9IMK3IGxlYXZlIGJ5ICR7cnMocix0LmhvdXJseSl9YCxgJHtyfeKAkyR7cnMocix0LmhvdXJseSl9IMK3ICR7cnMocix0LmhvdXJseSl9IOWJjeemu+W6l2ApOmMoYE91dCBieSAke3QuaG91cmx5LmxhdGVzdEVuZH0gYXQgdGhlIGxhdGVzdC5gLGDmnIDmmZogJHt0LmhvdXJseS5sYXRlc3RFbmR9IOemu+W6l+OAgmApKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7bXUoZSx0LG4sbyl9CiAgICA8L2FydGljbGU+YH0sZl89KGUsdCxuKT0+e2NvbnN0IG89dC5maWx0ZXIoYT0+YS5ob3VybHkpLHM9dC5maWx0ZXIoYT0+IWEuaG91cmx5KSxyPVtdLGk9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBzKXtjb25zdCB1PWEucm9vbVR5cGU/LmlkP1N0cmluZyhhLnJvb21UeXBlLmlkKToiIjtpZighdSl7ci5wdXNoKFthXSk7Y29udGludWV9Y29uc3QgZD1pLmdldCh1KTtpZihkKWQucHVzaChhKTtlbHNle2NvbnN0IHA9W2FdO2kuc2V0KHUscCksci5wdXNoKHApfX1yZXR1cm5bci5sZW5ndGg/YDxkaXYgY2xhc3M9InJvb21zIj4ke3IubWFwKChhLHUpPT57Y29uc3QgZD1kXyhhWzBdLHJbdS0xXT8uWzBdKTtyZXR1cm4gYS5sZW5ndGg+MXx8YVswXT8ucm9vbVR5cGU/aF8oZSxhLG4sZCk6cF8oZSxhWzBdLG4sZCl9KS5qb2luKCIiKX08L2Rpdj5gOiIiLG8ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyb29tcyI+JHtvLm1hcChhPT5tXyhlLGEsbikpLmpvaW4oIiIpfTwvZGl2PmA6IiJdLmpvaW4oIiIpfSxOZz17ImhvdXJseS1ub25lIjooKT0+Iui/meWutuS7iuWkqeS4jeWNlumSn+eCueaIv+OAgiIsImhvdXJseS1vdmVyIjplPT5lLmxhc3RTdGFydD9g5LuK5aSp55qE6ZKf54K55oi/5bey57uP57uT5p2f5LqG77yM5pyA5pmaICR7ZS5sYXN0U3RhcnR9IOW8gOWni+OAgmA6IuS7iuWkqeeahOmSn+eCueaIv+W3sue7j+e7k+adn+S6huOAgiIsImhvdXJseS1ub3QteWV0IjplPT5lLm9wZW5zQXQ/YOS7iuWkqeeahOmSn+eCueaIvyAke2Uub3BlbnNBdH0g5byA5Y2W44CCYDoi5LuK5aSp55qE6ZKf54K55oi/6L+Y5rKh5byA5Y2W44CCIixwYXJ0eTplPT5OdW1iZXIoZS5sYXJnZXN0KT4wP051bWJlcihlLnJvb21zKT4wP2DmsqHmnInog73kvY/ov5nkuYjlpJrkurrnmoTmiL/lnovvvJrmnIDlpKfnmoTlj6/kvY8gJHtlLmxhcmdlc3R9IOS6uu+8jOmcgOimgeiuoiAke2Uucm9vbXN9IOmXtOOAgmA6YOS4gOmXtOacgOWkmuS9jyAke2UubGFyZ2VzdH0g5Lq677yM5Lq65pu05aSa6K+355u05o6l6IGU57O76YWS5bqX44CCYDoi5rKh5pyJ6IO95L2P6L+Z5LmI5aSa5Lq655qE5oi/5Z6L44CCIiwic29sZC1vdXQiOmU9PmUuaG91cmx5PyLku4rlpKnnmoTpkp/ngrnmiL/pg73orqLmu6HkuobjgIIiOk51bWJlcihlLnJvb21zKT4xP2Dov5nkupvml6XmnJ/msqHmnInlk6rkuKrmiL/lnovov5jliakgJHtlLnJvb21zfSDpl7TjgIJgOiLov5nkupvml6XmnJ/nmoTmiL/pl7Tpg73orqLmu6HkuobjgIIiLCJwcmVwYWlkLW9ubHkiOigpPT4i6L+Z6YeM5Y+q5pyJ6ZyA6KaB6aKE5LuY55qE5oi/5Lu377yM6L+Z6YeM5Y+q6IO96K6i5Yiw5bqX5LuY5qy+55qE5oi/6Ze044CCIiwidG9vLW1hbnktcm9vbXMiOmU9Pk51bWJlcihlLnJvb21zKT4wP2DmsqHmnInmiL/ku7fog73kuIDmrKHorqIgJHtlLnJvb21zfSDpl7TvvIzor7flsJHorqLlh6Dpl7TjgIJgOiLkuIDmrKHorqLkuI3kuobov5nkuYjlpJrpl7TvvIzor7flsJHorqLlh6Dpl7TjgIIiLCJ0b28tZmFyIjplPT5OdW1iZXIoZS5kYXlzKT4wP2Dov5jmsqHlvIDljZbvvJrlj6rog73orqIgJHtlLmRheXN9IOWkqeS7peWGheeahOaIv+mXtOOAgmA6Iui/mOayoeW8gOWNlu+8muaXpeacn+Wkqui/nOS6huOAgiIsInN0YXktcnVsZSI6ZT0+e2NvbnN0IHQ9ZS5kYXRlP19lKFN0cmluZyhlLmRhdGUpKToi6L+Z5aSpIjtyZXR1cm4gZS5ydWxlPT09Im5vLWFycml2YWwiP2Ake3R95LiN6IO95YWl5L2P44CCYDplLnJ1bGU9PT0ibm8tZGVwYXJ0dXJlIj9gJHt0feS4jeiDvemAgOaIv+OAgmA6ZS5ydWxlPT09Im1pbi1zdGF5Ij9OdW1iZXIoZS5uaWdodHMpPjA/YOiHs+WwkeimgeS9jyAke2UubmlnaHRzfSDmmZrjgIJgOiLkvY/nmoTmmZrmlbDlpKrlsJHkuobjgIIiOmUucnVsZT09PSJtYXgtc3RheSI/TnVtYmVyKGUubmlnaHRzKT4wP2DmnIDlpJrlj6rog73kvY8gJHtlLm5pZ2h0c30g5pma44CCYDoi5L2P55qE5pma5pWw5aSq5aSa5LqG44CCIjoi6L+Z5Lqb5pel5pyf5pyJ5YWl5L2P6ZmQ5Yi277yM5o2i5Liq5pel5pyf6K+V6K+V44CCIn0sY2xvc2VkOigpPT4i6L+Z5Lqb5pel5pyf5LiN5byA5pS+6aKE6K6i44CCIiwibm9uZS1vbi1zYWxlIjooKT0+Iui/meWutumFkuW6l+eahOaIv+mXtOS4jeWcqOi/memHjOWHuuWUruOAgiIsdW5yZWFjaGFibGU6KCk9PiLov5nmrKHmsqHog73mn6XliLDov5nlrrbphZLlupfnmoTmiL/pl7TvvIznqI3lkI7lho3or5XkuIDmrKHjgIIiLCJwcmljZS1jaGFuZ2VkIjooKT0+IuS7t+agvOaIluadoeasvuWSjOS9oOeci+WIsOeahOS4jeS4gOagt+S6hu+8jOaJgOS7peayoeacieaMieaWsOS7t+agvOmihOiuouOAgiIsbGltaXRlZDooKT0+Iui/meS4gOauteaaguaXtuiiq+mihOiuouS4iumZkOaMoeS4i+S6hu+8jOWwkeiuouS4gOS6m+aIlueojeWQjuWGjeivleOAgiIsImRhdGVzLXBhc3QiOmU9PmUudG9kYXk/YOWFpeS9j+aXpeacn+W3sue7j+i/h+WOu+S6hu+8jOS7iuWkqeaYryAke19lKFN0cmluZyhlLnRvZGF5KSl944CCYDoi5YWl5L2P5pel5pyf5bey57uP6L+H5Y675LqG44CCIiwiZGF0ZXMtb3JkZXIiOigpPT4i56a75bqX6KaB5pma5LqO5YWl5L2P77ya5L2P5LiA5pma5bCx5piv56ys5LqM5aSp56a75bqX44CCIiwic3RheS10b28tbG9uZyI6ZT0+TnVtYmVyKGUubmlnaHRzKT4wP2DkuIDmrKHmnIDlpJrorqIgJHtlLm5pZ2h0c30g5pma44CCYDoi5LiA5qyh6K6i5LiN5LqG6L+Z5LmI5aSa5pma44CCIiwic3RheS1pbnZhbGlkIjooKT0+Iuivt+mHjeaWsOmAieWlveWFpeS9j+aXpeacn+WSjOS6uuaVsOOAgiIsdW5hdmFpbGFibGU6KCk9PiLov5nkupvml6XmnJ/ov5nph4zorqLkuI3kuobjgIIifSxJcz0oZSx0LG4pPT57Y29uc3Qgbz1vZT09PSJ6aCImJnR5cGVvZiB0PT0ic3RyaW5nIj9OZ1t0XTp2b2lkIDA7cmV0dXJuIG8/byhuJiZ0eXBlb2Ygbj09Im9iamVjdCI/bjp7fSk6U3RyaW5nKGU/PyIiKX0sZ2Q9KGUsdCxuKT0+e2lmKHQ/dCE9PSJwYXJ0eSI6IS9cYnNsZWVwc1xifGNhbiB0YWtlIFxkKyBndWVzdHMvLnRlc3QoZSkpcmV0dXJuIiI7Y29uc3Qgbz1OdW1iZXIoKHQ9PT0icGFydHkiP24/Lmxhcmdlc3Q6dm9pZCAwKT8/L2xhcmdlc3Qgc2xlZXBzIChcZCspLy5leGVjKGUpPy5bMV0/PzApLHM9Uy5ndWVzdHMqVSxyPW8+MD9NYXRoLm1pbihCdCxNYXRoLmNlaWwocy9vKSk6MCxpPXI/TWF0aC5jZWlsKHMvcik6MDtyZXR1cm5gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke0UudXNlcnN9PC9kaXY+CiAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7bChjKGBObyByb29tIGhlcmUgc2xlZXBzICR7Uy5ndWVzdHN9YCxg6L+Z6YeM5rKh5pyJ5Y+v5L2PICR7Uy5ndWVzdHN9IOS6uueahOaIv+Wei2ApKX08L2gzPgogICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChyJiZpPD1vP2MoYFRoZSBsYXJnZXN0IHNsZWVwcyAke299LiBCb29rICR7cn0gcm9vbXMsIGVhY2ggZm9yIHVwIHRvICR7aX0sIGFuZCB0aGUgJHtzfSBvZiB5b3UgZml0LmAsYOacgOWkp+eahOaIv+Wei+WPr+S9jyAke299IOS6uuOAguiuoiAke3J9IOmXtOOAgeavj+mXtOaMiSAke2l9IOS6uuiuou+8jCR7c30g5Liq5Lq65bCx6IO95L2P5LiL44CCYCk6YygiVHJ5IGZld2VyIGd1ZXN0cyBpbiBlYWNoIHJvb20uIiwi6K+V6K+V5oqK5q+P6Ze05Lq65pWw5pS55bCR44CCIikpfTwvcD4KICAgICR7ciYmaTw9bz9gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1zcGxpdD0iJHtyfToke2l9Ij4ke2woYyhgQm9vayAke3J9IHJvb21zLCAke2l9IGluIGVhY2hgLGDorqIgJHtyfSDpl7TvvIzmr4/pl7TmjIkgJHtpfSDkurpgKSl9PC9idXR0b24+PC9kaXY+YDoiIn0KICA8L2Rpdj5gfSxnXz0oZSx0LG49MCk9PiFBcnJheS5pc0FycmF5KHQpfHx0Lmxlbmd0aDwyPyIiOmAKICA8ZGl2IGNsYXNzPSJzdHJpcC1oIj4ke2woYyhgQXJyaXZlIGFub3RoZXIgZGF5IMK3ICR7cGUobil9IGZyb21gLGDmjaLkuKrml6XlrZDlhaXkvY8gwrcgJHtwZShuKX3otbfku7dgKSl9JHt0LmZpbHRlcihvPT5vLmxvd2VzdCkubGVuZ3RoPjE/YDxzbWFsbCBjbGFzcz0ic3RyaXAta2V5Ij4ke2MoIkdyZWVuOiB0aGUgbG93ZXN0Iiwi57u/6Imy5Li65pyA5L2O5Lu3Iil9PC9zbWFsbD5gOiIifTwvZGl2PgogIDxkaXYgY2xhc3M9ImZsZXgtZGF0ZXMiIHJvbGU9Imdyb3VwIiBzdHlsZT0iLS1uOiR7dC5sZW5ndGh9IiBhcmlhLWxhYmVsPSIke2MoIk5lYXJieSBhcnJpdmFsIGRhdGVzIiwi6ZmE6L+R55qE5YWl5L2P5pel5pyfIil9Ij4KICAgICR7dC5tYXAoKG8scyk9PmA8YnV0dG9uIGNsYXNzPSJmZCR7by5jaG9zZW4/IiBvbiI6IiJ9JHtvLmZyb20/IiI6IiBvdXQifSR7by5iZXN0PyIgYmVzdCI6IiJ9JHtvLmxvd2VzdD8iIGxvd2VzdCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlKX0iIGRhdGEtY2k9IiR7bChvLmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKG8uY2hlY2tPdXQpfSIgYXJpYS1sYWJlbD0iJHtsKGMoYEFycml2ZSAke19lKFN0cmluZyhvLmNoZWNrSW4pKX0ke28uZnJvbT9gLCBmcm9tICR7by5mcm9tfWA6Iiwgbm90aGluZyBsZWZ0In0ke28ubG93ZXN0PyIsIHRoZSBsb3dlc3QiOiIifWAsYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfeWFpeS9jyR7by5mcm9tP2DvvIwke28uZnJvbX3otbdgOiLvvIzlt7Lmu6EifSR7by5sb3dlc3Q/Iu+8jOacgOS9juS7tyI6IiJ9YCkpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZkLWRheSI+JHtzPT09MHx8VmUoU3RyaW5nKG8uY2hlY2tJbikpLm1vbiE9PVZlKFN0cmluZyh0W3MtMV0/LmNoZWNrSW4pKS5tb24/YDxzcGFuIGNsYXNzPSJmZC1tb24iPiR7bChWZShTdHJpbmcoby5jaGVja0luKSkubW9uKX08L3NwYW4+YDonPHNwYW4gY2xhc3M9ImZkLW1vbiIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvc3Bhbj4nfTxzcGFuIGNsYXNzPSJmZC1kb3ciPiR7bChWZShTdHJpbmcoby5jaGVja0luKSkuZG93KX08L3NwYW4+PHNwYW4gY2xhc3M9ImZkLWRuIj4ke2woVmUoU3RyaW5nKG8uY2hlY2tJbikpLmRheSl9PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iZmQtcHJpY2UiPiR7by5mcm9tP2woby5mcm9tKTpjKCJGdWxsIiwi5bey5ruhIil9PC9zcGFuPiR7by5sb3dlc3QmJnQuZmlsdGVyKHI9PnIubG93ZXN0KS5sZW5ndGg9PT0xP2A8c3BhbiBjbGFzcz0iZmQtbG93Ij4ke2MoIkxvd2VzdCIsIuacgOS9jiIpfTwvc3Bhbj5gOiIifQogICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gLGJkPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5yb29tcz8/W10sbz1lLnN0YXk/P1Mscz1uLmxlbmd0aD4wJiZuLmV2ZXJ5KGk9PmkuaG91cmx5KXx8ISFlLmhvdXJseSYmISFvPy5jaGVja0luJiZvLmNoZWNrSW49PT1vLmNoZWNrT3V0LHI9bmV3IFNldChuLm1hcChpPT5TdHJpbmcoaS5yb29tVHlwZT8uaWQ/P2kuaWQpKSkuc2l6ZTtyZXR1cm5bUGcodCksZS5ob3VybHkmJnQuc2VsbHNIb3VybHkhPT0hMT9gPGRpdiBjbGFzcz0ic2VnIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJIb3cgbG9uZyIsIuWFpeS9j+aWueW8jyIpfSI+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9Im5pZ2h0bHkiIGFyaWEtcHJlc3NlZD0iJHtzPyJmYWxzZSI6InRydWUifSI+JHtFLmNhbGVuZGFyfSR7YygiT3Zlcm5pZ2h0Iiwi5oyJ5pmaIil9PC9idXR0b24+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9ImhvdXJseSIgZGF0YS1ob3RlbC1pZD0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke3M/InRydWUiOiJmYWxzZSJ9Ij4ke0UuY2xvY2t9JHtjKCJCeSB0aGUgaG91ciDCtyB0b2RheSIsIumSn+eCueaIvyDCtyDku4rlpKkiKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YDoiIixzPyIiOiRnKFN0cmluZyh0LmlkKSx0LnRvZGF5VGhlcmUpLHN8fGUubm9Sb29tcyYmZ2QoU3RyaW5nKGUubm9Sb29tcyksZS5ub1Jvb21zQ29kZSxlLm5vUm9vbXNBcmdzKT8iIjpnXyhTdHJpbmcodC5pZCksZS5kYXRlcyxFZShvLmNoZWNrSW4sby5jaGVja091dCkpLGUubmVlZHNEYXRlcz9gPGRpdiBjbGFzcz0ic2tlbCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxhYmVsPSIke2MoIkxvb2tpbmcgdXAgcm9vbXMiLCLmraPlnKjmn6Xor6LmiL/pl7QiKX0iPjxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj48L2Rpdj5gOmUubm9Sb29tcyYmcz9gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke0UuY2xvY2t9PC9kaXY+CiAgICAgICAgICAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7YygiTm8gcm9vbXMgYnkgdGhlIGhvdXIgdG9kYXkiLCLku4rlpKnmsqHmnInpkp/ngrnmiL8iKX08L2gzPgogICAgICAgICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChJcyhlLm5vUm9vbXMsZS5ub1Jvb21zQ29kZSx7Li4uZS5ub1Jvb21zQXJncz8/e30saG91cmx5OiEwfSkpfTwvcD4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im5pZ2h0bHkiPiR7RS5jYWxlbmRhcn0ke2MoIlNlZSByb29tcyBmb3IgYSBuaWdodCIsIueci+aMieaZmuWFpeS9j+eahOaIv+mXtCIpfTwvYnV0dG9uPjwvZGl2PgogICAgICAgICAgIDwvZGl2PmA6ZS5ub1Jvb21zP2dkKFN0cmluZyhlLm5vUm9vbXMpLGUubm9Sb29tc0NvZGUsZS5ub1Jvb21zQXJncyl8fGA8ZGl2IGNsYXNzPSJlcnIiPiR7bChJcyhlLm5vUm9vbXMsZS5ub1Jvb21zQ29kZSxlLm5vUm9vbXNBcmdzKSl9PC9kaXY+YDpgPGgzIGNsYXNzPSJzZWMiPiR7cz9jKCJCeSB0aGUgaG91ciwgdG9kYXkiLCLku4rml6Xpkp/ngrnmiL8iKTpjKCJDaG9vc2UgeW91ciByb29tIiwi6YCJ5oup5oi/5Z6LIil9IDxzbWFsbCBjbGFzcz0ic2VjLW4iPiR7bChzP2MoYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyBwaWNrIHdoZW4geW91IGFycml2ZSDCtyB0YXhlcyBpbmAsYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyDpgInlpb3liLDlupfml7bpl7Qgwrcg5ZCr56iO6LS5YCk6YyhgJHtyfSByb29tICR7cj09PTE/InR5cGUiOiJ0eXBlcyJ9JHtOdW1iZXIoby5ndWVzdHMpIT09Mj9gIHRoYXQgJHtyPT09MT8ic2xlZXBzIjoic2xlZXAifSAke28uZ3Vlc3RzfWA6IiJ9JHtuLmxlbmd0aD5yP2AsICR7bi5sZW5ndGh9IHJhdGVzYDoiIn0gwrcgcHJpY2VzIGZvciAke3BlKEVlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl9LCB0YXhlcyBpbmAsYCR7cn0g56eNJHtOdW1iZXIoby5ndWVzdHMpIT09Mj9g5Y+v5L2PICR7by5ndWVzdHN9IOS6uueahGA6IiJ95oi/5Z6LJHtuLmxlbmd0aD5yP2DjgIEke24ubGVuZ3RofSDnp43ku7fmoLxgOiIifSDCtyAke3BlKEVlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl95ZCr56iO5oC75Lu3YCkpfTwvc21hbGw+PC9oMz4KICAgICAgICAgICAke2ZfKHQsbixvKX1gLChlLmV4dHJhcz8/W10pLmxlbmd0aHx8KGUucG9saWNpZXM/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9Imdvb2QtdG8ta25vdyI+CiAgICAgICAgICAgPGgzIGNsYXNzPSJzZWMiPiR7YygiR29vZCB0byBrbm93Iiwi5YWl5L2P6aG755+lIil9PC9oMz4KICAgICAgICAgICAkeyhlLnBvbGljaWVzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJsaW5rcyI+JHtlLnBvbGljaWVzLm1hcChpPT5gPGJ1dHRvbiBjbGFzcz0ibGluay1yb3ciIHR5cGU9ImJ1dHRvbiIgZGF0YS1wb2xpY3k9IiR7bChpLnRvcGljKX0iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPjxzcGFuPiR7bChpLnRpdGxlKX08L3NwYW4+JHtFLmNoZXZSfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgJHsoZS5leHRyYXM/P1tdKS5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1leHRyYXM9IiR7bCh0LmlkKX0iPiR7YygiQWRkLW9ucyBhbmQgZXhwZXJpZW5jZXMiLCLpmYTliqDmnI3liqHlkozkvZPpqowiKX0ke0UuYXJyb3d9PC9idXR0b24+YDoiIn0KICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LGJfPXsicGVyc29uLW5pZ2h0IjpbInBlciBwZXJzb24gcGVyIG5pZ2h0Iiwi5q+P5Lq65q+P5pmaIl0sbmlnaHQ6WyJwZXIgbmlnaHQiLCLmr4/mmZoiXSxzdGF5OlsicGVyIHN0YXkiLCLmr4/mrKHlhaXkvY8iXSxwZXJzb246WyJwZXIgcGVyc29uIiwi5q+P5Lq6Il0saXRlbTpbImVhY2giLCLmr4/ku70iXSx0cmlwOlsicGVyIHRyaXAiLCLmr4/otp8iXX0sdmQ9ZT0+e2NvbnN0IHQ9Yl9bU3RyaW5nKGUpXTtyZXR1cm4gdD9jKHRbMF0sdFsxXSk6YyhgcGVyICR7ZX1gLGDmr48ke2V9YCl9LHZfPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5leHRyYXM/P1tdLG89ZS5mb3JCb29raW5nO3JldHVybiBvP1tgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChjKGBBZGQtb25zIGZvciAke28uY29uZmlybWF0aW9uQ29kZX1gLGAke28uY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCkpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bCh0Lm5hbWUpfSDCtyAke2woS28oby5zdGF5KSl9PC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0icm93cyI+JHtuLm1hcChzPT5gCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2wocy5uYW1lKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke2wodmQocy5wZXIpKX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke1RzKGBkYXRhLWJvb2tpbmctZXh0cmE9IiR7bChzLmlkKX0iIGRhdGEtYm9va2luZz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9ImAsTnVtYmVyKG8uaGVsZD8uW3MuaWRdPz8wKSxTdHJpbmcocy5uYW1lKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJFYWNoIGNoYW5nZSBpcyBzaG93biB3aXRoIGl0cyBuZXcgdG90YWwgYmVmb3JlIGFueXRoaW5nIG1vdmVzLiBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4iLCLmr4/mrKHmlLnliqjpg73kvJrlhYjmmL7npLrmlrDnmoTmgLvku7fvvIznoa7orqTlkI7miY3nlJ/mlYjjgILov5nph4zkuI3miaPmrL7jgIIiKX08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiQmFjayB0byB5b3VyIGJvb2tpbmdzIiwi6L+U5Zue5oiR55qE6aKE6K6iIil9PC9idXR0b24+YF0uam9pbigiIik6W2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKHQubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtjKCJXaGF0IGl0IG9mZmVycyBiZXNpZGUgdGhlIHJvb20iLCLmiL/pl7Tku6XlpJbnmoTpmYTliqDmnI3liqEiKX08L2Rpdj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJyb3dzIj4ke24ubWFwKHM9PmAKICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChzLm5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtsKHZkKHMucGVyKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke1RzKGBkYXRhLWFkZC1leHRyYT0iJHtsKHMuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSJgLFZ3KFN0cmluZyh0LmlkKSxTdHJpbmcocy5pZCkpLFN0cmluZyhzLm5hbWUpKX08L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSI+JHtsKGMoYEJhY2sgdG8gJHt0Lm5hbWV9YCxg6L+U5ZueJHt0Lm5hbWV9YCkpfTwvYnV0dG9uPmBdLmpvaW4oIiIpfTtsZXQgbmk9ITE7Y29uc3QgeV89KGUsdD0hMSxuPSExKT0+e2NvbnN0IG89ZS5raW5kPT09InJvb20iP2BkYXRhLWFkZC1yb29tPSIke2woZS5yb29tUmVmKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsSWQpfSIgZGF0YS1jaT0iJHtsKGUuc3RheT8uY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5Py5jaGVja091dCl9IiBkYXRhLWd1PSIke2woZS5zdGF5Py5ndWVzdHMpfSJgOmBkYXRhLWFkZC1leHRyYT0iJHtsKGUuZXh0cmFSZWY/P2UudGl0bGUpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWxJZCl9IiR7ZS5kYXk/YCBkYXRhLWRheT0iJHtsKGUuZGF5KX0iYDoiIn1gLHM9ZS5raW5kIT09InJvb20ifHxlLmhvdXJseT8iIjplLnJlZnVuZGFibGU9PT0hMT9gPGxpIGNsYXNzPSJwZXJrIHdhcm4iPiR7RS5hbGVydH08c3Bhbj48Yj4ke2MoIk5vbi1yZWZ1bmRhYmxlIiwi5LiN5Y+v5Y+W5raIIil9PC9iPiR7YygiIOKAlCB0aGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCIsIu+8jOatpOS7t+agvOiuouWQjuS4jeiDvemAgOaUuSIpfTwvc3Bhbj48L2xpPmA6YDxsaSBjbGFzcz0icGVyayI+JHtFLmNoZWNrfTxzcGFuPjxiPiR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L2I+JHtlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbD9sKGMoYCB1bnRpbCAke1N0cmluZyhlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCkucmVwbGFjZSgvIC9nLCLCoCIpfWAsYO+8jCR7WHQoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpfSDliY1gKSk6IiJ9PC9zcGFuPjwvbGk+YCxyPWUua2luZD09PSJyb29tIiYmZS5wYXltZW50PT09InByZXBhaWQiP2A8bGkgY2xhc3M9InBlcmsiPiR7RS5sb2NrfTxzcGFuPjxiPiR7YygiUGFpZCBpbiBhZHZhbmNlIiwi6ZyA6aKE5LuYIil9PC9iPiR7YygiIOKAlCBvbiB0aGUgbmV4dCBzdGVwIiwi77yM5LiL5LiA5q2l5LuY5qy+Iil9PC9zcGFuPjwvbGk+YDoiIjtyZXR1cm5gCiAgICA8ZGl2IGNsYXNzPSJyb3cgbGluZSI+CiAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke3QmJkF0KGUuc3VwcGxpZXIpP2A8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7bChBdChlLnN1cHBsaWVyKS5uYW1lKX08L3NwYW4+IGA6IiJ9JHtsKGUua2luZD09PSJyb29tIj9bbj8iIjplLmhvdGVsTmFtZSxuPyIiOmVpKGUuc3RheSxlLmhvdXJseSksZS5kZXRhaWw/WHQoZS5kZXRhaWwpOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpOmAke2UuaG90ZWxOYW1lfSR7ZS5kZXRhaWw/YCDCtyAke2UuZGV0YWlsfWA6IiJ9YCl9PC9kaXY+CiAgICAgICAgJHtzfHxyP2A8dWwgY2xhc3M9InBlcmtzIj4ke3N9JHtyfTwvdWw+YDoiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwLWxpbmUiPiR7bChlLnRvdGFsKX08L2Rpdj4KICAgICAgICAke2Uua2luZD09PSJyb29tIiYmbmk/YDxkaXYgY2xhc3M9InAtdW5pdCI+JHtjKCJiZWZvcmUgdGF4ZXMiLCLmnKrlkKvnqI7otLkiKX08L2Rpdj5gOiIifQogICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtlLmtpbmQ9PT0icm9vbSImJmUuaG91cmx5P2woQ3QoZS5ob3VybHkuaG91cnMpKTplLmtpbmQ9PT0icm9vbSI/bChjKGAke2UudW5pdH0gYSBuaWdodGAsYOavj+aZmiAke2UudW5pdH1gKSk6bChjKGAke2UudW5pdH0gZWFjaGAsYOavj+S7vSAke2UudW5pdH1gKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPjxzcGFuIGNsYXNzPSJ3bCI+JHtlLmtpbmQ9PT0icm9vbSI/YygiUm9vbXMiLCLpl7TmlbAiKTpjKCJRdWFudGl0eSIsIuaVsOmHjyIpfTwvc3Bhbj4ke1RzKG8sTnVtYmVyKGUua2luZD09PSJleHRyYSI/ZS5vcmRlcmVkPz9lLnF1YW50aXR5Pz8xOmUucXVhbnRpdHk/PzEpLFN0cmluZyhlLnRpdGxlKSl9PC9kaXY+CiAgICA8L2Rpdj5gfSxFaT0oZSx0KT0+YDxkaXYgY2xhc3M9InN1bXMiPgogICAgIDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHshQXJyYXkuaXNBcnJheShlLmxpbmVzKXx8ZS5saW5lcy5zb21lKG49Pm4ua2luZD09PSJleHRyYSIpP2MoIlJvb21zIGFuZCBhZGQtb25zIiwi5oi/6LS55ZKM6ZmE5Yqg6aG555uuIik6YygiUm9vbXMiLCLmiL/otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUuc3VidG90YWwpfTwvc3Bhbj48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7YygiVGF4ZXMgYW5kIGZlZXMiLCLnqI7otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUudGF4ZXNBbmRGZWVzPT09IkluY2x1ZGVkIj9jKCJJbmNsdWRlZCIsIuW3suWQqyIpOmUudGF4ZXNBbmRGZWVzKX08L3NwYW4+PC9kaXY+CiAgICAgJHtlLm1lbWJlclNhdmluZz9gPGRpdiBjbGFzcz0ic3VtIGdvb2QiPjxzcGFuPiR7bChjKGAke2UubWVtYmVyU2F2aW5nLnRpZXJ9IG1lbWJlciByYXRlYCxgJHtlLm1lbWJlclNhdmluZy50aWVyfeS8muWRmOS7t2ApKX08L3NwYW4+PHNwYW4+4oiSICR7bChlLm1lbWJlclNhdmluZy5zYXZlZCl9PC9zcGFuPjwvZGl2PmA6IiJ9CiAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2wodCl9PHNtYWxsPiR7YygiVGF4ZXMgYW5kIGZlZXMgaW4iLCLlkKvnqI7otLkiKX08L3NtYWxsPjwvc3Bhbj48c3Bhbj4ke2woZS50b3RhbCl9PC9zcGFuPjwvZGl2PgogICAgICR7ZS5tZW1iZXJTYXZpbmc/YDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtjKCJQb2ludHMgdGhpcyBlYXJucyIsIuWPr+W+l+enr+WIhiIpfTwvc3Bhbj48c3Bhbj4ke2woTnVtYmVyKGUubWVtYmVyU2F2aW5nLnBvaW50cykudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfTwvc3Bhbj48L2Rpdj5gOiIifQogICA8L2Rpdj5gLCRfPWU9PmA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5zYW5kYm94P2MoYFRoaXMgaXMgYSB0ZXN0IGVudmlyb25tZW50LiBCb29raW5nIGhlcmUgbWFrZXMgYSBzaW11bGF0ZWQgYm9va2luZywgbm90IGEgJHtlLm5hbWV9IHJlc2VydmF0aW9uLCBhbmQgbm90aGluZyBpcyBwYWlkLmAsYOi/meaYr+a1i+ivleeOr+Wig++8muWcqOi/memHjOmihOiuouWPquS8mueUn+aIkOaooeaLn+iuouWNle+8jOS4jeaYryR7dWUoZS5uYW1lKX3nmoTnnJ/lrp7pooTorqLvvIzkuZ/kuI3ku5jmrL7jgIJgKTplLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCI/YyhgTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIEJvb2tpbmcgbWFrZXMgYSByZXNlcnZhdGlvbiB3aXRoICR7ZS5uYW1lfSwgcGFpZCBhdCB0aGUgaG90ZWwsIGFuZCBnaXZlcyB5b3UgYSBjb25maXJtYXRpb24gY29kZS5gLGDov5nph4zkuI3miaPmrL7jgILpooTorqLkvJrlnKgke3VlKGUubmFtZSl955Sf5oiQ5LiA56yU5Yiw5bqX5LuY5qy+55qE6K6i5Y2V77yM5bm257uZ5L2g5LiA5Liq56Gu6K6k56CB44CCYCk6ZS5kZW1vP2MoYE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogcmVxdWVzdGluZyBhIGJvb2tpbmcgZ2l2ZXMgeW91IGEgY29uZmlybWF0aW9uIGNvZGUsIGJ1dCAke2UubmFtZX0gZG9lcyBub3QgcmVjZWl2ZSBpdCBhbmQgbm8gcm9vbSBpcyBoZWxkLmAsYOi/memHjOS4jeaJo+asvuOAgui/meaYr+a8lOekuu+8muaPkOS6pOWQjuS8muW+l+WIsOehruiupOegge+8jOS9hiR7dWUoZS5uYW1lKX3kuI3kvJrmlLbliLDvvIzkuZ/kuI3kvJrkuLrkvaDkv53nlZnmiL/pl7TjgIJgKTpjKGBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4gUmVxdWVzdGluZyBhIGJvb2tpbmcgYXNrcyAke2UubmFtZX0gdG8gaG9sZCB0aGUgcm9vbXMgYW5kIGdpdmVzIHlvdSBhIGNvbmZpcm1hdGlvbiBjb2RlLmAsYOi/memHjOS4jeaJo+asvuOAguaPkOS6pOWQjiR7dWUoZS5uYW1lKX3kvJrkuLrkvaDkv53nlZnmiL/pl7TvvIzlubbnu5nkvaDkuIDkuKrnoa7orqTnoIHjgIJgKSl9PC9kaXY+YCxSaT1lPT5lLmxlbmd0aDwyP2VbMF0/PyIiOmAke2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlW2UubGVuZ3RoLTFdfWAsa189ZT0+e2NvbnN0IHQ9c3UoZSk7aWYodC5sZW5ndGg+MSl7Y29uc3Qgbj10LmluY2x1ZGVzKGN0KT9jdDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBUaGVzZSBzdGF5cyBhcmUgd2l0aCAke1JpKHQubWFwKG89PlVlKG8pLm5hbWUpKX0uIEVhY2ggZ3JvdXAncyBhcmUgYm9va2VkIG9uIHRoZWlyIG93bi5gLGDov5nkupvkvY/lrr/liIblsZ4ke1JpKHQubWFwKG89PlVlKG8pLm5hbWUpKX3vvIzmr4/kuKrpm4blm6LnmoTopoHliIblvIDpooTorqLjgIJgKSl9PC9kaXY+YCwuLi50Lm1hcChvPT57Y29uc3Qgcz1VZShvKTtyZXR1cm5gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28ke24mJm4hPT1vPyIgcXVpZXQiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLWJvb2siIGRhdGEtZ3JvdXA9IiR7bChvKX0iPiR7bChjKGBCb29rIHRoZSAke3MubmFtZX0gc3RheXNgLGDpooTorqIke3MubmFtZX3nmoTkvY/lrr9gKSl9PC9idXR0b24+PC9kaXY+JHskXyhzKX1gfSksbj9PaSghMCxVZShuKSk6IiJdfXJldHVybltPaSghMCxVZSh0WzBdKSldfSxmdT0oKT0+VWUoY3R8fHN1KFA/LmxpbmVzPz9bXSlbMF0pLHdfPWU9Pntjb25zdCB0PWUubGluZXM/P1tdO2lmKG5pPSEhZS50YXhlc0FuZEZlZXMmJmUudGF4ZXNBbmRGZWVzIT09IkluY2x1ZGVkIix0Lmxlbmd0aD09PTApcmV0dXJuW2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGUgdHJpcCBpcyBlbXB0eS4iLCLooYznqIvph4zov5jmsqHmnInlhoXlrrnjgIIiKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtsKGMoYEJyb3dzZSAke2tlP2Bob3RlbHMgb24gJHtGZX1gOmAke0ZlfSBob3RlbHNgfWAsdWUoRmUpPT09IumFkuW6lyI/Iua1j+iniOWFqOmDqOmFkuW6lyI6YOa1j+iniCR7RmV955qE6YWS5bqXYCkpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpO2NvbnN0IG49Wy4uLm5ldyBTZXQodC5tYXAoaT0+U3RyaW5nKGkuZGF5Pz8iIikpKV0uc29ydCgpLG89dC5maWx0ZXIoaT0+aS5raW5kPT09InJvb20iKSxzPVsuLi5uZXcgU2V0KG8ubWFwKGk9PlN0cmluZyhpLmhvdGVsTmFtZT8/IiIpKSldLmZpbHRlcihCb29sZWFuKSxyPXMubGVuZ3RoPT09MSYmbmV3IFNldChvLm1hcChpPT5gJHtpLnN0YXk/LmNoZWNrSW59fCR7aS5zdGF5Py5jaGVja091dH18JHtpLmhvdXJseT8uc3RhcnQ/PyIifWApKS5zaXplPT09MTtyZXR1cm5bYDxkaXYgY2xhc3M9InJldmlldy1oIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtjKCJSZXZpZXcgYW5kIGJvb2siLCLmoLjlr7nlubbpooTorqIiKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7cy5sZW5ndGg9PT0xP1p0KHNbMF0pOmwocy5sZW5ndGg/YyhgJHtzLmxlbmd0aH0gaG90ZWxzYCxgJHtzLmxlbmd0aH0g5a626YWS5bqXYCk6YyhgJHt0Lmxlbmd0aH0gJHt0Lmxlbmd0aD09PTE/Iml0ZW0iOiJpdGVtcyJ9YCxgJHt0Lmxlbmd0aH0g6aG5YCkpfTwvZGl2PjwvZGl2PmAscj90aShvWzBdPy5zdGF5LG9bMF0/LmhvdXJseSk6IiIsbi5tYXAoaT0+YAogICAgICAke2kmJm4ubGVuZ3RoPjE/YDxkaXYgY2xhc3M9ImRheSI+JHtsKF9lKGkpKX08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJyb3dzIj4ke3QuZmlsdGVyKGE9PlN0cmluZyhhLmRheT8/IiIpPT09aSkubWFwKGE9PnlfKGEsc3UodCkubGVuZ3RoPjEscikpLmpvaW4oIiIpfTwvZGl2PmApLmpvaW4oIiIpLChlLmRyb3BwZWQ/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9ImVyciI+JHtlLmRyb3BwZWQubWFwKGk9PmAke2woaS50aXRsZSl9OiAke2woaS53aHkpfWApLmpvaW4oIjxicj4iKX08L2Rpdj5gOiIiLC4uLkFycmF5LmlzQXJyYXkoZS5ncm91cHMpJiZlLmdyb3Vwcy5sZW5ndGg+MT9bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBQcmljZWQgaW4gJHsoZS5jdXJyZW5jaWVzPz9bXSkuam9pbigiIGFuZCAiKX0sIHNlcGFyYXRlbHkuIE5vdGhpbmcgaGVyZSBjb252ZXJ0cyBvbmUgaW50byB0aGUgb3RoZXI7IGVhY2ggaG90ZWwgaXMgYm9va2VkIGFuZCBwYWlkIGluIGl0cyBvd24uYCxg5YiG5Yir5LulICR7KGUuY3VycmVuY2llcz8/W10pLmpvaW4oIuOAgSIpfSDorqHku7fvvIzov5nph4zkuI3lgZrmjaLnrpfvvJvmr4/lrrbphZLlupfmjInoh6rlt7HnmoTluIHnp43pooTorqLlkozku5jmrL7jgIJgKSl9PC9kaXY+YCwuLi5lLmdyb3Vwcy5tYXAoaT0+RWkoaSxpLmdvZXNXaXRoQVN0YXk/YyhgSW4gJHtpLmN1cnJlbmN5fSwgZ29lcyB3aXRoIGEgc3RheSAtIG5vdCBpbiB0aGUgdG90YWxgLGAke2kuY3VycmVuY3l977yM6ZqP5L2P5a6/5LiA6LW36K6i77yM5LiN6K6h5YWl5oC75Lu3YCk6YyhgVG90YWwgaW4gJHtpLmN1cnJlbmN5fWAsYCR7aS5jdXJyZW5jeX0g5oC75Lu3YCkpKV06W0VpKGUsYygiVG90YWwiLCLmgLvku7ciKSldLHJlfHwhSm8oInNpZ25JbiIpPyIiOmA8ZGl2IGNsYXNzPSJtZW1iZXItb2ZmZXIiPiR7RS50YWd9PHNwYW4+JHtsKGMoYEEgJHt6aXx8RmV9IG1lbWJlcj9gLGAke3ppfHxGZX3kvJrlkZjvvJ9gKSl9IDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stc2lnbi1pbiI+JHtjKCJTaWduIGluIGZvciB0aGUgbWVtYmVyIHJhdGUiLCLnmbvlvZXkuqvkvJrlkZjku7ciKX08L2J1dHRvbj48L3NwYW4+PC9kaXY+JHtDcygpfWAsLi4uQXJyYXkuaXNBcnJheShlLm5lZWRzUm9vbSkmJmUubmVlZHNSb29tLmxlbmd0aD9lLm5lZWRzUm9vbS5tYXAoaT0+YDxkaXYgY2xhc3M9ImFza2VkIj4KICAgICAgICAgICAgIDxiPiR7YygiR29lcyB3aXRoIGEgc3RheSIsIumcgOmaj+S9j+Wuv+S4gOi1t+iuoiIpfTwvYj4KICAgICAgICAgICAgIDxzcGFuPiR7bChjKGAkeyhpLmV4dHJhcz8/W10pLmpvaW4oIiBhbmQgIil9IGlzICR7aS5ob3RlbE5hbWV9J3Mgc2VydmljZSBmb3IgaXRzIGd1ZXN0cywgc28gaXQgaXMgYm9va2VkIHdpdGggYSByb29tIHRoZXJlIC0gb3IgYWRkZWQgdG8gYSBib29raW5nIHlvdSBhbHJlYWR5IGhhdmUuYCxgJHsoaS5leHRyYXM/P1tdKS5qb2luKCLjgIEiKX3mmK8ke2kuaG90ZWxOYW1lfeS4uuS9j+WuouaPkOS+m+eahOacjeWKoe+8jOimgeWSjOmCo+mHjOeahOaIv+mXtOS4gOi1t+iuou+8jOaIluWKoOWIsOS9oOW3suacieeahOmihOiuouS4iuOAgmApKX08L3NwYW4+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGkuaG90ZWxJZCl9Ij4ke2woYyhgUm9vbXMgYXQgJHtpLmhvdGVsTmFtZX1gLGAke2kuaG90ZWxOYW1lfeeahOaIv+mXtGApKX08L2J1dHRvbj4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj5gKTpbLi4ua18odCldXS5qb2luKCIiKX0sX189W3tpZDoia2luZy1iZWQiLGxhYmVsOiJLaW5nIGJlZCIsemg6IuWkp+W6iiJ9LHtpZDoidHdpbi1iZWRzIixsYWJlbDoiVHdpbiBiZWRzIix6aDoi5Y+M5bqKIn0se2lkOiJoaWdoLWZsb29yIixsYWJlbDoiSGlnaCBmbG9vciIsemg6IumrmOalvOWxgiJ9LHtpZDoibG93LWZsb29yIixsYWJlbDoiTG93IGZsb29yIix6aDoi5L2O5qW85bGCIn0se2lkOiJxdWlldC1yb29tIixsYWJlbDoiUXVpZXQgcm9vbSIsemg6IuWuiemdmeaIv+mXtCJ9LHtpZDoiY29ubmVjdGluZy1yb29tcyIsbGFiZWw6IkNvbm5lY3Rpbmcgcm9vbXMiLHpoOiLov57pgJrmiL8ifSx7aWQ6ImVhcmx5LWNoZWNrLWluIixsYWJlbDoiRWFybHkgY2hlY2staW4iLHpoOiLmj5DliY3lhaXkvY8ifSx7aWQ6ImxhdGUtYXJyaXZhbCIsbGFiZWw6IkFycml2aW5nIGxhdGUiLHpoOiLmmZrliLAifSx7aWQ6ImFjY2Vzc2libGUtcm9vbSIsbGFiZWw6IkFjY2Vzc2libGUgcm9vbSIsemg6IuaXoOmanOeijeaIvyJ9XSxBcz1lPT57Y29uc3QgdD1fXy5maW5kKG49Pm4uaWQ9PT1lKTtyZXR1cm4gdD9jKHQubGFiZWwsdC56aCk6ZX0sU189eyJraW5nLWJlZCI6InR3aW4tYmVkcyIsInR3aW4tYmVkcyI6ImtpbmctYmVkIiwiaGlnaC1mbG9vciI6Imxvdy1mbG9vciIsImxvdy1mbG9vciI6ImhpZ2gtZmxvb3IifSxUXz1be2VuOiJCZWQiLHpoOiLluorlnosiLGlkczpbImtpbmctYmVkIiwidHdpbi1iZWRzIl19LHtlbjoiRmxvb3IiLHpoOiLmpbzlsYIiLGlkczpbImhpZ2gtZmxvb3IiLCJsb3ctZmxvb3IiXX0se2VuOiJBbHNvIix6aDoi5YW25LuWIixpZHM6WyJxdWlldC1yb29tIiwiY29ubmVjdGluZy1yb29tcyIsImVhcmx5LWNoZWNrLWluIiwiYWNjZXNzaWJsZS1yb29tIl19XSx6Xz1bIjEyOjAwIiwiMTQ6MDAiLCIxNjowMCIsIjE4OjAwIiwiMjA6MDAiLCIyMjowMCIsIjIzOjMwIl07bGV0IFRlPW51bGw7Y29uc3QgT2k9KGU9ITEsdD1mdSgpKT0+e2NvbnN0IG49VGU/VGUucmVxdWVzdHM6cmU/LnByZWZlcmVuY2VzPz9bXSxvPVA/LnZpZXc9PT0idHJpcCImJiEoQXJyYXkuaXNBcnJheShQLmdyb3VwcykmJlAuZ3JvdXBzLmxlbmd0aD4xKT9TdHJpbmcoUC50b3RhbD8/IiIpOiIiLHM9KFA/LmxpbmVzPz9bXSkuZmlsdGVyKGY9PmYua2luZD09PSJyb29tIikscj1zLnJlZHVjZSgoZiwkKT0+ZitOdW1iZXIoJC5xdWFudGl0eT8/MSksMCksaT1zLnNvbWUoZj0+Zi5wYXltZW50PT09InByZXBhaWQiKSxhPW5ldyBTZXQocy5tYXAoZj0+YCR7Zi5ob3RlbElkfXwke2Yuc3RheT8uY2hlY2tJbn18JHtmLnN0YXk/LmNoZWNrT3V0fXwke2YuaG91cmx5Py5zdGFydD8/IiJ9YCkpLnNpemUsZD1uZXcgU2V0KHMubWFwKGY9PlN0cmluZyhmLmhvdGVsSWQpKSkuc2l6ZT09PWE/YyhgYWxsICR7YX0gaG90ZWxzYCxg5YWo6YOoICR7YX0g5a62YCk6YyhgYWxsICR7YX0gc3RheXNgLGDlhajpg6ggJHthfSDmrrXkvY/lrr9gKSxwPWk/YygiQ29udGludWUgdG8gcGF5bWVudCIsIuWOu+S7mOasviIpOmE+MT90LnNhbmRib3g/YyhgVGVzdC1ib29rICR7ZH1gLGDmtYvor5XpooTorqIke2R9YCk6YyhgQm9vayAke2R9YCxg6aKE6K6iJHtkfWApOnQuc2FuZGJveD9jKCJNYWtlIGEgdGVzdCBib29raW5nIiwi5o+Q5Lqk5rWL6K+V6aKE6K6iIik6dC5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwiP3I+MT9jKGBCb29rICR7cn0gcm9vbXNgLGDpooTorqIgJHtyfSDpl7RgKTpjKCJCb29rIHRoaXMgcm9vbSIsIumihOiuoui/memXtOaIvyIpOnQuZGVtbz9jKCJSZXF1ZXN0IGJvb2tpbmciLCLmj5DkuqTpooTorqIiKTpyPjE/YyhgSG9sZCAke3J9IHJvb21zYCxg5L+d55WZICR7cn0g6Ze0YCk6YygiSG9sZCB0aGlzIHJvb20iLCLkv53nlZnov5npl7TmiL8iKSxoPVRlPy5hcnJpdmluZ0F0Pz8iIjtyZXR1cm5gCiAgPGRpdiBjbGFzcz0iZm9ybSIgaWQ9Imd1ZXN0IiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGgzIGNsYXNzPSJmb3JtLWgiPiR7YygiV2hvIGlzIHN0YXlpbmciLCLlhaXkvY/kurrkv6Hmga8iKX08L2gzPgogICAgPGxhYmVsPiR7YygiRnVsbCBuYW1lIiwi5aeT5ZCNIil9PGlucHV0IGlkPSJnbmFtZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkFzIGl0IHNob3VsZCBhcHBlYXIgb24gdGhlIGJvb2tpbmciLCLkuI7or4Hku7bkuIDoh7QiKX0iIHZhbHVlPSIke2woVGU/Lm5hbWU/PyIiKX0iPjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSIke3QucGhvbmVSZXF1aXJlZD8idHdvIjoib25lIn0iPgogICAgICA8bGFiZWw+JHtjKCJFbWFpbCIsIumCrueusSIpfTxpbnB1dCBpZD0iZ21haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBjb25maXJtYXRpb24iLCLmjqXmlLbnoa7orqTkv6Hmga8iKX0iIHZhbHVlPSIke2woVGU/LmVtYWlsPz8iIil9Ij48L2xhYmVsPiR7dC5waG9uZVJlcXVpcmVkP2AKICAgICAgPGxhYmVsPiR7YygiUGhvbmUiLCLmiYvmnLrlj7ciKX08aW5wdXQgaWQ9ImdwaG9uZSIgdHlwZT0idGVsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBob3RlbCB0byByZWFjaCB5b3UiLCLmlrnkvr/phZLlupfogZTns7vkvaAiKX0iIHZhbHVlPSIke2woVGU/LnBob25lPz8iIil9Ij48L2xhYmVsPmA6IiJ9CiAgICA8L2Rpdj4KICAgIDxkZXRhaWxzIGNsYXNzPSJhc2tzIiR7bi5sZW5ndGh8fFRlPy5ub3Rlc3x8aD8iIG9wZW4iOiIifT4KICAgICAgPHN1bW1hcnk+JHtjKCJSZXF1ZXN0cyBmb3IgdGhlIGhvdGVsIiwi57uZ6YWS5bqX55qE6ZyA5rGCIil9IDxzbWFsbD4ke2MoIm9wdGlvbmFsIiwi6YCJ5aGrIil9PC9zbWFsbD48L3N1bW1hcnk+CiAgICAgIDxkaXYgY2xhc3M9ImFza3MtYm9keSI+CiAgICAgICAgJHtUXy5tYXAoZj0+YDxkaXYgY2xhc3M9ImFzay1ncm91cCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YyhmLmVuLGYuemgpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YyhmLmVuLGYuemgpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke2YuaWRzLm1hcCgkPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBhc2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hc2s9IiR7bCgkKX0iIGFyaWEtcHJlc3NlZD0iJHtuLmluY2x1ZGVzKCQpPyJ0cnVlIjoiZmFsc2UifSI+JHtsKEFzKCQpKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj4KICAgICAgICA8L2Rpdj5gKS5qb2luKCIiKX0KICAgICAgICA8ZGl2IGNsYXNzPSJhc2stZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkFycml2aW5nIGFyb3VuZCIsIumihOiuoeWIsOW6lyIpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiQXJyaXZpbmcgYXJvdW5kIiwi6aKE6K6h5Yiw5bqXIil9PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7el8ubWFwKGY9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFycml2ZT0iJHtmfSIgYXJpYS1wcmVzc2VkPSIke2g9PT1mPyJ0cnVlIjoiZmFsc2UifSI+JHtmPT09IjIzOjMwIj9jKCJBZnRlciAyMjowMCIsIjIyOjAwIOS7peWQjiIpOmZ9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+CiAgICAgICAgICA8aW5wdXQgaWQ9Imd0aW1lIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIke2woaCl9Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8bGFiZWw+JHtjKCJBbnl0aGluZyBlbHNlIiwi5YW25LuW6ZyA5rGCIil9PGlucHV0IGlkPSJnbm90ZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkluIHlvdXIgb3duIHdvcmRzIiwi55So5L2g6Ieq5bex55qE6K+d5YaZIil9IiB2YWx1ZT0iJHtsKFRlPy5ub3Rlcz8/IiIpfSI+PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgVGhlc2UgZ28gdG8gdGhlIGRlc2sgYXMgcmVxdWVzdHMuICR7dC5uYW1lfSBtZWV0cyB3aGF0IGl0IGNhbiBvbiB0aGUgZGF5OyBub25lIG9mIGl0IGlzIGhlbGQuYCxg6L+Z5Lqb5Lya5L2c5Li66ZyA5rGC6L2s57uZ5YmN5Y+w77yMJHt1ZSh0Lm5hbWUpfeW9k+WkqeWwvemHj+a7oei2s++8jOS9huS4jeS9nOS/neivgeOAgmApKX08L2Rpdj4KICAgICAgICAke3JlP2A8bGFiZWwgY2xhc3M9InJlbWVtYmVyIj48aW5wdXQgaWQ9ImdyZW1lbWJlciIgdHlwZT0iY2hlY2tib3giJHtUZT8ucmVtZW1iZXI/IiBjaGVja2VkIjoiIn0+ICR7bChjKGBSZW1lbWJlciB0aGUgYmVkLCBmbG9vciBhbmQgcm9vbSByZXF1ZXN0cyBvbiBteSAke3JlLnByb2dyYW1tZT8/Im1lbWJlcnNoaXAifSBmb3IgbmV4dCB0aW1lYCxg5oqK5bqK5Z6L44CB5qW85bGC5ZKM5oi/6Ze06ZyA5rGC6K6w5Zyo5oiR55qEJHtyZS5wcm9ncmFtbWU/PyLkvJrlkZgifei0puaIt+mHjO+8jOS4i+asoeiHquWKqOW4puS4imApKX08L2xhYmVsPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgPC9kZXRhaWxzPgogICAgPGJ1dHRvbiBjbGFzcz0iZ28gYmlnIGJsb2NrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29rIj4ke3B9JHtvP2A8c3BhbiBjbGFzcz0icHJpY2UtaW4iPiR7bChvKX08L3NwYW4+YDoiIn08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9InRydXN0Ij4ke0UubG9ja308c3Bhbj4ke2woaT90LnNhbmRib3g/YygiTmV4dCwgYSBwYXltZW50IHBhZ2UgaW4gdGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzLiBDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgdGhlcmUsIGFuZCBub3RoaW5nIGlzIGJvb2tlZCB1bnRpbCBpdCBpcyBwYWlkLiIsIuS4i+S4gOatpeaYr+a1i+ivleaooeW8j+eahOS7mOasvumhte+8jOS4jeS8muecn+WunuaJo+asvuOAguWNoeWPt+WPquWcqOS7mOasvumhteWhq+WGme+8jOS7mOasvuaIkOWKn+WJjeS4jeS8mumihOiuouOAgiIpOmMoYE5leHQsIGEgc2VjdXJlIHBheW1lbnQgcGFnZTogY2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IHRoZXJlLiBOb3RoaW5nIGlzIGJvb2tlZCB3aXRoICR7dC5uYW1lfSB1bnRpbCBpdCBpcyBwYWlkLCBhbmQgaWYgaXQgY2Fubm90IGJlLCBhbGwgb2YgaXQgZ29lcyBiYWNrLmAsYOS4i+S4gOatpeaYr+WuieWFqOS7mOasvumhte+8jOWNoeWPt+WPquWcqOmCo+mHjOWhq+WGmeOAguS7mOasvuaIkOWKn+WJjeS4jeS8muWcqCR7dWUodC5uYW1lKX3pooTorqLvvJvorqLkuI3miJDkvJrlhajpop3pgIDlm57jgIJgKTp0LnNhbmRib3g/YygiQSB0ZXN0IGJvb2tpbmc6IG5vdGhpbmcgaXMgaGVsZCBhbmQgbm90aGluZyBpcyBwYWlkLiIsIua1i+ivlemihOiuou+8muS4jeS/neeVmeaIv+mXtO+8jOS5n+S4jeS7mOasvuOAgiIpOnQuYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsIj9jKGBObyBjYXJkIGlzIHRha2VuIGFuZCBub3RoaW5nIGlzIGNoYXJnZWQuIEEgcmVzZXJ2YXRpb24gd2l0aCAke3QubmFtZX0sIHBhaWQgYXQgdGhlIGhvdGVsLmAsYOS4jeeUqOe7keWNoe+8jOS5n+S4jeaJo+asvuOAgui/meaYr+WcqCR7dWUodC5uYW1lKX3nmoTpooTorqLvvIzliLDlupfku5jmrL7jgIJgKTp0LmRlbW8/YyhgTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogJHt0Lm5hbWV9IGRvZXMgbm90IHJlY2VpdmUgaXQgYW5kIG5vIHJvb20gaXMgaGVsZC5gLGDkuI3nlKjnu5HljaHvvIzkuZ/kuI3miaPmrL7jgILov5nmmK/mvJTnpLrvvIwke3VlKHQubmFtZSl95LiN5Lya5pS25Yiw77yM5Lmf5LiN5L+d55WZ5oi/6Ze044CCYCk6YygiTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBZb3UgcHJlc2VudCBhIGNhcmQgYXQgY2hlY2staW4uIiwi5LiN55So57uR5Y2h77yM5Lmf5LiN5omj5qy+44CC5YWl5L2P5pe25Zyo5YmN5Y+w5Ye656S66ZO26KGM5Y2h5Y2z5Y+v44CCIikpfTwvc3Bhbj48L2Rpdj4KICA8L2Rpdj5gfSxOaT1lPT5lLmxlbmd0aD4xP2Ake2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlLmF0KC0xKX1gOmVbMF0/PyIiLHhfPWU9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2wob2U9PT0iemgiPyLpooTorqLpnIDopoHloavlhpnlp5PlkI3lkozpgq7nrrHjgIIiOmBUaGUgYm9va2luZyBuZWVkcyAke05pKGUubWlzc2luZz8/W10pfHwiYSBuYW1lIGFuZCBhbiBlbWFpbCJ9LmApfTwvZGl2PmAsT2koITApXS5qb2luKCIiKSxJXz1lPT57Y29uc3QgdD1lLm1lbWJlcj8/e307cmV0dXJuW2A8ZGl2IGNsYXNzPSJjb25mIj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bCh0LnByb2dyYW1tZSl9PC9kaXY+CiAgICAgICAke3QubmFtZT9gPGRpdiBjbGFzcz0id2hlcmUiPiR7bCh0Lm5hbWUpfTwvZGl2PmA6YDxkaXYgY2xhc3M9IndoZXJlIj4ke2MoIlNpZ25lZCBpbiIsIuW3sueZu+W9lSIpfTwvZGl2PmB9CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIiBzdHlsZT0iZm9udC1zaXplOjIwcHgiPiR7bCh0LnRpZXI/Lm5hbWUpfTwvZGl2PgogICAgICAgJHt0eXBlb2YgdC5wb2ludHM9PSJudW1iZXIiP2A8ZGl2IGNsYXNzPSJ3aGVuIj4ke2woYyhgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0gcG9pbnRzYCxgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0g56ev5YiGYCkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0idW5wYWlkIj48Yj4ke2woYyhgJHtNYXRoLnJvdW5kKCh0LnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSUgb2ZmYCxg5LyY5oOgICR7TWF0aC5yb3VuZCgodC50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCkpfTwvYj48c3Bhbj4ke2woYyhgUm9vbSByYXRlcyBhbmQgdHJpcCB0b3RhbHMgbm93IHNob3cgdGhlICR7dC50aWVyPy5uYW1lfSBtZW1iZXIgcmF0ZS4gTm90aGluZyBpcyBjaGFyZ2VkIGJ5IHNpZ25pbmcgaW4uYCxg5oi/5Lu35ZKM6KGM56iL5oC75Lu35bey5oyJJHt0LnRpZXI/Lm5hbWV95Lya5ZGY5Lu35pi+56S644CC55m75b2V5LiN5Lya5omj5qy+44CCYCkpfTwvc3Bhbj48L2Rpdj5gLCh0LnByZWZlcmVuY2VzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJhc2tlZCI+CiAgICAgICAgICAgPGI+JHtjKCJTYXZlZCBmb3IgeW91ciBuZXh0IHN0YXlzIiwi5bey5Li65LiL5qyh5YWl5L2P5L+d5a2YIil9PC9iPgogICAgICAgICAgIDxzcGFuPiR7bChjKGAke3QucHJlZmVyZW5jZXMubWFwKEFzKS5qb2luKCIsICIpfSAtIHRpY2tlZCBvbiB0aGUgYm9va2luZyBmb3JtLCBhbmQgYXNrZWQgZm9yIG9ubHkgd2hlbiB5b3UgYm9vayB3aXRoIHRoZW0uYCxgJHt0LnByZWZlcmVuY2VzLm1hcChBcykuam9pbigi44CBIil977yM6aKE6K6i5pe25Lya6Ieq5Yqo5Yu+6YCJ77yM5Y+q5Zyo5L2g55So5a6D5Lus6aKE6K6i5pe25omN5o+Q5Ye644CCYCkpfTwvc3Bhbj4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZm9yZ2V0LXByZWZzIj4ke2MoIkZvcmdldCB0aGVtIiwi5riF6Zmk6L+Z5Lqb5YGP5aW9Iil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiRmluZCBhIGhvdGVsIiwi5om+6YWS5bqXIil9PC9idXR0b24+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ic2lnbi1vdXQiPiR7YygiU2lnbiBvdXQiLCLpgIDlh7rnmbvlvZUiKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gXS5qb2luKCIiKX0sQV89KCk9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2MoIk5vIG1lbWJlcnNoaXAgbWF0Y2hlcyB0aGF0IG51bWJlciBhbmQgc3VybmFtZS4gQ2hlY2sgYm90aCBhcyB0aGV5IGFyZSBwcmludGVkIOKAlCBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCB0aGlzIGNvbm5lY3RvciBuZXZlciBhc2tzIGZvciBhIHBhc3N3b3JkLiIsIuS8muWRmOWPt+WSjOWnk+awj+WvueS4jeS4iuOAguivt+aMieWNoeS4iuWNsOeahOaguOWvueS4pOmhueWNs+WPr++8jOi/memHjOS7juS4jeimgeaxguWvhueggeOAgiIpfTwvZGl2PmAsQ3MoITApXS5qb2luKCIiKSxDcz0oZT0hMSk9PmAKICA8ZGl2IGNsYXNzPSJmb3JtIiBpZD0ic2lnbmluIiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGRpdiBjbGFzcz0idHdvIj4KICAgICAgPGxhYmVsPiR7YygiTWVtYmVyc2hpcCBudW1iZXIiLCLkvJrlkZjlj7ciKX08aW5wdXQgaWQ9Im1udW0iIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJBcyBpdCBpcyBwcmludGVkIiwi5oyJ5Y2h5LiK5Y2w55qE5aGr5YaZIil9Ij48L2xhYmVsPgogICAgICA8bGFiZWw+JHtjKCJTdXJuYW1lIiwi5aeT5rCPIil9PGlucHV0IGlkPSJtc3VyIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiVGhlIHN1cm5hbWUgb24gaXQiLCLljaHkuIrnmoTlp5PmsI8iKX0iPjwvbGFiZWw+CiAgICA8L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJzaWduLWluIj4ke2MoIlNpZ24gaW4iLCLnmbvlvZUiKX08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiTm8gcGFzc3dvcmQgaXMgYXNrZWQgZm9yIGFuZCBub25lIGlzIHN0b3JlZC4gU2lnbmluZyBpbiBzaG93cyB0aGUgbWVtYmVyIHJhdGU7IG5vdGhpbmcgaXMgY2hhcmdlZC4iLCLkuI3pnIDopoHlr4bnoIHvvIzkuZ/kuI3kvJrkv53lrZjku7vkvZXlr4bnoIHjgILnmbvlvZXlkI7mmL7npLrkvJrlkZjku7fvvIzkuI3kvJrmiaPmrL7jgIIiKX08L2Rpdj4KICA8L2Rpdj5gLENfPWU9Pntjb25zdCB0PWUucmVxdWVzdGVkPz9bXTtyZXR1cm4gdC5sZW5ndGg/YDxkaXYgY2xhc3M9ImFza2VkJHtlLmFjY2Vzc2liaWxpdHk/IiBmbGFnIjoiIn0iPgogICAgPGI+JHtjKCJSZXF1ZXN0ZWQsIG5vdCBoZWxkIiwi5bey5o+Q5Ye655qE6ZyA5rGC77yI5LiN5L2c5L+d6K+B77yJIil9PC9iPgogICAgJHt0Lm1hcChuPT5gPHNwYW4+JHtsKG4pfTwvc3Bhbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gOiIifSx5ZD1lPT5lLmhvbGRVbnRpbExvY2FsP2MoYCR7ZS5ob2xkVW50aWxMb2NhbH0gKGhvdGVsIHRpbWUpYCxgJHtlLmhvbGRVbnRpbExvY2Fsfe+8iOmFkuW6l+W9k+WcsOaXtumXtO+8iWApOmAke1N0cmluZyhlLmhvbGRVbnRpbD8/IiIpLnNsaWNlKDAsMTYpLnJlcGxhY2UoIlQiLCIgIil9IFVUQ2AsUF89KGUsdCk9Pntjb25zdCBuPXQucGF5bWVudD8/e30se25hbWU6byxzYW5kYm94OnN9PVVlKHQuc3VwcGxpZXIpLHI9U3RyaW5nKG4ucGF5QnlMb2NhbD8/IiIpO3JldHVybltgPGRpdiBjbGFzcz0iYm9va2VkIHBheSIgcm9sZT0ic3RhdHVzIj4KICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIHBheSI+JHtFLmxvY2t9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2MoIlBheSB0byBmaW5pc2ggYm9va2luZyIsIuS7mOasvuWQjuWujOaIkOmihOiuoiIpfTwvaDI+CiAgICAgICA8cCBjbGFzcz0iYm9va2VkLXMiPiR7bChjKGBOb3RoaW5nIGlzIGJvb2tlZCB5ZXQuIE9uY2UgdGhlIHBheW1lbnQgZ29lcyB0aHJvdWdoLCB0aGUgcm9vbSBpcyBib29rZWQgd2l0aCAke299LmAsYOeOsOWcqOi/mOayoeaciemihOiuouOAguS7mOasvuaIkOWKn+WQju+8jOaIv+mXtOaJjeS8muWcqCR7dWUobyl96K6i5aW944CCYCkpfTwvcD4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXlib3giPgogICAgICAgPGRpdiBjbGFzcz0id2wiPiR7YygiVG8gcGF5IG5vdyIsIumcgOS7mOasviIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0icGF5LWFtb3VudCI+JHtsKG4uYW1vdW50Pz8iIil9PC9kaXY+CiAgICAgICAke24ucGF5Qnk/YDxkaXYgY2xhc3M9InBheS1ieSI+JHtFLmNsb2NrfTxzcGFuPiR7bChyP2MoYFBheSBieSAke3J9YCxg6K+35ZyoICR7cn0g5YmN5LuY5qy+YCk6YygiUGF5IHdpdGhpbiIsIuWJqeS9meaXtumXtCIpKX08YnI+PGIgY2xhc3M9ImNvdW50ZG93biBuYiIgZGF0YS11bnRpbD0iJHtsKG4ucGF5QnkpfSI+JHtsKFpnKFN0cmluZyhuLnBheUJ5KSkpfTwvYj48L3NwYW4+PC9kaXY+YDoiIn0KICAgICAgICR7bi51cmw/YDxidXR0b24gY2xhc3M9ImdvIGJpZyBibG9jayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icGF5IiBkYXRhLXVybD0iJHtsKG4udXJsKX0iIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9IiBkYXRhLXVudGlsPSIke2wobi5wYXlCeT8/IiIpfSI+JHtFLmxvY2t9JHtsKGMoYFBheSAke24uYW1vdW50Pz8iIn0gb24gdGhlIHNlY3VyZSBwYWdlYCxg5Y675a6J5YWo6aG16Z2i5LuY5qy+ICR7bi5hbW91bnQ/PyIifWApKX08L2J1dHRvbj5gOiIifQogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kgcGF5LWNoZWNrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXktY2hlY2siIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIlBhaWQgYWxyZWFkeT8gQ2hlY2sgbm93Iiwi5bey57uP5LuY6L+H5LqG77yf546w5Zyo5Yi35pawIil9PC9idXR0b24+CiAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdCI+JHtFLmxvY2t9PHNwYW4+JHtsKHM/YygiVGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzIC0gdXNlIGEgdGVzdCBjYXJkIG9uIHRoZSBwYXltZW50IHBhZ2UuIENhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSB0aGVyZSwgbmV2ZXIgaGVyZS4iLCLmtYvor5XmqKHlvI/vvJrkuI3kvJrnnJ/lrp7miaPmrL7vvIzor7flnKjku5jmrL7pobXnlKjmtYvor5XljaHjgILljaHlj7flj6rlnKjku5jmrL7pobXloavlhpnvvIzov5nph4zkuI3mlLbpm4bjgIIiKTpjKCJDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgb24gdGhlIHBheW1lbnQgcGFnZSwgbmV2ZXIgaGVyZS4gSWYgdGhlIGhvdGVsIGRvZXMgbm90IGNvbmZpcm0sIGFsbCBvZiBpdCBnb2VzIGJhY2suIiwi5Y2h5Y+35Y+q5Zyo5LuY5qy+6aG15aGr5YaZ77yM6L+Z6YeM5LiN5pS26ZuG44CC5aaC5p6c6YWS5bqX5rKh5pyJ56Gu6K6k77yM5qy+6aG55Lya5YWo6aKd6YCA5Zue44CCIikpfTwvc3Bhbj48L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXktZm9yIj4KICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke1p0KHQuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICR7dGkodC5zdGF5LHQuaG91cmx5KX0KICAgICAgIDxkaXYgY2xhc3M9InJvd3MiPiR7KHQucXVvdGU/LmxpbmVzPz9bXSkubWFwKHFnKS5qb2luKCIiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBSZWZlcmVuY2UgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3IGZvciAke1t0Lmd1ZXN0Py5uYW1lLHQuZ3Vlc3Q/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKX1gLGDnvJblj7cgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3ICR7W3QuZ3Vlc3Q/Lm5hbWUsdC5ndWVzdD8uZW1haWxdLmZpbHRlcihCb29sZWFuKS5qb2luKCLvvIwiKX1gKSl9PC9kaXY+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LEVfPWU9PltlPy5uYW1lLGU/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikubWFwKHQ9PmA8c3BhbiBjbGFzcz0ibmIiPiR7bCh0KX08L3NwYW4+YCkuam9pbignPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiDCtyA8L3NwYW4+JyksWmc9ZT0+e2NvbnN0IHQ9TWF0aC5tYXgoMCxEYXRlLnBhcnNlKGUpLURhdGUubm93KCkpO2lmKCF0KXJldHVybiBjKCJ0aW1lIGlzIHVwIiwi5bey6LaF5pe2Iik7Y29uc3Qgbj1hPT5TdHJpbmcoYSkucGFkU3RhcnQoMiwiMCIpLG89TWF0aC5mbG9vcih0LzM2ZTUpLHM9TWF0aC5mbG9vcih0JTM2ZTUvNmU0KSxyPU1hdGguZmxvb3IodCU2ZTQvMWUzKSxpPW8/YCR7b306JHtuKHMpfToke24ocil9YDpgJHtzfToke24ocil9YDtyZXR1cm4gYyhgJHtpfSBsZWZ0YCxg6L+Y5YmpICR7aX1gKX07c2V0SW50ZXJ2YWwoKCk9Pntmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY291bnRkb3duW2RhdGEtdW50aWxdIikpZS50ZXh0Q29udGVudD1aZyhlLmRhdGFzZXQudW50aWw/PyIiKX0sMWUzKTtsZXQgemU9bnVsbDtjb25zdCBaaT04ZTMsZ3U9KCk9Pnt6ZT8udGltZXImJmNsZWFyVGltZW91dCh6ZS50aW1lciksemU9bnVsbH0sUl89ZT0+dD0+e2NvbnN0IG49KHQ/LmJvb2tpbmdzPz9bXSkuZmluZChvPT5TdHJpbmcoby5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtyZXR1cm4hbnx8IVsiYXdhaXRpbmctcGF5bWVudCIsInJlcXVlc3RlZCIsImNvbmZpcm1lZCJdLmluY2x1ZGVzKFN0cmluZyhuLnN0YXR1cykpP3Q6ey4uLnQsdmlldzoiYm9va2luZyIsYm9va2luZzpuLGJvb2tpbmdzOnZvaWQgMCx0b3RhbDpuLnF1b3RlPy50b3RhbH19LGpnPWU9PntndSgpLGooImxpc3RCb29raW5ncyIsaXQoZSkse3B1c2g6ITEsZm9sZDpSXyhlKX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBjaGVjayB0aGUgcGF5bWVudCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73mn6XliLDku5jmrL7nirbmgIHjgIIiKSkpfSwkZD1lPT4hIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb250ZW50IFtkYXRhLWFjdD0icGF5Il1bZGF0YS1jb2RlPSIke0NTUy5lc2NhcGUoZSl9Il1gKSxidT1lPT57Y29uc3QgdD11ZygibGlzdEJvb2tpbmdzIik7aWYoIXR8fCF6ZXx8emUuY29kZSE9PWUpcmV0dXJuO2lmKCEkZChlKXx8RGF0ZS5ub3coKT56ZS51bnRpbCs2ZTQpe2d1KCk7cmV0dXJufWNvbnN0IG49bz0+e3plPy5jb2RlPT09ZSYmKHplLnRpbWVyPXNldFRpbWVvdXQoKCk9PmJ1KGUpLG8pKX07QWUuY2FsbFNlcnZlclRvb2woe25hbWU6dCxhcmd1bWVudHM6Y2coaXQoZSkpfSkudGhlbihvPT57Y29uc3Qgcz0obz8uc3RydWN0dXJlZENvbnRlbnQ/LmJvb2tpbmdzPz9bXSkuZmluZChyPT5TdHJpbmcoci5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtzJiZzLnN0YXR1cyE9PSJhd2FpdGluZy1wYXltZW50IiYmJGQoZSk/amcoZSk6bihaaSl9KS5jYXRjaCgoKT0+bihaaSoyKSl9LE1nPSgpPT57emUmJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSE9PSJoaWRkZW4iJiYoemUudGltZXImJmNsZWFyVGltZW91dCh6ZS50aW1lciksYnUoemUuY29kZSkpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixNZyk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixNZyk7Y29uc3Qga2Q9ZT0+ZS5sZW5ndGg/YDxzZWN0aW9uIGNsYXNzPSJmYWlsZWQiIGFyaWEtbGFiZWw9IiR7bChjKCJOb3QgYm9va2VkIiwi5pyq6K6i5oiQIikpfSI+CiAgICAgICAgIDxoMyBjbGFzcz0ic2VjIj4ke2woYyhgTm90IGJvb2tlZCAoJHtlLmxlbmd0aH0pYCxg5pyq6K6i5oiQ77yIJHtlLmxlbmd0aH3vvIlgKSl9PC9oMz4KICAgICAgICAgJHtlLm1hcCgodCxuKT0+e2NvbnN0IG89QXJyYXkuaXNBcnJheSh0LmFsdGVybmF0aXZlcyk/dC5hbHRlcm5hdGl2ZXM6W107cmV0dXJuYDxkaXYgY2xhc3M9ImZhaWwiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmYWlsLWgiPiR7RS5lcnJvcn08ZGl2PjxkaXYgY2xhc3M9IndoZXJlIj4ke1p0KFN0cmluZyh0LmhvdGVsTmFtZT8/IiIpKX08L2Rpdj4ke3RpKHQuc3RheSx0LmhvdXJseSl9PC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJmYWlsLXdoeSI+JHtsKElzKHQud2h5LHQuY29kZSx0LmFyZ3MpKX08L3A+CiAgICAgICAgICAgICAgICR7by5sZW5ndGg/YDxkaXYgY2xhc3M9ImZhaWwtYWx0cyI+PGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoIkJvb2thYmxlIGluc3RlYWQsIHRoZSBzYW1lIG5pZ2h0cyIsIuWQjOaXpeacn+i/mOWPr+S7peiuoiIpKX08L2Rpdj4ke28ubWFwKChzLHIpPT5gPGRpdiBjbGFzcz0iYWx0Ij48ZGl2IGNsYXNzPSJhbHQtdCI+PGI+JHtsKHMubmFtZSl9PC9iPjxzbWFsbD4ke2woW3Mucm9vbSxzLnRvdGFsP2MoYCR7cy50b3RhbH0gZm9yIHRoZSBzdGF5YCxg5YWxICR7cy50b3RhbH1gKToiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zbWFsbD48L2Rpdj48YnV0dG9uIGNsYXNzPSJnbyBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLXN3YXA9IiR7bn06JHtyfSI+JHtsKGMoIlRha2UgdGhpcyBpbnN0ZWFkIiwi5o2i5oiQ6L+Z5a62IikpfTwvYnV0dG9uPjwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZhaWwtZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQgc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InJldHJ5LXRyaXAiPiR7bChjKCJUcnkgYWdhaW4iLCLph43or5UiKSl9PC9idXR0b24+JHt0LmNpdHk/YDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtcmVzZWFyY2g9IiR7bn0iPiR7bChjKCJGaW5kIGFub3RoZXIgaG90ZWwiLCLmjaLkuIDlrrYiKSl9PC9idXR0b24+YDoiIn08L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX0KICAgICAgIDwvc2VjdGlvbj5gOiIiLHdkPSgpPT57aWYoVGUpcmV0dXJuO2NvbnN0IGU9UD8/e30sdD1BcnJheS5pc0FycmF5KGUuYm9va2luZ3MpJiZlLmJvb2tpbmdzWzBdPy5ndWVzdHx8ZS5ib29raW5nPy5ndWVzdDshdD8ubmFtZXx8IXQ/LmVtYWlsfHwoVGU9e25hbWU6U3RyaW5nKHQubmFtZSksZW1haWw6U3RyaW5nKHQuZW1haWwpLC4uLnQucGhvbmU/e3Bob25lOlN0cmluZyh0LnBob25lKX06e30sbm90ZXM6IiIsYXJyaXZpbmdBdDoiIixyZXF1ZXN0czpbXSxyZW1lbWJlcjohMX0pfSxPXz1lPT57Y29uc3QgdD1BcnJheS5pc0FycmF5KGUuZmFpbGVkKT9lLmZhaWxlZDpbXTtpZighZS5ib29raW5nJiYhKEFycmF5LmlzQXJyYXkoZS5ib29raW5ncykmJmUuYm9va2luZ3MubGVuZ3RoKSYmdC5sZW5ndGgpcmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQgZW5kZWQiIHJvbGU9InN0YXR1cyI+CiAgICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIj4ke0UuZXJyb3J9PC9kaXY+CiAgICAgICAgIDxoMiBjbGFzcz0iYm9va2VkLXQiPiR7bChjKCJOb3QgYm9va2VkIiwi5rKh6IO96aKE6K6iIikpfTwvaDI+CiAgICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKHQubGVuZ3RoPT09MT9jKCJUaGF0IHN0YXkgY291bGQgbm90IGJlIGJvb2tlZC4gTm90aGluZyB3YXMgY2hhcmdlZC4iLCLov5nkuIDmrrXmsqHog73pooTorqLvvIzmsqHmnInmiaPmrL7jgIIiKTpjKGBOb25lIG9mIHRoZSAke3QubGVuZ3RofSBzdGF5cyBjb3VsZCBiZSBib29rZWQuIE5vdGhpbmcgd2FzIGNoYXJnZWQuYCxgJHt0Lmxlbmd0aH0g5q616YO95rKh6IO96aKE6K6i77yM5rKh5pyJ5omj5qy+44CCYCkpfTwvcD4KICAgICAgIDwvZGl2PmAsa2QodCldLmpvaW4oIiIpO2NvbnN0IG49QXJyYXkuaXNBcnJheShlLmJvb2tpbmdzKSYmZS5ib29raW5ncy5sZW5ndGg/ZS5ib29raW5nczpbZS5ib29raW5nPz97fV0sbz1uLmZpbmQoQz0+Qz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiJiZDPy5wYXltZW50KTtpZihvJiZuLmxlbmd0aD09PTEpcmV0dXJuIFBfKGUsbyk7Y29uc3Qgcz1uLmxlbmd0aD4xLHI9bi5maWx0ZXIoQz0+Qz8ucGVuZGluZykubGVuZ3RoLHtuYW1lOmksYm9va2luZ01vZGU6YSxkZW1vOnUsc2FuZGJveDpkLC4uLnB9PVVlKG5bMF0/LnN1cHBsaWVyKSxoPUM9Pk13KEMpJiYoQz09PSJsaXN0RXh0cmFzIj9wLmV4dHJhczpDPT09ImNoYW5nZUJvb2tpbmciP3AuY2hhbmdlczohMCksZj1DPT5hPT09ImhvbGQiJiYhdSYmKEMuaG9sZFVudGlsTG9jYWx8fEMuaG9sZFVudGlsKT9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke0UuY2xvY2t9PHNwYW4+JHtsKGMoYFRoZSByb29tIGlzIGhlbGQgZm9yIHlvdSB1bnRpbCAke3lkKEMpfS5gLGDmiL/pl7TkuLrkvaDkv53nlZnliLAgJHt5ZChDKX3jgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsJD0oQyxHZSx2dCk9PihuaT0hIUMucXVvdGU/LnRheGVzQW5kRmVlcyYmQy5xdW90ZS50YXhlc0FuZEZlZXMhPT0iSW5jbHVkZWQiLFtDLnBlbmRpbmc/YDxkaXYgY2xhc3M9ImNvbmYgdGlja2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJCZWluZyBjb25maXJtZWQiLCLnoa7orqTkuK0iKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29kZSBwZW5kaW5nIj4ke2MoIkNvZGUgb25jZSBjb25maXJtZWQiLCLnoa7orqTlkI7nu5nlh7rnoa7orqTnoIEiKX08L2Rpdj5gOmA8ZGl2IGNsYXNzPSJjb25mIHRpY2tldCI+CiAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKEMuY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+YCxgCiAgICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke1p0KEMuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICAgJHt0aShDLnN0YXksQy5ob3VybHkpfQogICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVuIj4ke0VfKEMuZ3Vlc3QpfTwvZGl2PgogICAgICAgPC9kaXY+YCxmKEMpLGE9PT0icGF5LWF0LWhvdGVsIiYmQy5zdGF0dXM9PT0icmVxdWVzdGVkIj9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke0UuY2xvY2t9PHNwYW4+JHtsKGMoYFdhaXRpbmcgZm9yICR7aX0gdG8gY29uZmlybSB0aGlzIGJvb2tpbmcg4oCUIHRoYXQgdGFrZXMgdXAgdG8gZWlnaHQgbWludXRlcy4gTXkgYm9va2luZ3Mgc2hvd3Mgd2hlbiBpdCBoYXMuYCxg5q2j5Zyo562JJHt1ZShpKX3noa7orqTov5nnrJTpooTorqLvvIzmnIDlpJrnuqblhavliIbpkp/jgILnoa7orqTlkI7lj6/lnKjigJzmiJHnmoTpooTorqLigJ3ph4znnIvliLDjgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9InJvd3MiPiR7KEMucXVvdGU/LmxpbmVzPz9bXSkubWFwKHFnKS5qb2luKCIiKX08L2Rpdj5gLEMucXVvdGU/LnN1YnRvdGFsJiZDLnF1b3RlPy50YXhlc0FuZEZlZXM/RWkoe3N1YnRvdGFsOkMucXVvdGUuc3VidG90YWwsdGF4ZXNBbmRGZWVzOkMucXVvdGUudGF4ZXNBbmRGZWVzLHRvdGFsOkdlLGxpbmVzOkMucXVvdGUubGluZXM/P1tdfSxjKCJUb3RhbCIsIuaAu+S7tyIpKTpgPGRpdiBjbGFzcz0ibW9uZXktb3V0Ij48c3Bhbj4ke2MoIlRvdGFsIiwi5oC75Lu3Iil9PC9zcGFuPjxzcGFuPiR7bChHZSl9PC9zcGFuPjwvZGl2PmAsQ18odnQpLHM/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgJHtoKCJsaXN0RXh0cmFzIik/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bChDLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJBZGQtb25zIiwi6ZmE5Yqg5pyN5YqhIil9PC9idXR0b24+YDoiIn0KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woQy5jb25maXJtYXRpb25Db2RlKX0iPiR7bChjKGBDYW5jZWwgJHtDLmhvdGVsTmFtZX1gLGDlj5bmtogke0MuaG90ZWxOYW1lfWApKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOiIiXS5qb2luKCIiKSksaz1hPT09InBheS1hdC1ob3RlbCImJm4uc29tZShDPT5DLnN0YXR1cz09PSJyZXF1ZXN0ZWQiKSx6PXM/IiI6blswXT8ucGF5bWVudD8uc3RhdHVzPT09InBhaWQiP1N0cmluZyhuWzBdLnBheW1lbnQuYW1vdW50Pz8iIik6IiIsQT0hcyYmblswXT8ucGF5bWVudD8uc3RhdHVzPT09InBhaWQiLHg9QT9uWzBdPy5zdGF0dXM9PT0iY29uZmlybWVkIj9kP2MoIlRlc3QgYm9va2luZyBwYWlkIGFuZCBib29rZWQiLCLmtYvor5XpooTorqLlt7Lku5jmrL7lubborqLlpb0iKTpjKGBQYWlkIGFuZCBib29rZWQgd2l0aCAke2l9YCxg5bey5LuY5qy+77yMJHt1ZShpKX3lt7Lnoa7orqRgKTpjKGBQYWlkIOKAlCB3YWl0aW5nIGZvciAke2l9IHRvIGNvbmZpcm1gLGDlt7Lku5jmrL7vvIznrYnlvoUke3VlKGkpfeehruiupGApOmQ/YygiVGVzdCBib29raW5nIG1hZGUiLCLmtYvor5XpooTorqLlt7Lmj5DkuqQiKTphPT09InBheS1hdC1ob3RlbCI/az9jKGBTZW50IHRvICR7aX1gLGDlt7Lmj5DkuqTnu5kke3VlKGkpfWApOmMoYEJvb2tlZCB3aXRoICR7aX1gLGDlt7LlnKgke3VlKGkpfemihOiuouaIkOWKn2ApOnU/YygiRGVtbyBib29raW5nIG1hZGUiLCLmvJTnpLrpooTorqLlt7Lmj5DkuqQiKTpjKHM/IlJvb21zIGhlbGQiOiJSb29tIGhlbGQiLCLmiL/pl7Tlt7Lkv53nlZkiKSxUPVN0cmluZyhuWzBdPy5zdGF0dXM/PyIiKSxaPSFzJiZbImNhbmNlbGxlZCIsImV4cGlyZWQiLCJmYWlsZWQiXS5pbmNsdWRlcyhUKSxzZT0hcyYmKFQ9PT0idW5jb25maXJtZWQifHxUPT09InJlcXVlc3RlZCImJmE9PT0icGF5LWF0LWhvdGVsIiksSj0hIWUub3BlbmVkJiYhcyxWPUo/Wj9jKFJuW1RdPy5bMF0/PyJFbmRlZCIsUm5bVF0/LlsxXT8/IuW3sue7k+adnyIpOkE/eDpzZT9jKCJXYWl0aW5nIGZvciBjb25maXJtYXRpb24iLCLnrYnlvoXnoa7orqQiKTpUPT09InJlcXVlc3RlZCI/dT9jKCJEZW1vIGJvb2tpbmciLCLmvJTnpLrpooTorqIiKTpjKCJSb29tIGhlbGQiLCLmiL/pl7Tlt7Lkv53nlZkiKTpkP2MoIlRlc3QgYm9va2luZyBjb25maXJtZWQiLCLmtYvor5XpooTorqLlt7Lnoa7orqQiKTpjKCJCb29raW5nIGNvbmZpcm1lZCIsIumihOiuouW3suehruiupCIpOng7cmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQke0omJlo/IiBlbmRlZCI6SiYmc2U/IiB3YWl0aW5nIjoiIn0iIHJvbGU9InN0YXR1cyI+CiAgICAgICA8ZGl2IGNsYXNzPSJib29rZWQtbWFyayI+JHtKJiZaP0UuZXJyb3I6SiYmc2U/RS5jbG9jazpFLmRvbmV9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2woVil9PC9oMj4KICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKEomJlo/YygiVGhpcyBib29raW5nIG5vIGxvbmdlciBob2xkcyBhIHJvb20uIiwi6L+Z56yU6aKE6K6i5bey5LiN5YaN5Y2g55So5oi/6Ze044CCIik6dC5sZW5ndGh8fHMmJnI/YyhgJHtuLmxlbmd0aC1yfSBvZiAke24ubGVuZ3RoK3QubGVuZ3RofSBzdGF5cyBib29rZWQsIG9uZSBjb2RlIGVhY2gke3I/YCwgJHtyfSBiZWluZyBjb25maXJtZWRgOiIifSR7dC5sZW5ndGg/YCAtICR7dC5sZW5ndGg9PT0xPyJvbmUiOnQubGVuZ3RofSBjb3VsZCBub3QgYmUsIGJlbG93YDoiIn0uYCxgJHtuLmxlbmd0aCt0Lmxlbmd0aH0g5q616YeM6K6i5oiQICR7bi5sZW5ndGgtcn0g5q6177yM5q+P5q615LiA5Liq56Gu6K6k56CBJHtyP2DvvIwke3J9IOauteehruiupOS4rWA6IiJ9JHt0Lmxlbmd0aD9g77yb5Y+m5pyJICR7dC5sZW5ndGh9IOauteayoeiuouaIkO+8jOingeS4i+aWuWA6IiJ944CCYCk6cz9jKGAke24ubGVuZ3RofSBjb25maXJtYXRpb24gY29kZXMsIG9uZSBmb3IgZWFjaCBob3RlbC5gLGDlhbEgJHtuLmxlbmd0aH0g5Liq56Gu6K6k56CB77yM5q+P5a626YWS5bqX5LiA5Liq44CCYCk6YygiS2VlcCB0aGlzIGNvZGU6IHdpdGggaXQgYW5kIHlvdXIgZW1haWwsIHlvdSBjYW4gZmluZCB0aGlzIGJvb2tpbmcgYWdhaW4gZnJvbSBhbnkgY2hhdC4iLCLor7fkv53lrZjov5nkuKrnoa7orqTnoIHjgILlh63lroPlkozkvaDnmoTpgq7nrrHvvIzlnKjku7vkvZXlr7nor53ph4zpg73og73mib7lm57ov5nnrJTpooTorqLjgIIiKSl9PC9wPgogICAgIDwvZGl2PmAsLi4ubi5tYXAoQz0+cz8kKEMsU3RyaW5nKEMudG90YWw/PyIiKSxDKTokKEMsU3RyaW5nKGUudG90YWw/PyIiKSxlKSksa2QodCkscz9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYCR7bi5sZW5ndGh9IGJvb2tpbmdzLCBvbmUgZm9yIGVhY2ggc3RheS4gRWFjaCBob3RlbCBrZWVwcyBpdHMgb3duIG5pZ2h0cyB1bmRlciBpdHMgb3duIGNvZGUsIGFuZCBlYWNoIGlzICR7aCgiY2hhbmdlQm9va2luZyIpPyJjaGFuZ2VkIG9yIGNhbmNlbGxlZCI6ImNhbmNlbGxlZCJ9IG9uIGl0cyBvd24uYCxg5YWxICR7bi5sZW5ndGh9IOeslOmihOiuou+8jOavj+auteS9j+Wuv+S4gOeslO+8jOWQhOacieiHquW3seeahOehruiupOegge+8jCR7aCgiY2hhbmdlQm9va2luZyIpPyLkv67mlLnmiJblj5bmtogiOiLlj5bmtogifemDveimgeWIhuWIq+i/m+ihjOOAgmApKX08L2Rpdj5gOiIiLHo/YDxkaXYgY2xhc3M9InVucGFpZCBwYWlkIj4KICAgICAgIDxiPiR7bChjKGBQYWlkIGluIGFkdmFuY2U6ICR7en0uYCxg5bey6aKE5LuYICR7en3jgIJgKSl9PC9iPgogICAgICAgPHNwYW4+JHtsKGQ/YygiUGFpZCBpbiB0ZXN0IG1vZGUgLSBubyByZWFsIG1vbmV5IG1vdmVkLCBhbmQgdGhlIGJvb2tpbmcgaXMgaW4gYSBzaW11bGF0ZWQgc3lzdGVtLiIsIua1i+ivleaooeW8j+S7mOasvu+8jOayoeacieecn+WunuaJo+asvu+8m+iuouWNleWcqOaooeaLn+ezu+e7n+mHjOOAgiIpOmMoYE5vdGhpbmcgbW9yZSBpcyBwYWlkIGF0IHRoZSBob3RlbCBmb3IgdGhlIHJvb20uIElmICR7aX0gZG9lcyBub3QgY29uZmlybSBpdCwgYWxsIG9mIGl0IGdvZXMgYmFjayB0byB5b3VyIGNhcmQuYCxg5Yiw5bqX5LiN55So5YaN5LuY5oi/6LS544CC5aaC5p6cJHt1ZShpKX3msqHmnInnoa7orqTvvIzmrL7pobnkvJrlhajpop3pgIDlm57ljp/ljaHjgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6ZD9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiQSB0ZXN0IGJvb2tpbmcuIiwi6L+Z5piv5rWL6K+V6aKE6K6i44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtsKGMoYE1hZGUgaW4gYSBzaW11bGF0ZWQgY29weSBvZiAke2l9J3Mgc3lzdGVtOiBub3QgYSAke2l9IHJlc2VydmF0aW9uLCBubyByb29tIGlzIGhlbGQsIGFuZCBub3RoaW5nIGlzIHBhaWQuYCxg5ZyoJHt1ZShpKX3ns7vnu5/nmoTmqKHmi5/lia/mnKzph4znlJ/miJDvvIzkuI3mmK/nnJ/lrp7pooTorqLvvIzkuI3kv53nlZnmiL/pl7TvvIzkuZ/kuI3ku5jmrL7jgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6YT09PSJwYXktYXQtaG90ZWwiP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtsKGMoYCR7cz8iRWFjaCBpcyI6IlRoaXMgaXMifSAke2l9J3Mgb3duIHJlc2VydmF0aW9uLCBwYWlkIGF0IHRoZSBob3RlbC4gQSBjYXJkIGlzIHByZXNlbnRlZCBhdCBjaGVjay1pbiwgbm90IGhlcmUuYCxg6L+Z5pivJHt1ZShpKX3nmoTmraPlvI/pooTorqLvvIzliLDlupfku5jmrL7vvJvlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHvvIzov5nph4zkuI3mlLbmrL7jgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6dT9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiTm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkLiIsIuayoeacieaJo+asvuOAgiIpfTwvYj4KICAgICAgIDxzcGFuPiR7YyhgVGhpcyBpcyBhIGRlbW9uc3RyYXRpb24gYm9va2luZzogJHtsKGkpfSBoYXMgbm90IHJlY2VpdmVkIGl0LCBhbmQgbm8gcm9vbSBpcyBoZWxkIGF0IHRoZSBob3RlbC5gLGDov5nmmK/mvJTnpLrpooTorqLvvJoke2wodWUoaSkpfeayoeacieaUtuWIsO+8jOmFkuW6l+S5n+ayoeacieS4uuS9oOS/neeVmeaIv+mXtOOAgmApfTwvc3Bhbj4KICAgICA8L2Rpdj5gOmA8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtjKCJBIGNhcmQgaXMgcHJlc2VudGVkIGF0IGNoZWNrLWluLCBub3QgaGVyZS4iLCLlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHvvIzov5nph4zkuI3mlLbmrL7jgIIiKX08L3NwYW4+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTXkgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKX08L2J1dHRvbj4KICAgICAgICR7c3x8Wnx8cnx8IWgoImxpc3RFeHRyYXMiKT8iIjpgPGJ1dHRvbiBjbGFzcz0iZ28gc29mdCIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2woblswXT8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkFkZC1vbnMgZm9yIHRoaXMgc3RheSIsIuS4uui/measoeS9j+Wuv+WKoOi0rSIpfTwvYnV0dG9uPmB9CiAgICAgPC9kaXY+YCxzfHxafHxyPyIiOihuWzBdPy5xdW90ZT8ubGluZXM/P1tdKS5zb21lKEM9PkMua2luZD09PSJyb29tIikmJihuWzBdPy5xdW90ZT8ubGluZXM/P1tdKS5maWx0ZXIoQz0+Qy5raW5kPT09InJvb20iKS5ldmVyeShDPT5DLnJlZnVuZGFibGU9PT0hMSk/YDxwIGNsYXNzPSJxdWlldC1lbmQgbm90ZSI+JHtsKGMoIlRoaXMgcmF0ZSBjYW5ub3QgYmUgY2FuY2VsbGVkLCBhbmQgbm90aGluZyBvZiBpdCBpcyByZWZ1bmRlZC4iLCLmraTku7fmoLzkuI3lj6/lj5bmtojvvIzlt7Lku5jmrL7pobnkuI3pgIDjgIIiKSl9PC9wPmA6YDxkaXYgY2xhc3M9InF1aWV0LWVuZCI+PGJ1dHRvbiBjbGFzcz0ibGlua3kgZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woblswXT8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkNhbmNlbCB0aGlzIGJvb2tpbmciLCLlj5bmtojov5nnrJTpooTorqIiKX08L2J1dHRvbj48L2Rpdj5gXS5qb2luKCIiKX0sdnU9KGUsdCxuKT0+YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBNb3JlIHRoYW4gb25lICR7bj8/ImhvdGVsIn0gYW5zd2VycyB0byDigJwke2V94oCdOmAsYOKAnCR7ZX3igJ3lr7nlupTkuI3mraLkuIDlrrbphZLlupfvvJpgKSl9PC9kaXY+CiAgPGRpdiBjbGFzcz0icGxhY2VzIj4ke3QubWFwKG89PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChvLmlkKX0iPiR7bChvLm5hbWUpfSR7by5jaXR5P2AgPHNtYWxsPiR7bChvLmNpdHkpfTwvc21hbGw+YDoiIn08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gLHl1PWU9Pntjb25zdCB0PWUuZHJvcHBlZD8/W10sbj10LmZpbHRlcihvPT4hKG8uY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk7cmV0dXJuW24ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bi5tYXAobz0+YCR7bChvLm5hbWUpfTogJHtsKG9lPT09InpoIj8i6L+Z6YeM5rKh5pyJ5a+55bqU55qE6YWS5bqXIjpvLndoeSl9YCkuam9pbigiPGJyPiIpfTwvZGl2PmA6IiIsLi4udC5maWx0ZXIobz0+KG8uY2FuZGlkYXRlcz8/W10pLmxlbmd0aCkubWFwKG89PnZ1KG8ubmFtZSxvLmNhbmRpZGF0ZXMsZS52b2NhYj8ubm91bikpXS5qb2luKCIiKX0sTl89L1xiKGF0IG9uY2V8dG9vIG1hbnl8YW4gaG91cnxwZXIgaG91cnxpbiB0aGUgbGFzdCBob3VyfGxpbWl0fHRyeSBhZ2FpbiAobGF0ZXJ8aW4pKVxiL2ksWl89eyJob3RlbC1ub3QtZm91bmQiOlsiVGhhdCBob3RlbCBpcyBub3QgaGVyZSIsIuayoeacieaJvuWIsOi/meWutumFkuW6lyJdLCJuby1zdWNoLXJvb20iOlsiVGhhdCByb29tIGlzIG5vdCBhdmFpbGFibGUiLCLor6XmiL/lnovmmoLkuI3lj6/orqIiXSwibm8tcm9vbS1uYW1lZCI6WyJUaGF0IHJvb20gaXMgbm90IGF2YWlsYWJsZSIsIuivpeaIv+Wei+aaguS4jeWPr+iuoiJdLCJuby1zdWNoLWV4dHJhIjpbIlRoYXQgYWRkLW9uIGlzIG5vdCBhdmFpbGFibGUiLCLov5npobnpmYTliqDmnI3liqHorqLkuI3kuoYiXSwibm8tc3VjaC1ncm91cCI6WyJUaGF0IGdyb3VwIGlzIG5vdCBpbiB0aGlzIG1hcmtldCIsIui/memHjOayoeaciei/meS4qumbhuWboiJdLCJ0cmlwLWdvbmUiOlsiVGhpcyB0cmlwIGhhcyBleHBpcmVkIiwi6L+Z5Liq6KGM56iL5bey6L+H5pyfIl0sImJvb2tpbmctZW5kZWQiOlsiVGhhdCBib29raW5nIGhhcyBlbmRlZCIsIui/meeslOmihOiuouW3sue7k+adnyJdLCJiYWQtY291bnQiOlsiVGhhdCBudW1iZXIgZG9lcyBub3Qgd29yayIsIuaVsOmHj+S4jeWvuSJdLCJzdGFydC10aW1lIjpbIlRoYXQgc3RhcnQgdGltZSBpcyBub3Qgb3BlbiIsIui/meS4quWIsOW6l+aXtumXtOS4jeWPr+mAiSJdLCJub3QtYm9va2FibGUiOlsiVGhpcyBjb3VsZCBub3QgYmUgYm9va2VkIiwi5pqC5pe25peg5rOV6aKE6K6iIl19LGVuPWU9Pi9b45CALem/v10vLnRlc3QoZSksdWU9ZT0+ZSYmIWVuKGUpPyLphZLlupciOmUsal89ZT0+e2lmKChlLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGgpcmV0dXJuIHZ1KGUucXVlcnksZS5jYW5kaWRhdGVzLGUudm9jYWI/Lm5vdW4pO2NvbnN0IHQ9ZS5yb29tcz8/W10sbj1lLmVycm9yPT09InN0YXJ0LXRpbWUiP2Uud2luZG93OnZvaWQgMCxvPWUuZXJyb3I9PT0ibm8tc3VjaC1yb29tIiYmZS5ob3RlbD8uaWQmJmUuc3RheT8uY2hlY2tJbiYmdC5ldmVyeShoPT5oLmlkKT9gPGRpdiBjbGFzcz0ibGlua3MiPiR7dC5tYXAoaD0+YDxidXR0b24gY2xhc3M9Imxpbmstcm93IGFkZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFkZC1yb29tPSIke2woaC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5ob3RlbC5pZCl9IiBkYXRhLW49IjEiIGRhdGEtY2k9IiR7bChlLnN0YXkuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5LmNoZWNrT3V0KX0iIGRhdGEtZ3U9IiR7bChlLnN0YXkuZ3Vlc3RzPz9TLmd1ZXN0cyl9Ij48c3Bhbj4ke2woaC5uYW1lKX08L3NwYW4+PHNwYW4gY2xhc3M9ImxpbmstZ28iPiR7YygiUmVzZXJ2ZSIsIumihOiuoiIpfSR7RS5jaGV2Un08L3NwYW4+PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIixzPVN0cmluZyhlLmRldGFpbD8/ZS53aHk/PyIiKSxyPU5fLnRlc3QocyksaT1lLmVycm9yPT09InRyaXAtZ29uZSIsYT1pP2MoIlRyaXBzIGFyZSBrZXB0IGZvciA0IGhvdXJzIGFmdGVyIHRoZWlyIGxhc3QgY2hhbmdlLCBhbmQgdGhpcyBvbmUgaGFzIGdvbmUgLSB0cnlpbmcgYWdhaW4gd2lsbCBub3QgYnJpbmcgaXQgYmFjay4gQXNrIHRoZSBhc3Npc3RhbnQgdG8gc2hvdyB5b3VyIHRyaXAgYWdhaW4sIG9yIHNlYXJjaCBhZ2FpbiBoZXJlLiIsIuihjOeoi+WPquWcqOacgOWQjuS4gOasoeaUueWKqOWQjuS/neeVmSA0IOWwj+aXtu+8jOi/meS4quW3sue7j+i/h+acn++8jOWGjeivleS5n+S4jeS8muaBouWkjeOAguivt+iuqeWKqeaJi+mHjeaWsOaYvuekuuihjOeoi++8jOaIluWcqOi/memHjOmHjeaWsOaQnOe0ouOAgiIpOm4/YyhgJHtlLnF1ZXJ5P2Ake2UucXVlcnl9IGlzIG5vdCBhIHN0YXJ0IHRoaXMgcm9vbSB0YWtlcy4gYDoiIn1JdCBzdGFydHMgYmV0d2VlbiAke24uZWFybGllc3RTdGFydH0gYW5kICR7bi5sYXRlc3RTdGFydH0gdG9kYXksIGZvciAke24uaG91cnN9IGhvdXJzLCBhbmQgaXMgbGVmdCBieSAke24ubGF0ZXN0RW5kfS5gLGAke2UucXVlcnk/YCR7ZS5xdWVyeX0g5LiN6IO95L2c5Li65Yiw5bqX5pe26Ze044CCYDoiIn3ov5npl7Tpkp/ngrnmiL/ku4rlpKkgJHtuLmVhcmxpZXN0U3RhcnR94oCTJHtuLmxhdGVzdFN0YXJ0fSDkuYvpl7TliLDlupfvvIzkvY8gJHtuLmhvdXJzfSDlsI/ml7bvvIzmnIDmmZogJHtuLmxhdGVzdEVuZH0g56a75bqX44CCYCk6ZS5lcnJvcj09PSJuby1zdWNoLXJvb20iJiZ0Lmxlbmd0aD9vP2MoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gVGhlc2UgYXJlIG9wZW4g4oCUIHRhcCBvbmUgdG8gcmVzZXJ2ZSBpdDpgLGAke2UuaG90ZWw/Lm5hbWU/PyLov5nlrrbphZLlupcifeWcqOi/meS6m+aXpeacn+ayoeaciei/meS4quaIv+Wei+OAguS4i+mdoui/meS6m+WPr+S7peiuou+8jOeCueS4gOS4i+WNs+WPr+mihOiuou+8mmApOmMoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gSXQgaGFzICR7TmkodC5tYXAoaD0+U3RyaW5nKGgubmFtZSkpKX0uYCxgJHtlLmhvdGVsPy5uYW1lPz8i6L+Z5a626YWS5bqXIn3lnKjov5nkupvml6XmnJ/msqHmnInov5nkuKrmiL/lnovvvIzlj6/orqLnmoTmnInvvJoke05pKHQubWFwKGg9PlN0cmluZyhoLm5hbWUpKSl944CCYCk6ciYmb2U9PT0iemgiJiYhZW4ocyk/Iui/measoeayoeaciemihOiuouaIkOWKn++8jOS5n+ayoeacieaJo+asvuOAgui/meauteWvueivnemHjOeahOmihOiuouW3suWIsOS4iumZkO+8muivt+WFiOWcqOKAnOaIkeeahOmihOiuouKAnemHjOWPlua2iOS4jemcgOimgeeahO+8jOWGjeivleS4gOasoeOAgiI6cyYmKG9lIT09InpoInx8ZW4ocykpP3M6YygiVGhhdCBjb3VsZCBub3QgYmUgZG9uZS4iLCLov5nkuIDmraXmsqHog73lrozmiJDvvIzor7fnqI3lkI7lho3or5XjgIIiKSx1PVpfW1N0cmluZyhlLmVycm9yKV0sZD1yP2MoIkJvb2tpbmcgbGltaXQgcmVhY2hlZCIsIuW3sui+vumihOiuouS4iumZkCIpOnU/Yyh1WzBdLHVbMV0pOmMoIlRoYXQgZGlkIG5vdCB3b3JrIiwi5rKh6IO95a6M5oiQIikscD1bZS5ob3RlbD8uaWQ/YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsLmlkKX0iJHtlLnN0YXk/LmNoZWNrSW4/YCBkYXRhLWNpPSIke2woZS5zdGF5LmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGUuc3RheS5jaGVja091dCl9ImA6IiJ9PiR7bChvP2MoIlNlZSBhbGwgcm9vbXMiLCLmn6XnnIvlhajpg6jmiL/lnosiKTpjKCJTZWUgdGhlIHJvb21zIiwi5p+l55yL5oi/5Z6LIikpfTwvYnV0dG9uPmA6IiIsciYmSm8oImxpc3RCb29raW5ncyIpP2A8YnV0dG9uIGNsYXNzPSJnbyR7ZS5ob3RlbD8uaWQ/IiBxdWlldCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPmA6IiIsIWUuaG90ZWw/LmlkJiYhciYmdmUubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYmFjayI+JHtFLmNoZXZMfSR7bChjKGBCYWNrIHRvICR7dmUuYXQoLTEpPy5sYWJlbD8/IndoZXJlIHlvdSB3ZXJlIn1gLCLov5Tlm54iKSl9PC9idXR0b24+YDoiIixJdD4wP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCI+JHtjKCJWaWV3IHRoZSB0cmlwIiwi5p+l55yL6KGM56iLIil9PC9idXR0b24+YDoiIl0uZmlsdGVyKEJvb2xlYW4pO3JldHVybiBpJiZwLnNwbGljZSgwLHAubGVuZ3RoLGA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLXRyaXAtYWdhaW4iPiR7YygiQXNrIHRoZSBhc3Npc3RhbnQgdG8gc2hvdyBpdCBhZ2FpbiIsIuiuqeWKqeaJi+mHjeaWsOaYvuekuuihjOeoiyIpfTwvYnV0dG9uPmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIlNlYXJjaCBhZ2FpbiIsIumHjeaWsOaQnOe0oiIpfTwvYnV0dG9uPmApLHAubGVuZ3RofHxwLnB1c2goYDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPmApLGAKICAgIDxkaXYgY2xhc3M9InN0YXRlICR7cj8ibGltaXQiOiJlcnJvciJ9IiByb2xlPSJhbGVydCI+CiAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtyP0UuY2xvY2s6RS5lcnJvcn08L2Rpdj4KICAgICAgPGgyIGNsYXNzPSJzdGF0ZS10Ij4ke2woZCl9PC9oMj4KICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChhKX08L3A+CiAgICAgICR7b30KICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+JHtwLmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YH0scWc9ZT0+YAogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2woZS5kZXRhaWw/WHQoZS5kZXRhaWwpOmUua2luZD09PSJyb29tIj9laShlLnN0YXksZS5ob3VybHkpOiIiKX08L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtbGluZSI+JHtsKGUudG90YWwpfTwvZGl2PiR7ZS5raW5kPT09InJvb20iJiZuaT9gPGRpdiBjbGFzcz0icC11bml0Ij4ke2MoImJlZm9yZSB0YXhlcyIsIuacquWQq+eojui0uSIpfTwvZGl2PmA6IiJ9PC9kaXY+CiAgPC9kaXY+YCxNXz17ImF3YWl0aW5nLXBheW1lbnQiOiJ3YXJuIixyZXF1ZXN0ZWQ6Indhcm4iLGNvbmZpcm1lZDoiZ29vZCIsY2FuY2VsbGVkOiJiYWQiLGV4cGlyZWQ6ImJhZCIsZmFpbGVkOiJiYWQiLHVuY29uZmlybWVkOiJ3YXJuIn0sUm49eyJhd2FpdGluZy1wYXltZW50IjpbIkF3YWl0aW5nIHBheW1lbnQiLCLlvoXku5jmrL4iXSxyZXF1ZXN0ZWQ6WyJSZXF1ZXN0ZWQiLCLlvoXnoa7orqQiXSxjb25maXJtZWQ6WyJDb25maXJtZWQiLCLlt7Lnoa7orqQiXSxjYW5jZWxsZWQ6WyJDYW5jZWxsZWQiLCLlt7Llj5bmtogiXSxleHBpcmVkOlsiRXhwaXJlZCIsIuW3sui/h+acnyJdLGZhaWxlZDpbIk5vdCBtYWRlIiwi5pyq5oiQ5YqfIl0sdW5jb25maXJtZWQ6WyJCZWluZyBjaGVja2VkIiwi5qC45a6e5LitIl19LHFfPWU9Pntjb25zdCB0PWUucmVxdWVzdHM/LmtpbmRzPz9bXTtpZighdC5sZW5ndGgpcmV0dXJuIiI7Y29uc3Qgbj10Lm1hcChBcyk7cmV0dXJuYDxkaXYgY2xhc3M9Im1ldGEgYXNrZWQtbGluZSI+JHtsKGMoYEFza2VkIGZvciAke24uam9pbigiLCAiKS50b0xvd2VyQ2FzZSgpfWAsYOW3suaPkOWHuu+8miR7bi5qb2luKCLjgIEiKX1gKSl9PC9kaXY+YH0sTF89e2F3YWl0aW5nOlsiVG8gYmUgcGFpZCIsIuW+heS7mOasviIsIndhcm4iXSxwYWlkOlsiUGFpZCBpbiBhZHZhbmNlIiwi5bey6aKE5LuYIiwiZ29vZCJdLGxhcHNlZDpbIk5vdCBwYWlkIGluIHRpbWUiLCLotoXml7bmnKrku5giLCIiXSxyZWZ1bmRpbmc6WyJSZWZ1bmQgdW5kZXIgd2F5Iiwi6YCA5qy+5LitIiwiIl0scmVmdW5kZWQ6WyJSZWZ1bmRlZCBpbiBmdWxsIiwi5bey5YWo6aKd6YCA5qy+IiwiIl19LERfPWU9Pntjb25zdCB0PUxfW1N0cmluZyhlPy5wYXltZW50Py5zdGF0dXM/PyIiKV07cmV0dXJuIHQ/YDxzcGFuIGNsYXNzPSJiYWRnZSAke3RbMl19Ij4ke2ModFswXSx0WzFdKX08L3NwYW4+YDoiIn0sQl89ZT0+e2NvbnN0IHQ9ZS5ib29raW5ncz8/W10sbj1lLm5vdEZvdW5kP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bChlLnRvb01hbnk/b2U9PT0iemgiJiYhZW4oU3RyaW5nKGUubm90Rm91bmRMaW5lPz8iIikpPyLlsJ3or5XmrKHmlbDov4flpJrvvIzor7fnqI3lkI7lho3or5XjgIIiOmUubm90Rm91bmRMaW5lOmMoYE5vIGJvb2tpbmcgbWF0Y2hlcyAke2Uubm90Rm91bmR9IHdpdGggdGhhdCBlbWFpbC4gQm90aCBoYXZlIHRvIGJlIGFzIHRoZXkgYXJlIG9uIHRoZSBjb25maXJtYXRpb24uYCxg5rKh5pyJ5om+5Yiw56Gu6K6k56CBICR7ZS5ub3RGb3VuZH0g5ZKM6L+Z5Liq6YKu566x5a+55bqU55qE6aKE6K6i44CC5Lik6aG56YO96KaB5ZKM56Gu6K6k5L+h5oGv5LiK55qE5LiA6Ie044CCYCkpfTwvZGl2PmA6IiI7cmV0dXJuIGUubm90Rm91bmQmJnQubGVuZ3RoPT09MD9gJHtufQogICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIlRyeSBhZ2FpbiIsIuWGjeivleS4gOasoSIpfTwvYnV0dG9uPjwvZGl2PmA6dC5sZW5ndGg9PT0wP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJObyBib29raW5ncyBpbiB0aGlzIGNvbnZlcnNhdGlvbiB5ZXQuIiwi6L+Z5qyh5a+56K+d6YeM6L+Y5rKh5pyJ6aKE6K6i44CCIil9PC9kaXY+YDpbbixgPGRpdiBjbGFzcz0icm93cyI+JHt0Lm1hcChvPT5gCiAgICAgIDxkaXYgY2xhc3M9InJvdyBib29raW5nLXJvdyIgZGF0YS1vcGVuLWJvb2tpbmc9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+CiAgICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke1p0KG8uaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSDCtyAke2woZWkoby5zdGF5LG8uaG91cmx5KSl9PC9kaXY+CiAgICAgICAgICAke3FfKG8pfQogICAgICAgICAgPGRpdiBjbGFzcz0iYmFkZ2VzIj4ke0RfKG8pfTxzcGFuIGNsYXNzPSJiYWRnZSAke01fW1N0cmluZyhvLnN0YXR1cyldPz8iIn0iPiR7bChSbltTdHJpbmcoby5zdGF0dXMpXT9jKFJuW1N0cmluZyhvLnN0YXR1cyldPy5bMF0/PyIiLFJuW1N0cmluZyhvLnN0YXR1cyldPy5bMV0/PyIiKTpvLnN0YXR1cyl9PC9zcGFuPjwvZGl2PgogICAgICAgICAgJHtvLnN0YXR1cz09PSJ1bmNvbmZpcm1lZCI/YDxkaXYgY2xhc3M9Im1ldGEiPiR7bChjKGBOb3Qga25vd24geWV0IHdoZXRoZXIgJHtVZShvLnN1cHBsaWVyKS5uYW1lfSBtYWRlIHRoaXMgYm9va2luZyDigJQgYSBwZXJzb24gaXMgY29uZmlybWluZyBpdC5gLGDov5jkuI3noa7lrpoke1VlKG8uc3VwcGxpZXIpLm5hbWV95piv5ZCm5bey55Sf5oiQ6L+Z56yU6aKE6K6i77yM5q2j5Zyo5Lq65bel5qC45a6e44CCYCkpfTwvZGl2PmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChvLnF1b3RlPy50b3RhbD8/IiIpfTwvZGl2PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtvLnN0YXR1cz09PSJhd2FpdGluZy1wYXltZW50IiYmby5wYXltZW50Py51cmw/YDxidXR0b24gY2xhc3M9ImdvIHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXkiIGRhdGEtdXJsPSIke2woby5wYXltZW50LnVybCl9IiBkYXRhLWNvZGU9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSIgZGF0YS11bnRpbD0iJHtsKG8ucGF5bWVudC5wYXlCeT8/IiIpfSI+JHtjKCJQYXkiLCLljrvku5jmrL4iKX0gJHtsKG8ucGF5bWVudC5hbW91bnQ/PyIiKX08L2J1dHRvbj5gOm8uc3RhdHVzPT09InJlcXVlc3RlZCJ8fG8uc3RhdHVzPT09ImNvbmZpcm1lZCI/YCR7Sm8oImxpc3RFeHRyYXMiKSYmVWUoby5zdXBwbGllcikuZXh0cmFzP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQWRkLW9ucyIsIumZhOWKoOacjeWKoSIpfTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIiwi5Y+W5raIIil9PC9idXR0b24+YDoiIn08YnV0dG9uIGNsYXNzPSJvcGVuLWdvIiB0eXBlPSJidXR0b24iIGRhdGEtb3Blbi1ib29raW5nPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iIGFyaWEtbGFiZWw9IiR7bChjKGBTZWUgYm9va2luZyAke28uY29uZmlybWF0aW9uQ29kZX1gLGDmn6XnnIvpooTorqIgJHtvLmNvbmZpcm1hdGlvbkNvZGV9IOeahOivpuaDhWApKX0iPiR7RS5jaGV2Un08L2J1dHRvbj48L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YF0uam9pbigiIil9LF9kPWU9Pntjb25zdCB0PWUudmlldz09PSJjYW5jZWxsZWQiLG49ZS5ib29raW5nPz97fTtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHt0P2MoIkNhbmNlbGxlZCIsIuW3suWPlua2iCIpOmMoIkNhbmNlbGxpbmciLCLmraPlnKjlj5bmtogiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9ImNvZGUiPiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfTwvZGl2PgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9InN1bXMiPgogICAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke3Q/YygiVGhlIGhvdGVsIGNoYXJnZXMiLCLphZLlupfmlLblj5YiKTpjKCJDYW5jZWxsaW5nIHdvdWxkIGNvc3QiLCLlj5bmtojpnIDmlK/ku5giKX08L3NwYW4+PHNwYW4+JHtsKGUuZmVlKX08L3NwYW4+PC9kaXY+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGUucnVsZSl9PC9kaXY+YCx0PyIiOmUuY2FuY2VsbGFibGU/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIktlZXAgaXQiLCLkuI3lj5bmtojkuoYiKX08L2J1dHRvbj4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIGRhbmdlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWNvbmZpcm0tY2FuY2VsPSIke2wobi5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIHRoZSBib29raW5nIiwi56Gu6K6k5Y+W5raIIil9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDpgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJUaGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gY2FuY2VsIG9uIHRoaXMgYm9va2luZy4iLCLov5nnrJTpooTorqLlt7LmsqHmnInlj6/lj5bmtojnmoTlhoXlrrnjgIIiKX08L2Rpdj5gXS5qb2luKCIiKX0sU2Q9ZT0+e2NvbnN0IHQ9ZS52aWV3PT09ImNoYW5nZWQiLG49ZS5ib29raW5nPz97fSxvPWUuZnJvbT8/e30scz1lLnRvLHI9ISFzJiYocy5jaGVja0luIT09by5jaGVja0lufHxzLmNoZWNrT3V0IT09by5jaGVja091dHx8TnVtYmVyKHMucm9vbXMpIT09TnVtYmVyKG8ucm9vbXMpfHxzLnJvb21OYW1lIT09by5yb29tTmFtZSksaT0oYSx1LGQpPT51P2A8ZGl2IGNsYXNzPSJsZWcke2Q/IiB3YXMiOiIifSI+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnayI+JHtsKGEpfTwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ3YiPiR7bChfZShTdHJpbmcodS5jaGVja0luKSkpfSDihpIgJHtsKF9lKFN0cmluZyh1LmNoZWNrT3V0KSkpfSDCtyAke2wocGUoTnVtYmVyKHUubmlnaHRzKSkpfTwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ20iPiR7bCh1LnJvb21OYW1lKX0ke051bWJlcih1LnJvb21zKT4xP2AgwrcgJHtsKER3KE51bWJlcih1LnJvb21zKSkpfWA6IiJ9IMK3ICR7bCh1LnRvdGFsKX08L2Rpdj4KICAgICAgICAgPC9kaXY+YDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHt0P2MoIkNoYW5nZWQiLCLlt7Lkv67mlLkiKTpjKCJDaGFuZ2luZyIsIuS/ruaUuemihOiuoiIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKG4uY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+CiAgICAgPC9kaXY+YCxlLmhvdGVsTmFtZT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGUuaG90ZWxOYW1lKX08L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJsZWdzIj4ke2kodD9jKCJXYXMiLCLljp/mnaUiKTpjKCJOb3ciLCLnjrDlnKgiKSxlLmZyb20scil9JHtpKHQ/YygiTm93Iiwi546w5ZyoIik6YygiV291bGQgYmUiLCLmlLnkuLoiKSxlLnRvLCExKX08L2Rpdj5gLGUuYWRkT24/YDxkaXYgY2xhc3M9InN1bXMiPjxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtsKGUuYWRkT24ubmFtZSl9PC9zcGFuPjxzcGFuPiR7bChlLmFkZE9uLmZyb20pfSDihpIgJHtsKGUuYWRkT24udG8pfTwvc3Bhbj48L2Rpdj48L2Rpdj5gOiIiLGUuZGlmZmVyZW5jZT9gPGRpdiBjbGFzcz0ic3VtcyI+PGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2UucmVmdW5kRHVlP3Q/YygiVGhlIGRlc2sgb3dlcyIsIumFkuW6l+W6lOmAgCIpOmMoIldvdWxkIGNvbWUgYmFjayIsIuWwhumAgOWbniIpOmModD8iVGhlIGRlc2sgYXNrcyBmb3IiOiJXb3VsZCBjb3N0Iiwi6ZyA6KGl5beu5Lu3Iil9PC9zcGFuPjxzcGFuPiR7bChlLmRpZmZlcmVuY2UpfTwvc3Bhbj48L2Rpdj48L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5ydWxlKX08L2Rpdj5gLHQ/YDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPjwvZGl2PmA6ZS5jaGFuZ2VhYmxlP2A8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJMZWF2ZSBpdCIsIuS4jeaUueS6hiIpfTwvYnV0dG9uPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jb25maXJtLWNoYW5nZT0iJHtsKG4uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2UuYWRkT24mJmUuZnJvbT8uY2hlY2tJbj09PWUudG8/LmNoZWNrSW4mJmUuZnJvbT8uY2hlY2tPdXQ9PT1lLnRvPy5jaGVja091dD9jKCJVcGRhdGUgdGhlIGJvb2tpbmciLCLmm7TmlrDpooTorqIiKTpjKCJNb3ZlIHRoZSBib29raW5nIiwi56Gu6K6k5pS55pyfIil9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LGRpPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS52aWV3PT09InBvbGljeSI/YDxoND4ke2woZS50aXRsZSl9PC9oND4ke2woZS50ZXh0KX1gOihlLnRvcGljcz8/W10pLm1hcChvPT5gPGg0PiR7bChvLnRpdGxlKX08L2g0PiR7bChvLnRleHQpfWApLmpvaW4oIiIpO3JldHVybltgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bCh0Lm5hbWUpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7YygiV2hhdCB0aGUgaG90ZWwgcHVibGlzaGVzIiwi6YWS5bqX5YWs5biD55qE5pS/562WIil9PC9kaXY+PC9kaXY+YCxlLnZpZXc9PT0icG9saWN5LW1pc3NpbmciP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtsKGMoYCR7dC5uYW1lfSBkb2VzIG5vdCBwdWJsaXNoIGFueXRoaW5nIGFib3V0IHRoYXQgaGVyZS5gLGAke3QubmFtZX3msqHmnInlhazluIPov5nmlrnpnaLnmoTmlL/nrZbjgIJgKSl9PC9kaXY+YDpgPGRpdiBjbGFzcz0icHJvc2UiPiR7bn08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2wodC5pZCl9Ij4ke2woYyhgQmFjayB0byAke3QubmFtZX1gLGDov5Tlm54ke3QubmFtZX1gKSl9PC9idXR0b24+YF0uam9pbigiIil9LEZfPXtXaGVyZToi5L2N572uIixCcmFuZDoi5ZOB54mMIixSb29tOiLmiL/lnosiLCJQZXIgbmlnaHQiOiLmr4/mmZoiLCJXaG9sZSBzdGF5Ijoi5pW05q615L2P5a6/IiwiRnJlZSBjYW5jZWxsYXRpb24iOiLlhY3otLnlj5bmtogiLEJyZWFrZmFzdDoi5pep6aSQIixTbGVlcHM6IuWPr+S9j+S6uuaVsCIsIlJvb21zIGxlZnQiOiLliankvZnmiL/pl7QiLEZyb206Iui1t+S7tyIsUmF0aW5nOiLor4TliIYifSxVXz17WWVzOiLmmK8iLE5vOiLlkKYiLEluY2x1ZGVkOiLlkKsiLCJOb3QgaW5jbHVkZWQiOiLkuI3lkKsifSxIXz1lPT5vZT09PSJ6aCI/Rl9bZV0/P2U6ZSxXXz1lPT5vZT09PSJ6aCI/VV9bZV0/P2UucmVwbGFjZSgvIGluY2xcLiB0YXgkLywiIOWQq+eojiIpLnJlcGxhY2UoLyBhIG5pZ2h0JC8sIiDmr4/mmZoiKTplLFZfPWU9Pntjb25zdCB0PWUuY29sdW1ucz8/W10sbj1lLnJvd0xhYmVscz8/W10sbz10LnNvbWUocj0+ci5yZWNvbW1lbmRlZCkscz1yPT5gCiAgICA8ZGl2IGNsYXNzPSJjbXAtaGVhZCR7ci5yZWNvbW1lbmRlZD8iIHBpY2siOiIifSR7bz8iIG1hcmtlZCI6IiJ9Ij4KICAgICAgJHtvP2A8ZGl2IGNsYXNzPSJwaWNrbWFyayR7ci5yZWNvbW1lbmRlZD8iIjoiIG5vbmUifSI+JHtyLnJlY29tbWVuZGVkP2MoIlJlY29tbWVuZGVkIiwi5o6o6I2QIik6IiJ9PC9kaXY+YDoiIn0KICAgICAgPGJ1dHRvbiBjbGFzcz0idC1zaG90IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChyLmhvdGVsLmlkKX0iIHN0eWxlPSIke2d0KFN0cmluZyhyLmhvdGVsLmlkKSl9Ij4KICAgICAgICAke3IuaG90ZWwuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woci5ob3RlbC5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2woYnQoU3RyaW5nKHIuaG90ZWwubmFtZSkpKX08L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtbmFtZSI+JHtsKHIuaG90ZWwubmFtZSl9JHtBdChyLmhvdGVsLnN1cHBsaWVyKT9gPHNtYWxsIGNsYXNzPSJjb2wtZ3JvdXAiPiR7bChBdChyLmhvdGVsLnN1cHBsaWVyKS5uYW1lKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1wcmljZSI+JHtyLnByaWNlP2Ake2woci5wcmljZS5zdGF5VG90YWwpfTxzbWFsbCBjbGFzcz0ic3ViIj4ke2woYyhgdG90YWwgwrcgJHtyLnByaWNlLm5pZ2h0bHl9L25pZ2h0YCxg5oC75Lu3IMK3IOavj+aZmiAke3IucHJpY2UubmlnaHRseX1gKSl9PC9zbWFsbD5gOnIuZnJvbT9gPHNtYWxsPiR7YygiRnJvbSAiLCIiKX08L3NtYWxsPiR7bChyLmZyb20pfTxzbWFsbD4ke2MoIiAvIG5pZ2h0IiwiIOi1ty/mmZoiKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9IndoeSR7ci5iZXN0Rm9yPyIiOiIgbm9uZSJ9Ij4ke3IuYmVzdEZvcj9sKHIuYmVzdEZvcik6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBjIj4ke1suLi4oci5wcm9zPz9bXSkubWFwKGk9PmA8ZGl2IGNsYXNzPSJwcm8iPjxzcGFuIGNsYXNzPSJtIj4rPC9zcGFuPjxzcGFuPiR7bChpKX08L3NwYW4+PC9kaXY+YCksLi4uKHIuY29ucz8/W10pLm1hcChpPT5gPGRpdiBjbGFzcz0iY29uIj48c3BhbiBjbGFzcz0ibSI+4oiSPC9zcGFuPjxzcGFuPiR7bChpKX08L3NwYW4+PC9kaXY+YCldLmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YDtyZXR1cm5bZS50aXRsZT9gPGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+YDoiIixlLnN0YXk/YDxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChLbyhlLnN0YXkpKX08L2Rpdj5gOiIiLEFycmF5LmlzQXJyYXkoZS5jdXJyZW5jaWVzKSYmZS5jdXJyZW5jaWVzLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUHJpY2VzIGFyZSBpbiBlYWNoIGhvdGVsJ3Mgb3duIGN1cnJlbmN5ICgke2UuY3VycmVuY2llcy5qb2luKCIsICIpfSkuIFRoZXkgYXJlIG5vdCBjb252ZXJ0ZWQsIHNvIHRoZSBjb2x1bW5zIGFyZSBub3QgYSBwcmljZSByYW5raW5nLmAsYOWQhOWutuS7t+agvOaMieWQhOiHquW4geenje+8iCR7ZS5jdXJyZW5jaWVzLmpvaW4oIuOAgSIpfe+8ieaYvuekuu+8jOS4jeWBmuaNoueul++8jOaJgOS7peS4jeiDveaMieWIl+avlOS7t+OAgmApKX08L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJjbXAtd3JhcCI+PGRpdiBjbGFzcz0iY21wJHt0Lmxlbmd0aD49ND8iIGZvdXIiOiIifSIgc3R5bGU9Ii0tY29sczoke3QubGVuZ3RofTstLWhlYWQtcm93czoke28/Njo1fSI+CiAgICAgICA8ZGl2IGNsYXNzPSJjbXAtY29ybmVyIj48L2Rpdj4KICAgICAgICR7dC5tYXAocykuam9pbigiIil9CiAgICAgICAke24ubWFwKChyLGkpPT5gPGRpdiBjbGFzcz0iayI+JHtsKEhfKHIpKX08L2Rpdj4ke3QubWFwKGE9PmA8ZGl2IGNsYXNzPSJ2JHtpJTI/IiBhbHQiOiIifSI+JHtsKFdfKGEucm93cz8uW2ldPy52YWx1ZT8/IuKAlCIpKX08L2Rpdj5gKS5qb2luKCIiKX1gKS5qb2luKCIiKX0KICAgICA8L2Rpdj48L2Rpdj5gLHl1KGUpLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgT3BlbiBhICR7ZS52b2NhYj8ubm91bj8/ImhvdGVsIn0gdG8gc2VlIGl0cyByb29tcyR7ZS5zdGF5Py5jaGVja0luPyIgZm9yIHRoZXNlIG5pZ2h0cyI6IiJ9LmAsYOaJk+W8gOS4gOWutumFkuW6l++8jOafpeeciyR7ZS5zdGF5Py5jaGVja0luPyLov5nkupvml6XmnJ/nmoQiOiIifeaIv+mXtOOAgmApKX08L2Rpdj5gXS5qb2luKCIiKX0sSl89ZT0+e2NvbnN0IHQ9ZS5kYXlzPz9bXSxuPWE9PmA8c3BhbiBjbGFzcz0iaW5zdGF0ZSAke2EuYm9va2VkfHxhLmluVHJpcD8ieWVzIjoibm8ifSI+JHthLmJvb2tlZD9jKGBCb29rZWQgwrcgJHtsKGEuYm9va2VkKX1gLGDlt7LorqIgwrcgJHtsKGEuYm9va2VkKX1gKTphLmluVHJpcD9jKCJJbiB0aGUgdHJpcCIsIuW3suWcqOihjOeoi+S4rSIpOmMoIlBsYW4gb25seSIsIuS7heiuoeWIkiIpfTwvc3Bhbj5gLG89YT0+YCBkYXRhLWhvdGVsPSIke2woYS5pZCl9IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiR7YS5jaGVja0luP2AgZGF0YS1jaT0iJHtsKGEuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woYS5jaGVja091dCl9ImA6IiJ9YCxzPWE9PmEuY2hlY2tvdXQ/YDxkaXYgY2xhc3M9InBsYW4tbmlnaHQiJHtvKGEpfT48c3Bhbj4ke2MoYENoZWNrIG91dCDCtyAke2woYS5uYW1lKX1gLGDnprvlupcgwrcgJHtsKGEubmFtZSl9YCl9PC9zcGFuPjwvZGl2PmA6TnVtYmVyKGEubmlnaHQ/PzEpPjE/YDxkaXYgY2xhc3M9InBsYW4tbmlnaHQiJHtvKGEpfT4KICAgICAgICAgICA8c3Bhbj4ke2woYyhgTmlnaHQgJHthLm5pZ2h0fSBvZiAke2EubmlnaHRzfSDCtyAke2EubmFtZX1gLGDnrKwgJHthLm5pZ2h0fS8ke2EubmlnaHRzfSDmmZogwrcgJHthLm5hbWV9YCkpfTwvc3Bhbj4ke24oYSl9CiAgICAgICAgIDwvZGl2PmA6YDxkaXYgY2xhc3M9InBsYW4tc3RheSIke28oYSl9PgogICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcy1zaG90IiBzdHlsZT0iJHtndChTdHJpbmcoYS5pZCkpfSI+JHthLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKGEuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6YDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChidChTdHJpbmcoYS5uYW1lKSkpfTwvc3Bhbj5gfTwvc3Bhbj4KICAgICAgICAgICA8c3BhbiBjbGFzcz0icHMtYm9keSI+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtsKGEubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldGEiPiR7bChbYS5kZXRhaWwsYS5uaWdodHM/YyhgJHtwZShhLm5pZ2h0cyl9IGhlcmVgLGDlnKjmraTkvY8ke3BlKGEubmlnaHRzKX1gKToiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgICAgJHthLnByaWNlP2A8c3BhbiBjbGFzcz0icHMtcHJpY2UiPiR7bChhLnByaWNlKX08L3NwYW4+YDoiIn0KICAgICAgICAgICAgICR7bihhKX0KICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgIDwvZGl2PmAscj1hPT5gCiAgICA8ZGl2IGNsYXNzPSJwbGFuLWl0ZW0iPgogICAgICA8ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChhLm5hbWUpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChbYS5kZXRhaWwsYS5wcmljZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke24oYSl9CiAgICA8L2Rpdj5gLGk9YT0+KGEucGxhbj8/W10pLmxlbmd0aD9gPG9sIGNsYXNzPSJtb21lbnRzIj4ke2EucGxhbi5tYXAodT0+YDxsaT4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hlbiI+JHtsKHUudGltZT8/IiIpfTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hhdCI+PGI+JHtsKHUud2hhdCl9PC9iPiR7dS5ub3RlP2A8c21hbGw+JHtsKHUubm90ZSl9PC9zbWFsbD5gOiIifTwvc3Bhbj4KICAgICAgICAgICAgPC9saT5gKS5qb2luKCIiKX08L29sPmA6IiI7cmV0dXJuW2A8ZGl2PgogICAgICAgPGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+CiAgICAgICAke2Uuc3RheT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKEtvKGUuc3RheSkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iZ2FwIj48Yj4ke2woTnVtYmVyKGUuaW5UcmlwPz8wKStOdW1iZXIoZS5ib29rZWQ/PzApKX0vJHtsKGUucGxhbm5lZCl9PC9iPjxzcGFuPiR7bChvZT09PSJ6aCI/YOiuoeWIkuS4reeahCAke2UucGxhbm5lZH0g6aG56YeM77yMJHtOdW1iZXIoZS5pblRyaXA/PzApK051bWJlcihlLmJvb2tlZD8/MCl9IOmhueW3suWcqOihjOeoi+S4reaIluW3sumihOiuou+8jOWFtuS9meWPquaYr+iuoeWIkuOAgmA6ZS5nYXA/PyIiKX08L3NwYW4+PC9kaXY+YCxgPGRpdiBjbGFzcz0iZGF5cyI+JHt0Lm1hcCgoYSx1KT0+YAogICAgICA8ZGl2IGNsYXNzPSJkYXlyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImRheW51bSI+PGI+JHt1KzF9PC9iPjxpPjwvaT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkYXlib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRheWxhYmVsIj4ke2woYS5sYWJlbCl9JHthLmRhdGU/YDxzbWFsbD4gwrcgJHtsKEdfKFN0cmluZyhhLmRhdGUpKSl9PC9zbWFsbD5gOiIifTwvZGl2PgogICAgICAgICAgJHthLm5vdGU/YDxkaXYgY2xhc3M9ImRheW5vdGUiPiR7bChhLm5vdGUpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAke2koYSl9CiAgICAgICAgICAkeyhhLml0ZW1zPz9bXSkubWFwKGQ9PmQua2luZD09PSJob3RlbCI/cyhkKTpyKGQpKS5qb2luKCIiKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCx5dShlKSxLXyhlKV0uam9pbigiIil9LEtfPWU9Pntjb25zdCB0PUxnKGUpO2lmKHQ8MClyZXR1cm4iIjtjb25zdCBuPWUuc3VnZ2VzdGlvbnNbdF0uYXNrcyxvPVsuLi5uZXcgU2V0KG4ubWFwKGk9PlN0cmluZyhpLmFyZ3M/LmhvdGVsPz8iIikpKV0scz1pPT4oZS5kYXlzPz9bXSkuZmxhdE1hcChhPT5hLml0ZW1zPz9bXSkuZmluZChhPT5hLmtpbmQ9PT0iaG90ZWwiJiZhLmlkPT09aSk/Lm5hbWUscj1uLmxlbmd0aD09PTE/YyhgQm9vayAke3Mob1swXT8/IiIpPz8idGhpcyBzdGF5In1gLGDpooTorqIke3Mob1swXT8/IiIpPz8i6L+Z5LiA5q61In1gKTpvLmxlbmd0aD09PW4ubGVuZ3RoP2MoYEJvb2sgdGhlc2UgJHtuLmxlbmd0aH0gaG90ZWxzYCxg6aKE6K6i6L+ZICR7bi5sZW5ndGh9IOWutmApOmMoYEJvb2sgdGhlc2UgJHtuLmxlbmd0aH0gc3RheXNgLGDpooTorqLov5kgJHtuLmxlbmd0aH0g5q615L2P5a6/YCk7cmV0dXJuYDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtc3VnZ2VzdD0iJHt0fSI+JHtsKHIpfTwvYnV0dG9uPjwvZGl2PmB9LEdfPWU9Pl9lKGUpLHdlPShlLHQ9ITEpPT57aWYoIWV8fHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm47Y29uc3Qgbj10JiZlLnZpZXc9PT0ibWVtYmVyIiYmcmU/ey4uLmUsbWVtYmVyOnJlfTplO2p3KG4pLG4udG9vbE5hbWVzJiYodHU9bi50b29sTmFtZXMpLChuLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCJ8fG4uYm9va2luZ01vZGU9PT0iaG9sZCIpJiYoZGc9bi5ib29raW5nTW9kZSksdHlwZW9mIG4udG9vbE5hbWVzPT0ib2JqZWN0IiYmKG91PW4uc2FuZGJveD09PSEwLHBnPW4ucGhvbmVSZXF1aXJlZD09PSEwKSwobi5sYW5nPT09InpoInx8bi5sYW5nPT09ImVuIikmJihvZT1uLmxhbmcsSHcoKSksbi5icmFuZCYmKEZlPVN0cmluZyhuLmJyYW5kKSksbi5hY2NlbnQmJmJnKG4uYWNjZW50KSxuLnByaW1hcnkmJnlnKG4ucHJpbWFyeSksbi5mb250cyYmdmcobi5mb250cyksbi5sb2dvVXJsJiYoa3M9U3RyaW5nKG4ubG9nb1VybCkpLG4ubG9nb0RhcmtVcmwmJihUaT1TdHJpbmcobi5sb2dvRGFya1VybCkpLG4uc2hvd05hbWU9PT0hMCYmKGNpPSEwKSxuLnByb2dyYW1tZSYmKHppPVN0cmluZyhuLnByb2dyYW1tZSkpLG4ubWFya2V0JiZBcnJheS5pc0FycmF5KG4ubWFya2V0LnN1cHBsaWVycykmJihrZT1uLm1hcmtldCksbi52aWV3PT09ImJvb2tpbmciJiYoY3Q9IiIpLG4uY29kZVByZWZpeCYmKHhpPVN0cmluZyhuLmNvZGVQcmVmaXgpKSx0eXBlb2Ygbi5kZW1vPT0iYm9vbGVhbiImJihudT1uLmRlbW8pLG4uZGVtb05vdGUmJihzZz1TdHJpbmcobi5kZW1vTm90ZSkpLHR5cGVvZiBuLnJvb21zX3dhbnRlZD09Im51bWJlciI/VT1uLnJvb21zX3dhbnRlZDoobi52aWV3PT09ImhvdGVscyJ8fG4udmlldz09PSJkZXN0aW5hdGlvbnMifHxuLnZpZXc9PT0ibm8taG90ZWxzIikmJm4uc3RheT8uY2hlY2tJbiYmIUh0JiYoVT1NYXRoLm1heCgxLE51bWJlcihuLmFzaz8ucm9vbXM/PzEpfHwxKSksdHx8KG4udmlldz09PSJtZW1iZXIiJiZuLm1lbWJlcj8udGllcj8ubmFtZT9yZT1uLm1lbWJlcjpuLm1lbWJlcj8udGllcj8ubmFtZSYmKHJlPXJlPy5wcm9ncmFtbWU9PT1uLm1lbWJlci5wcm9ncmFtbWUmJnJlPy50aWVyPy5uYW1lPT09bi5tZW1iZXIudGllci5uYW1lP3suLi5yZSwuLi5uLm1lbWJlcixwcmVmZXJlbmNlczpuLm1lbWJlci5wcmVmZXJlbmNlc306bi5tZW1iZXIpLChuLnZpZXc9PT0ic2lnbmVkLW91dCJ8fG4uc2lnbmVkSW49PT0hMSkmJihyZT1udWxsKSksbi5zdGF5Py5jaGVja0luJiZuLnN0YXkuY2hlY2tPdXQ+bi5zdGF5LmNoZWNrSW4mJiFPbiYmIUh0JiYoUz17Y2hlY2tJbjpuLnN0YXkuY2hlY2tJbixjaGVja091dDpuLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOm4uc3RheS5ndWVzdHM/PzJ9KSwhTG4mJihuLnZpZXc9PT0idHJpcCJ8fG4udmlldz09PSJuZWVkcy1kYXRlcyIpJiYoaHQ9bi5saW5lcz8/W10pLChuLnZpZXc9PT0iYm9va2luZyJ8fG4udmlldz09PSJlbXB0eS10cmlwIikmJihodD1bXSxJdD0wKSxydD1TdHJpbmcobi52aWV3Pz8iIikscmcoKSxadyhuKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2tsb2dvIik/LnJlbW92ZSgpO2NvbnN0IG89RygiYnJhbmQiKTtrcz8oZXUoKSxvLmhpZGRlbj0hMSxHKCJ0aXRsZSIpLmhpZGRlbj0hY2ksY2kmJihHKCJ0aXRsZSIpLnRleHRDb250ZW50PUZlfHxjKCJIb3RlbHMiLCLphZLlupciKSkpOihvLmhpZGRlbj0hMCxHKCJ0aXRsZSIpLmhpZGRlbj0hMSxHKCJ0aXRsZSIpLnRleHRDb250ZW50PUZlfHxjKCJIb3RlbHMiLCLphZLlupciKSksRygic3ViIikudGV4dENvbnRlbnQ9WF8obiksV3coKSx0UygpLGVTKCk7Y29uc3Qgcz17aG90ZWxzOmlfLGRlc3RpbmF0aW9uczpRdywibm8taG90ZWxzIjphXyxob3RlbDpiZCwibm8tcm9vbXMiOmJkLCJob3RlbC1ub3QtZm91bmQiOnA9PihwLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGg/dnUocC5xdWVyeSxwLmNhbmRpZGF0ZXMscC52b2NhYj8ubm91bik6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoYXQgaG90ZWwgaXMgbm90IGluIHRoaXMgY29ubmVjdG9yLiIsIui/memHjOayoeaciei/meWutumFkuW6l+OAgiIpfTwvZGl2PmAsZXh0cmFzOnZfLHRyaXA6d18sIm5lZWRzLWRhdGVzIjpRXyxib29raW5nOk9fLCJuZWVkcy1ndWVzdCI6eF8sbWVtYmVyOklfLCJtZW1iZXItbm90LWZvdW5kIjpBXywic2lnbmVkLW91dCI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJTaWduZWQgb3V0LiBSYXRlcyBhcmUgdGhlIHB1YmxpYyBvbmVzIGFnYWluLiIsIuW3sumAgOWHuueZu+W9le+8jOS7t+agvOaBouWkjeS4uuWFrOW8gOS7t+OAgiIpfTwvZGl2PjxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPjwvZGl2PmAsImVtcHR5LXRyaXAiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhlcmUgaXMgbm90aGluZyBpbiB0aGUgdHJpcCB5ZXQuIiwi6KGM56iL6YeM6L+Y5rKh5pyJ5YaF5a6544CCIil9PC9kaXY+YCxib29raW5nczpCXywiY2FuY2VsbGF0aW9uLXByZXZpZXciOl9kLGNhbmNlbGxlZDpfZCwiY2hhbmdlLXByZXZpZXciOlNkLGNoYW5nZWQ6U2QsImJvb2tpbmctbm90LWZvdW5kIjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vIGJvb2tpbmcgaGVyZSBtYXRjaGVzIHRoYXQgY29kZS4iLCLmsqHmnInlkozov5nkuKrnoa7orqTnoIHlr7nlupTnmoTpooTorqLjgIIiKX08L2Rpdj5gLGNvbXBhcmlzb246Vl8sIm5vdGhpbmctdG8tY29tcGFyZSI6cD0+KHAuZHJvcHBlZD8/W10pLnNvbWUoaD0+KGguY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk/eXUocCk6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vbmUgb2YgdGhvc2UgYXJlIGhvdGVscyB0aGlzIGNvbm5lY3RvciBrbm93cy4iLCLov5nkupvpg73kuI3mmK/ov5nph4znmoTphZLlupfjgIIiKX08L2Rpdj5gLGl0aW5lcmFyeTpKXywiZW1wdHktaXRpbmVyYXJ5IjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIkFuIGl0aW5lcmFyeSBuZWVkcyBhdCBsZWFzdCBvbmUgZGF5LiIsIuihjOeoi+iuoeWIkuiHs+WwkemcgOimgeS4gOWkqeOAgiIpfTwvZGl2PmAscG9saWN5OmRpLHBvbGljaWVzOmRpLCJwb2xpY3ktbWlzc2luZyI6ZGksZXJyb3I6al8sImZpbmQtYm9va2luZyI6KCk9PlsnPGRpdiBjbGFzcz0ibm90ZSI+QSBib29raW5nIG1hZGUgaW4gYW5vdGhlciBjb252ZXJzYXRpb24gaXMgZm91bmQgd2l0aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCBpdCB3YXMgbWFkZSB3aXRoIC0gYm90aCwgYXMgdGhleSBhcmUgb24gdGhlIGNvbmZpcm1hdGlvbi48L2Rpdj4nLGA8ZGl2IGNsYXNzPSJmb3JtIj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d28iPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08aW5wdXQgaWQ9ImZjb2RlIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIke2xkKCk/YCBwbGFjZWhvbGRlcj0iJHtsKGxkKCkpfSJgOiIifT48L2xhYmVsPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiRW1haWwiLCLpgq7nrrEiKX08aW5wdXQgaWQ9ImZtYWlsIiB0eXBlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIlRoZSBvbmUgb24gdGhlIGJvb2tpbmciLCLpooTorqLml7bnlKjnmoTpgq7nrrEiKX0iPjwvbGFiZWw+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Imxvb2t1cC1ib29raW5nIj4ke2MoIkZpbmQgaXQiLCLmn6Xmib4iKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YF0uam9pbigiIiksIm5vLW1lbWJlciI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJOb2JvZHkgaXMgc2lnbmVkIGluLCBzbyB0aGVyZSBpcyBub3RoaW5nIHNhdmVkIHRvIGZvcmdldC4iLCLlvZPliY3msqHmnInnmbvlvZXvvIzmsqHmnInlj6/muIXpmaTnmoTlgY/lpb3jgIIiKX08L2Rpdj4ke0NzKCEwKX1gLCJtZW1iZXItc2lnbi1pbiI6KCk9PltgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJTaWduIGluIHdpdGggdGhlIG1lbWJlcnNoaXAgbnVtYmVyIGFuZCB0aGUgc3VybmFtZSBwcmludGVkIG9uIHRoZSBjYXJkIHRvIHNlZSB0aGUgbWVtYmVyIHJhdGUgb24gZXZlcnkgcHJpY2UgaGVyZS4iLCLnlKjljaHkuIrljbDnmoTkvJrlkZjlj7flkozlp5PmsI/nmbvlvZXvvIzov5nph4znmoTmr4/kuKrku7fmoLzpg73kvJrmmL7npLrkvJrlkZjku7fjgIIiKX08L2Rpdj5gLENzKCEwKV0uam9pbigiIil9OyhydD09PSJob3RlbCJ8fHJ0PT09Im5vLXJvb21zInx8cnQ9PT0ibmVlZHMtZGF0ZXMiKSYmbi5ob3RlbD8uaWQ/KEZ0PVN0cmluZyhuLmhvdGVsLmlkKSxuLm5lZWRzRGF0ZXMmJnNldFRpbWVvdXQoKCk9PlV0KDAsIVlyKSwwKSk6KEZ0PSIiLCR1KCkpO2NvbnN0IHI9eHQobikhPT14dChQKTtQPW47Y29uc3QgaT1zW3J0XTtHKCJjb250ZW50IikuaW5uZXJIVE1MPShpP2kobik6YDxkaXYgY2xhc3M9ImVyciI+JHtsKG4uZXJyb3I/P2MoIlNvbWV0aGluZyBjYW1lIGJhY2sgdGhhdCB0aGlzIGNhcmQgZG9lcyBub3Qga25vdyBob3cgdG8gZHJhdy4iLCLmlLbliLDkuobov5nlvKDljaHniYfml6Dms5XmmL7npLrnmoTlhoXlrrnjgIIiKSl9JHtuLmRldGFpbD9gPGJyPiR7bChuLmRldGFpbCl9YDoiIn08L2Rpdj5gKStZXyhuKTtjb25zdCBhPUcoImNvbnRlbnQiKTthLmNsYXNzTGlzdC5yZW1vdmUoImVudGVyIiksciYmZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiImJihhLm9mZnNldFdpZHRoLGEuY2xhc3NMaXN0LmFkZCgiZW50ZXIiKSk7Y29uc3QgdT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudCAuZmxleC1kYXRlcyIpLGQ9dT8ucXVlcnlTZWxlY3RvcigiLmZkLm9uIik7aWYodSYmZCl7Y29uc3QgcD1bLi4udS5xdWVyeVNlbGVjdG9yQWxsKCIuZmQiKV0saD1wWzBdPy5vZmZzZXRMZWZ0Pz8wLGY9ZC5vZmZzZXRMZWZ0LSh1LmNsaWVudFdpZHRoLWQub2Zmc2V0V2lkdGgpLzIsJD1wLmZpbHRlcih6PT56Lm9mZnNldExlZnQ8PWYrMSkucG9wKCk/P3BbMF07dS5zY3JvbGxMZWZ0PU1hdGgubWF4KDAsKCQ/Lm9mZnNldExlZnQ/P2gpLWgpO2NvbnN0IGs9KCk9Pnt1LmNsYXNzTGlzdC50b2dnbGUoImF0LXN0YXJ0Iix1LnNjcm9sbExlZnQ8PTIpLHUuY2xhc3NMaXN0LnRvZ2dsZSgiYXQtZW5kIix1LnNjcm9sbExlZnQrdS5jbGllbnRXaWR0aD49dS5zY3JvbGxXaWR0aC0yKX07aygpLHUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixrLHtwYXNzaXZlOiEwfSl9cnQ9PT0iaG90ZWxzIiYmIUJuKCkmJihsdT1jdSgpLFhyKE51bWJlcihuLnRvdGFsPz8wKS1OdW1iZXIobi5vZmZzZXQ/PzApKSE9PXhzJiZ3ZShuLHQpKX0sTGc9ZT0+ZT8udmlldz09PSJpdGluZXJhcnkiPyhlLnN1Z2dlc3Rpb25zPz9bXSkuZmluZEluZGV4KHQ9PkFycmF5LmlzQXJyYXkodD8uYXNrcykmJnQuYXNrcy5sZW5ndGg+MCYmdC5hc2tzLmV2ZXJ5KG49Pm4/LnRvb2w9PT0iYWRkVG9UcmlwIikpOi0xLFlfPWU9Pntjb25zdCB0PSEhQWUuZ2V0SG9zdENhcGFiaWxpdGllcygpPy5tZXNzYWdlLG49cj0+bChTdHJpbmcocj8/IiIpLnJlcGxhY2UoLyIoW14iXSopIi9nLCLigJwkMeKAnSIpKSxvPUxnKGUpLHM9KGUuc3VnZ2VzdGlvbnM/P1tdKS5tYXAoKHIsaSk9Pmk9PT1vPyIiOnI/LmFza3x8cj8uYXNrcz8ubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJjaGlwIG5leHQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zdWdnZXN0PSIke2l9Ij48c3Bhbj4ke24oci5sYWJlbCl9PC9zcGFuPiR7RS5hcnJvd308L2J1dHRvbj5gOnI/LnNheSYmdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBuZXh0IHNheSIgdHlwZT0iYnV0dG9uIiBkYXRhLXN1Z2dlc3Q9IiR7aX0iPjxzcGFuPiR7bihyLmxhYmVsKX0gPHNtYWxsPsK3IGluIHRoZSBjaGF0PC9zbWFsbD48L3NwYW4+JHtFLmFycm93fTwvYnV0dG9uPmA6IiIpLmpvaW4oIiIpO3JldHVybiBzP2A8ZGl2IGNsYXNzPSJzdWdnZXN0Ij48ZGl2IGNsYXNzPSJ3bCI+JHtjKCJOZXh0Iiwi5o6l5LiL5p2lIil9PC9kaXY+JHtzfTwvZGl2PmA6IiJ9LFFfPWU9PltlLmhvdGVsP1BnKGUuaG90ZWwpOiIiLGA8ZGl2IGNsYXNzPSJlcnIiPiR7bChvZT09PSJ6aCImJmUud2h5Q29kZSYmTmdbU3RyaW5nKGUud2h5Q29kZSldP0lzKGUud2h5LGUud2h5Q29kZSxlLndoeUFyZ3MpOm9lPT09InpoIiYmIWVuKFN0cmluZyhlLndoeT8/IiIpKT8i6K+35YWI6YCJ5aW95YWl5L2P5ZKM56a75bqX5pel5pyf77yM5YaN5oqK5oi/6Ze05Yqg5YWl6KGM56iL44CCIjplLndoeT8/IldoaWNoIG5pZ2h0cz8gQSByb29tIG5lZWRzIGEgY2hlY2staW4gYW5kIGEgY2hlY2stb3V0IGRhdGUuIil9PC9kaXY+YCwkZyhTdHJpbmcoZS5ob3RlbD8uaWQ/PyIiKSxlLmhvdGVsPy50b2RheVRoZXJlKV0uam9pbigiIiksWF89ZT0+ZS52aWV3PT09ImhvdGVscyJ8fGUudmlldz09PSJob3RlbCJ8fGUudmlldz09PSJuby1yb29tcyJ8fGUudmlldz09PSJ0cmlwIj8iIjplLnZpZXc9PT0iY29tcGFyaXNvbiI/YyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApOmUudmlldz09PSJpdGluZXJhcnkiP051bWJlcihlLmJvb2tlZCk+MD9jKGAke2UuYm9va2VkfS8ke2UucGxhbm5lZH0gYm9va2VkYCxg5bey6K6iICR7ZS5ib29rZWR9LyR7ZS5wbGFubmVkfWApOmMoYCR7ZS5pblRyaXB9LyR7ZS5wbGFubmVkfSBpbiB0aGUgdHJpcGAsYOihjOeoi+S4rSAke2UuaW5UcmlwfS8ke2UucGxhbm5lZH1gKTplLnZpZXc9PT0iYm9va2luZ3MiP2MoYCR7ZS5jb3VudD8/MH0gYm9va2luZyR7TnVtYmVyKGUuY291bnQpPT09MT8iIjoicyJ9YCxgJHtlLmNvdW50Pz8wfSDnrJTpooTorqJgKToiIixlUz0oKT0+e2NvbnN0IGU9RygibWVtYmVyY2hpcCIpO3JlPyhlLmhpZGRlbj0hMSxlLnRleHRDb250ZW50PWMoYCR7cmUudGllcj8ubmFtZT8/Ik1lbWJlciJ9IMK3ICR7TWF0aC5yb3VuZCgocmUudGllcj8uZGlzY291bnQ/PzApKjEwMCl9JSBvZmZgLGAke3JlLnRpZXI/Lm5hbWU/PyLkvJrlkZgifSDCtyDkvJjmg6AgJHtNYXRoLnJvdW5kKChyZS50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCksZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0IiwibWVtYmVyIiksZS5zZXRBdHRyaWJ1dGUoInRpdGxlIixbcmUubmFtZSxyZS5wcm9ncmFtbWVdLmZpbHRlcih0PT50eXBlb2YgdD09InN0cmluZyImJnQpLmpvaW4oIiDCtyAiKSkpOihlLmhpZGRlbj0hSm8oInNpZ25JbiIpfHxydD09PSJtZW1iZXItbm90LWZvdW5kIixlLnRleHRDb250ZW50PWMoIk1lbWJlciBzaWduIGluIiwi5Lya5ZGY55m75b2VIiksZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0IiwiYXNrLXNpZ24taW4iKSxlLnJlbW92ZUF0dHJpYnV0ZSgidGl0bGUiKSl9LHRTPSgpPT57Y29uc3QgZT1HKCJoZWFkdHJpcCIpLHQ9TG4/SXQ6SXR8fGh0Lmxlbmd0aDtlLmhpZGRlbj10PT09MHx8cnQ9PT0idHJpcCIsRygiaGVhZHRyaXBuIikudGV4dENvbnRlbnQ9U3RyaW5nKHQpfSxwaT0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpIiksdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY28iKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndSIpO1M9e2NoZWNrSW46ZT8udmFsdWU/P1MuY2hlY2tJbixjaGVja091dDp0Py52YWx1ZT8/Uy5jaGVja091dCxndWVzdHM6TnVtYmVyKG4/LnZhbHVlPz9TLmd1ZXN0cyl8fDJ9fSxJbj0oZT17fSk9PlMuY2hlY2tJbiYmUy5jaGVja091dD97Y2hlY2tJbjpTLmNoZWNrSW4sY2hlY2tPdXQ6Uy5jaGVja091dCxndWVzdHM6Uy5ndWVzdHMsLi4uZX06ZTtsZXQgamksT249ITE7Y29uc3QgJHU9KCk9PntjbGVhclRpbWVvdXQoamkpLE9uPSExfSxVdD0oZT0wLHQ9ITEpPT57RnQmJihjbGVhclRpbWVvdXQoamkpLE9uPSEwLGppPXNldFRpbWVvdXQoKCk9PntpZighRnQpe09uPSExO3JldHVybn1pZihfbil7VXQoMTUwLHQpO3JldHVybn1Pbj0hMSxqKCJnZXRIb3RlbCIse2hvdGVsOkZ0LHJvb21zOlUsLi4uSW4oKX0sdD97bm90ZTpMd306e30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIG5pZ2h0cy4iLCLmsqHog73liqDovb3ov5nkupvml6XmnJ/jgIIiKSkpfSxlKSl9LGlzPSgpPT57Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcm9vbXMtbl0sW2RhdGEtbGlzdC1yb29tc10iKSl7Y29uc3QgdD1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGEtcm9vbXMtbiIpPz9lLmdldEF0dHJpYnV0ZSgiZGF0YS1saXN0LXJvb21zIikpO2UuZGlzYWJsZWQ9dDwwP1U8PTE6VT49QnR9Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZ3Vlc3RzLW5dIikpe2NvbnN0IHQ9TnVtYmVyKGUuZ2V0QXR0cmlidXRlKCJkYXRhLWd1ZXN0cy1uIikpO2UuZGlzYWJsZWQ9dDwwP1MuZ3Vlc3RzPD0xOlMuZ3Vlc3RzPj16c31mb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1ndWVzdHMtc2hvd25dIikpZS50ZXh0Q29udGVudD1TdHJpbmcoUy5ndWVzdHMpO2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhcnR5LXdvcmRzXSIpKWUudGV4dENvbnRlbnQ9a2coKX0sTz1lPT57Zm9yKGNvbnN0IHQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNhaWQiKSl0LnJlbW92ZSgpO0coImNvbnRlbnQiKS5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLGA8ZGl2IGNsYXNzPSJlcnIgc2FpZCIgcm9sZT0iYWxlcnQiPiR7bChlKX08L2Rpdj5gKX0sblM9ZT0+e2Zvcihjb25zdCBuIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5maWVsZC1lcnIsLmZvcm0tZXJyIikpbi5yZW1vdmUoKTtmb3IoY29uc3QgbiBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbYXJpYS1pbnZhbGlkPSJ0cnVlIl0nKSluLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIik7aWYoIWUubGVuZ3RoKXJldHVybjtmb3IoY29uc3Rbbiwsb11vZiBlKXtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pO3MmJihzLnNldEF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIiwidHJ1ZSIpLHMuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixgJHtufS1lcnJgKSxzLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJlbmQiLGA8c3BhbiBjbGFzcz0iZmllbGQtZXJyIiBpZD0iJHtufS1lcnIiPiR7RS5lcnJvcn08c3Bhbj4ke2wobyl9PC9zcGFuPjwvc3Bhbj5gKSl9Y29uc3QgdD1lLm1hcCgoWyxuXSk9Pm4pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNndWVzdCBbZGF0YS1hY3Q9ImJvb2siXScpPy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWJlZ2luIixgPGRpdiBjbGFzcz0iZm9ybS1lcnIiIHJvbGU9ImFsZXJ0Ij4ke0UuZXJyb3J9PHNwYW4+JHtsKGUubGVuZ3RoPT09MT9jKGBDaGVjayAke3RbMF19IGJlZm9yZSBib29raW5nLmAsYOmihOiuouWJjeivt+ajgOafpe+8miR7dFswXX3jgIJgKTpjKGAke2UubGVuZ3RofSB0aGluZ3MgdG8gY2hlY2sgYmVmb3JlIGJvb2tpbmc6ICR7UmkodCl9LmAsYOmihOiuouWJjeaciSAke2UubGVuZ3RofSDpobnpnIDopoHmo4Dmn6XvvJoke3Quam9pbigi44CBIil944CCYCkpfTwvc3Bhbj48L2Rpdj5gKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlWzBdWzBdKT8uZm9jdXMoKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGU9Pntjb25zdCB0PWUudGFyZ2V0OyF0Py5jbG9zZXN0KCIjZ3Vlc3QiKXx8dC5nZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpIT09InRydWUifHx0LnZhbHVlLnRyaW0oKSYmKHQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWludmFsaWQiKSx0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3QuaWR9LWVycmApPy5yZW1vdmUoKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZ3Vlc3QgW2FyaWEtaW52YWxpZD0idHJ1ZSJdJyl8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNndWVzdCAuZm9ybS1lcnIiKT8ucmVtb3ZlKCkpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGU9Pntjb25zdCB0PWUudGFyZ2V0Py5jbG9zZXN0KCJbZGF0YS1ob3RlbF0sW2RhdGEtYWN0XSxbZGF0YS1wb2xpY3ldLFtkYXRhLWNhbmNlbF0sW2RhdGEtY29uZmlybS1jYW5jZWxdLFtkYXRhLWNvbmZpcm0tY2hhbmdlXSxbZGF0YS1leHRyYXNdLFtkYXRhLXJvb21zLW5dLFtkYXRhLWFza10sW2RhdGEtYm9va2luZy1leHRyYXNdLFtkYXRhLWJvb2tpbmctZXh0cmFdLFtkYXRhLXN1Z2dlc3RdLFtkYXRhLXBsYWNlXSxbZGF0YS1wbGFjZS1hbGxdLFtkYXRhLXNvcnRdLFtkYXRhLWxpc3Qtcm9vbXNdLFtkYXRhLWZpbHRlcl0sW2RhdGEtcGFuZWxdLFtkYXRhLXJlZ2lvbl0sW2RhdGEtZ3JvdXAtaG9tZV0sW2RhdGEtY2FsXSxbZGF0YS1kYXldLFtkYXRhLWNhbC1uYXZdLFtkYXRhLWNhbC1jbG9zZV0sW2RhdGEtaG91ci1zdGFydF0sW2RhdGEtYXJyaXZlXSxbZGF0YS1wYXJ0eV0sW2RhdGEtZ3Vlc3RzLW5dLFtkYXRhLXNwbGl0XSxbZGF0YS1vcGVuLWJvb2tpbmddLFtkYXRhLXN3YXBdLFtkYXRhLXJlc2VhcmNoXSIpO2lmKCF0KXJldHVybjtjb25zdCBuPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbCIpO2lmKG4hPT1udWxsKXtjb25zdFt5LF9dPW4uc3BsaXQoIjoiKTtydVt5XSYmR3coeSxfPT09Im91dCI/Im91dCI6ImluIik7cmV0dXJufWNvbnN0IG89dC5nZXRBdHRyaWJ1dGUoImRhdGEtZGF5Iik7aWYobyE9PW51bGwpe1l3KG8pO3JldHVybn1jb25zdCBzPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbC1uYXYiKTtpZihzIT09bnVsbCYmTil7Ti5tb250aD1BaShOLm1vbnRoLE51bWJlcihzKSksUHQoTi5wYWlyLGBbZGF0YS1jYWwtbmF2PSIke3N9Il1gKTtyZXR1cm59aWYodC5oYXNBdHRyaWJ1dGUoImRhdGEtY2FsLWNsb3NlIikmJk4pe2NvbnN0e3BhaXI6eX09TjtOLmluP3dnKCk6KE49bnVsbCxQdCh5KSk7cmV0dXJufWNvbnN0IHI9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYXNrIik7aWYociE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIpIT09InRydWUiO3Quc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyh5KSk7Y29uc3QgXz1TX1tyXTt5JiZfJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuYXNrW2RhdGEtYXNrPSIke199Il1gKT8uc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpLE1pKCk7cmV0dXJufWNvbnN0IGk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3BsaXQiKTtpZihpIT09bnVsbCl7Y29uc3RbeSxfXT1pLnNwbGl0KCI6IikubWFwKE51bWJlcik7cGkoKSxVPU1hdGgubWluKEJ0LE1hdGgubWF4KDEseXx8MSkpLFMuZ3Vlc3RzPU1hdGgubWluKHpzLE1hdGgubWF4KDEsX3x8MSkpLGlzKCksVXQoMCk7cmV0dXJufWlmKHQuaGFzQXR0cmlidXRlKCJkYXRhLXBhcnR5Iikpe0x0PSFMdDtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYXJ0eV0iKSl5LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKEx0KSk7Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnBhcnR5LXBhbmVsIikpeS5oaWRkZW49IUx0O3JldHVybn1jb25zdCBhPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1ZXN0cy1uIik7aWYoYSE9PW51bGwpe3QuZ2V0QXR0cmlidXRlKCJkYXRhLW9uIik9PT0iZGF0YS1yb29tcy1uIiYmcGkoKSxTLmd1ZXN0cz1NYXRoLm1pbih6cyxNYXRoLm1heCgxLFMuZ3Vlc3RzK051bWJlcihhKSkpLGlzKCksdC5nZXRBdHRyaWJ1dGUoImRhdGEtb24iKT09PSJkYXRhLWxpc3Qtcm9vbXMiP05uKDQ1MCk6RnQmJlV0KDQ1MCk7cmV0dXJufWNvbnN0IHU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtbGlzdC1yb29tcyIpO2lmKHUhPT1udWxsKXtVPU1hdGgubWluKEJ0LE1hdGgubWF4KDEsVStOdW1iZXIodSkpKTtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJscm4iKTt5JiYoeS50ZXh0Q29udGVudD1TdHJpbmcoVSkpLGlzKCksTm4oNDUwKTtyZXR1cm59Y29uc3QgZD10LmdldEF0dHJpYnV0ZSgiZGF0YS1yb29tcy1uIik7aWYoZCE9PW51bGwpe3BpKCksVT1NYXRoLm1pbihCdCxNYXRoLm1heCgxLFUrTnVtYmVyKGQpKSk7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm4iKTt5JiYoeS50ZXh0Q29udGVudD1TdHJpbmcoVSkpLGlzKCk7Y29uc3QgXz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmlnaHRzIik7XyYmKF8udGV4dENvbnRlbnQ9X2coKSksVXQoNDUwKTtyZXR1cm59Y29uc3QgcD10LmdldEF0dHJpYnV0ZSgiZGF0YS1hcnJpdmUiKTtpZihwIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0idHJ1ZSI7Zm9yKGNvbnN0IEQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtYXJyaXZlXSIpKUQuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyh5JiZEPT09dCkpO2NvbnN0IF89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd0aW1lIik7XyYmKF8udmFsdWU9eT9wOiIiKSxNaSgpO3JldHVybn1jb25zdCBoPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdXItc3RhcnQiKTtpZihoIT09bnVsbCl7aHUuc2V0KHQuZ2V0QXR0cmlidXRlKCJkYXRhLXJvb20iKT8/IiIsaCksUCYmd2UoUCk7cmV0dXJufWNvbnN0IGY9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWRkLXJvb20iKTtpZihmIT09bnVsbCYmdC5oYXNBdHRyaWJ1dGUoImRhdGEtc3RhcnQiKSl7aigiYWRkVG9UcmlwIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIscm9vbTpmLHN0YXJ0VGltZTp0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdGFydCIpPz8iIixyb29tczpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKXx8MSxndWVzdHM6Uy5ndWVzdHN9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWlmKGYhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik/PyIiLF89dC5jbGFzc0xpc3QuY29udGFpbnMoImFkZCIpJiYhdC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT9VOk51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpLEQ9dC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT97Y2hlY2tJbjp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jaSIpPz8iIixjaGVja091dDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jbyIpPz8iIixndWVzdHM6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1Iik/PzIpfTpJbigpO2ooImFkZFRvVHJpcCIse2hvdGVsOnkscm9vbTpmLHJvb21zOl8sLi4uRH0se3N0YXk6ISF0LmNsb3Nlc3QoIi5yb29tIikmJiF0LmNsYXNzTGlzdC5jb250YWlucygiYWRkIil9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0ICQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3dhcCIpO2lmKCQhPT1udWxsKXt3ZCgpO2NvbnN0W3ksX109JC5zcGxpdCgiOiIpLm1hcChOdW1iZXIpLEQ9KFA/LmZhaWxlZD8/W10pW3k/Py0xXSxsZT1EPy5hbHRlcm5hdGl2ZXM/LltfPz8tMV07aWYoIUR8fCFsZT8ucm9vbSlyZXR1cm47Y29uc3QgV2U9e2NoZWNrSW46RC5zdGF5Py5jaGVja0luLGNoZWNrT3V0OkQuc3RheT8uY2hlY2tPdXQsZ3Vlc3RzOkQuc3RheT8uZ3Vlc3RzPz9TLmd1ZXN0c307KGFzeW5jKCk9Pntmb3IoY29uc3QgQmUgb2YgRC5yb29tUmVmcz8/W10pYXdhaXQgaigiYWRkVG9UcmlwIix7aG90ZWw6RC5ob3RlbElkLHJvb206QmUscm9vbXM6MCwuLi5XZX0se3N0YXk6ITB9KTtmb3IoY29uc3QgQmUgb2YgRC5leHRyYVJlZnM/P1tdKWF3YWl0IGooImFkZFRvVHJpcCIse2hvdGVsOkQuaG90ZWxJZCxleHRyYTpCZSxxdWFudGl0eTowfSx7c3RheTohMH0pO2F3YWl0IGooImFkZFRvVHJpcCIse2hvdGVsOmxlLmhvdGVsSWQscm9vbTpsZS5yb29tLHJvb21zOkQucm9vbXM/PzEsLi4uV2V9KX0pKCkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGNoYW5nZSB0aGUgdHJpcC4iLCLmsqHog73mm7TmlrDooYznqIvjgIIiKSkpO3JldHVybn1pZih0LmdldEF0dHJpYnV0ZSgiZGF0YS1hY3QiKT09PSJyZXRyeS10cmlwIil7d2QoKSxqKCJ2aWV3VHJpcCIse30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSB0cmlwLiIsIuayoeiDveWKoOi9veihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0IGs9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcmVzZWFyY2giKTtpZihrIT09bnVsbCl7Y29uc3QgeT0oUD8uZmFpbGVkPz9bXSlbTnVtYmVyKGspXTtpZigheT8uY2l0eSlyZXR1cm47aigibGlzdEhvdGVscyIse2NpdHk6eS5jaXR5LGNoZWNrSW46eS5zdGF5Py5jaGVja0luLGNoZWNrT3V0Onkuc3RheT8uY2hlY2tPdXQsZ3Vlc3RzOnkuc3RheT8uZ3Vlc3RzPz9TLmd1ZXN0cywuLi5OdW1iZXIoeS5yb29tcyk+MT97cm9vbXM6TnVtYmVyKHkucm9vbXMpfTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3Qgej10LmdldEF0dHJpYnV0ZSgiZGF0YS1hZGQtZXh0cmEiKTtpZih6IT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1kYXkiKTtqKCJhZGRUb1RyaXAiLHtob3RlbDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIixleHRyYTp6LHF1YW50aXR5Ok51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpLC4uLnk/e2RheTp5fTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhlIHRyaXAuIiwi5rKh6IO95pu05paw6KGM56iL44CCIikpKTtyZXR1cm59Y29uc3QgQT10LmdldEF0dHJpYnV0ZSgiZGF0YS1wbGFjZSIpO2lmKEEhPT1udWxsKXtjb25zdCB5PVA/LmFzaz8uc29ydCxfPVA/LnZpZXc9PT0iaG90ZWxzIj9QPy5hc2s/LnF1ZXJ5OnZvaWQgMDtxaSgpO2NvbnN0IEQ9UD8udmlldz09PSJkZXN0aW5hdGlvbnMifHwhIVA/LnN0YXk/LmNoZWNrSW47aigibGlzdEhvdGVscyIsey4uLkE/e2NpdHk6QX06e30sLi4ueT97c29ydDp5fTp7fSwuLi5BJiZfP3txdWVyeTpffTp7fSwuLi5QPy52aWV3PT09ImhvdGVscyI/ZHMoUD8uYXNrKTp7fSwuLi5EP0R0KCk6e319KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgeD10LmdldEF0dHJpYnV0ZSgiZGF0YS1ncm91cC1ob21lIik7aWYoeCl7aigibGlzdEhvdGVscyIse2FsbDohMCxncm91cDp4LC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgVD10LmdldEF0dHJpYnV0ZSgiZGF0YS1maWx0ZXIiKTtpZihUPT09ImhvdXJseSIpe2NvbnN0e2hvdXJseTp5LC4uLl99PVA/LmFzaz8/e307aigibGlzdEhvdGVscyIsey4uLnVzKF8pLC4uLnk/e306e2hvdXJseTohMH19KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgZmlsdGVyIHRoZSBsaXN0LiIsIuayoeiDveetm+mAieWIl+ihqOOAgiIpKSk7cmV0dXJufWlmKFQhPT1udWxsKXtjb25zdCB5PVA/LmFzaz8/e30sXz1kcyh5KTtpZihULnN0YXJ0c1dpdGgoImdyb3VwOiIpKXtjb25zdCBsZT1ULnNsaWNlKDYpO18uZ3JvdXA9Xy5ncm91cD09PWxlP3ZvaWQgMDpsZX1lbHNlIGlmKFQuc3RhcnRzV2l0aCgiYnJhbmQ6Iikpe2NvbnN0IGxlPVQuc2xpY2UoNik7Xy5icmFuZD1fLmJyYW5kPT09bGU/dm9pZCAwOmxlfWVsc2UgaWYoVC5zdGFydHNXaXRoKCJmYWNpbGl0eToiKSl7Y29uc3QgbGU9VC5zbGljZSg5KSxXZT1fLmZhY2lsaXRpZXM/P1tdO18uZmFjaWxpdGllcz1XZS5pbmNsdWRlcyhsZSk/V2UuZmlsdGVyKEJlPT5CZSE9PWxlKTpbLi4uV2UsbGVdfWVsc2UoVD09PSJmcmVlQ2FuY2VsbGF0aW9uInx8VD09PSJicmVha2Zhc3QiKSYmKF9bVF09IV9bVF0pO2NvbnN0IEQ9ZHMoXyk7aigibGlzdEhvdGVscyIsey4uLmhkKHkpLC4uLkR9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgZmlsdGVyIHRoZSBsaXN0LiIsIuayoeiDveetm+mAieWIl+ihqOOAgiIpKSk7cmV0dXJufWNvbnN0IFo9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc29ydCIpO2lmKFohPT1udWxsKXtKZT14Zztjb25zdHtzb3J0OnksLi4uX309UD8uYXNrPz97fTtqKCJsaXN0SG90ZWxzIix7Li4uXywuLi5aIT09Imdyb3VwIj97c29ydDpafTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCByZW9yZGVyIHRoZSBsaXN0LiIsIuayoeiDvemHjeaWsOaOkuW6j+OAgiIpKSk7cmV0dXJufWNvbnN0IHNlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlLWFsbCIpO2lmKHNlIT09bnVsbCl7aigibGlzdEhvdGVscyIse2NpdHk6c2UsYWxsOiEwLC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgSj10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhcyIpO2lmKEohPT1udWxsKXtqKCJsaXN0RXh0cmFzIixpdChKKSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGxvYWQgdGhlIGFkZC1vbnMuIiwi5rKh6IO95Yqg6L296ZmE5Yqg5pyN5Yqh44CCIikpKTtyZXR1cm59Y29uc3QgVj10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhIik7aWYoViE9PW51bGwpe2ooInByZXZpZXdDaGFuZ2UiLHsuLi5pdCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nIik/PyIiKSxleHRyYTpWLHF1YW50aXR5Ok51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpfSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IHdvcmsgb3V0IHRoYXQgY2hhbmdlLiIsIuayoeiDveiuoeeul+i/measoeS/ruaUueOAgiIpKSk7cmV0dXJufWNvbnN0IEM9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZXh0cmFzIik7aWYoQyE9PW51bGwpe2ooImxpc3RFeHRyYXMiLHtob3RlbDpDLC4uLkluKCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgYWRkLW9ucy4iLCLmsqHog73liqDovb3pmYTliqDmnI3liqHjgIIiKSkpO3JldHVybn1jb25zdCBHZT10LmdldEF0dHJpYnV0ZSgiZGF0YS1wb2xpY3kiKTtpZihHZSE9PW51bGwpe2ooInBvbGljaWVzIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsdG9waWM6R2V9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGF0IHBvbGljeS4iLCLmsqHog73liqDovb3ov5nmnaHmlL/nrZbjgIIiKSkpO3JldHVybn1jb25zdCB2dD10LmdldEF0dHJpYnV0ZSgiZGF0YS1jYW5jZWwiKTtpZih2dCE9PW51bGwpe2ooInByZXZpZXdDYW5jZWxsYXRpb24iLGl0KHZ0KSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IHdvcmsgb3V0IHRoZSBmZWUuIiwi5rKh6IO96K6h566X5Y+W5raI6LS555So44CCIikpKTtyZXR1cm59Y29uc3QganQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZmlybS1jYW5jZWwiKTtpZihqdCE9PW51bGwpe2ooImNhbmNlbEJvb2tpbmciLHsuLi5pdChqdCksY29uZmlybWVkOiEwfSkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGNhbmNlbCB0aGF0IGJvb2tpbmcuIiwi5rKh6IO95Y+W5raI6L+Z56yU6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgU249dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZmlybS1jaGFuZ2UiKTtpZihTbiE9PW51bGwpe2NvbnN0IHk9UD8udG8/P3t9LF89UD8uZnJvbT8/e30sRD1QPy5hZGRPbixsZT15LmNoZWNrSW4mJih5LmNoZWNrSW4hPT1fLmNoZWNrSW58fHkuY2hlY2tPdXQhPT1fLmNoZWNrT3V0KTtqKCJjaGFuZ2VCb29raW5nIix7Li4uaXQoU24pLGNvbmZpcm1lZDohMCwuLi5sZT97Y2hlY2tJbjp5LmNoZWNrSW4sY2hlY2tPdXQ6eS5jaGVja091dH06e30sLi4uRD8uaWQ/e2V4dHJhOkQuaWQscXVhbnRpdHk6TnVtYmVyKEQudG8pfTp7fSwuLi55LnJvb21zIT09dm9pZCAwJiZOdW1iZXIoeS5yb29tcykhPT1OdW1iZXIoXy5yb29tcyk/e3Jvb21zOk51bWJlcih5LnJvb21zKX06e30sLi4ueS5yb29tTmFtZSYmeS5yb29tTmFtZSE9PV8ucm9vbU5hbWU/e3Jvb206eS5yb29tTmFtZX06e319KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2hhbmdlIHRoYXQgYm9va2luZy4iLCLmsqHog73kv67mlLnov5nnrJTpooTorqLjgIIiKSkpO3JldHVybn1jb25zdCBXPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFjdCIpO2lmKFc9PT0iYmFjayIpe1RkKCk7cmV0dXJufWNvbnN0IEdvPVc9PT0iYm9va2luZ3MiPyJib29raW5ncyI6dC5oYXNBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKSYmIXQuaGFzQXR0cmlidXRlKCJkYXRhLWNpIik/YGhvdGVsOiR7dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKX1gOiIiO2lmKEdvJiZ2ZS5sZW5ndGgmJnh0KHZlLmF0KC0xKT8ucGF5bG9hZCk9PT1Hbyl7VGQoKTtyZXR1cm59Y29uc3Qga3U9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcmVnaW9uIik7aWYoa3UhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIikhPT0idHJ1ZSI7Zm9yKGNvbnN0IF8gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcmVnaW9uXSIpKV8uc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoeSYmXz09PXQpKTtmb3IoY29uc3QgXyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWdpb24tYm9keV0iKSlfLmhpZGRlbj0heXx8Xy5nZXRBdHRyaWJ1dGUoImRhdGEtcmVnaW9uLWJvZHkiKSE9PWt1O3JldHVybn1pZihXPT09Im1vcmUtY291bnRyaWVzIil7Zm9yKGNvbnN0IHkgb2YodC5jbG9zZXN0KCJbZGF0YS1yZWdpb24tYm9keV0iKT8/ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5kZXN0W2hpZGRlbl0iKSl5LmhpZGRlbj0hMTt0LmNsb3Nlc3QoIi5wbGFjZXMiKT8ucmVtb3ZlKCk7cmV0dXJufWlmKFc9PT0ibW9yZS1wbGFjZXMiKXtmb3IoY29uc3QgeSBvZih0LmNsb3Nlc3QoIi5wbGFjZXMiKT8/ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jaGlwLnBsYWNlW2hpZGRlbl0iKSl5LmhpZGRlbj0hMTt0LnJlbW92ZSgpO3JldHVybn1jb25zdCBvaT10LmdldEF0dHJpYnV0ZSgiZGF0YS1wYW5lbCIpO2lmKG9pIT09bnVsbCl7SmU9SmU9PT1vaT8iIjpvaTtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYW5lbC1ib2R5XSIpKXkuaGlkZGVuPXkuZ2V0QXR0cmlidXRlKCJkYXRhLXBhbmVsLWJvZHkiKSE9PUplO2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhbmVsXSIpKXkuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoeS5nZXRBdHRyaWJ1dGUoImRhdGEtcGFuZWwiKT09PUplKSk7cmV0dXJufWlmKFc9PT0iY2xlYXItZmlsdGVycyIpe2NvbnN0e2hvdXJseTp5LC4uLl99PWhkKFA/LmFzayk7aigibGlzdEhvdGVscyIseT91cyhfKTpfKS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgY2xlYXIgdGhlIGZpbHRlcnMuIiwi5rKh6IO95riF6Zmk562b6YCJ44CCIikpKTtyZXR1cm59aWYoVz09PSJhbGwtaG90ZWxzIil7cWkoKSxqKCJsaXN0SG90ZWxzIix7YWxsOiEwLC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKFc9PT0icHJpY2UtbGlzdCIpe05uKDApO3JldHVybn1pZihXPT09ImZpbmQtYm9va2luZyIpe2NvbnN0IHk9e3ZpZXc6ImZpbmQtYm9va2luZyJ9O3huKHkpLHdlKHkpLGF0KCksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjb2RlIik/LmZvY3VzKCk7cmV0dXJufWlmKFc9PT0ibG9va3VwLWJvb2tpbmciKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY29kZSIpPy52YWx1ZS50cmltKCk/PyIiLF89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZtYWlsIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIXl8fCFfLmluY2x1ZGVzKCJAIikpe08oYygiQm90aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCB0aGUgYm9va2luZyB3YXMgbWFkZSB3aXRoLCBwbGVhc2UuIiwi6K+35ZCM5pe25aGr5YaZ56Gu6K6k56CB5ZKM6aKE6K6i5pe255So55qE6YKu566x44CCIikpO3JldHVybn1qKCJsaXN0Qm9va2luZ3MiLHtib29raW5nOnksZW1haWw6X30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb29rIHRoYXQgdXAuIiwi5rKh6IO95p+l5Yiw44CCIikpKTtyZXR1cm59aWYoVz09PSJmaW5kIil7RGcoKTtyZXR1cm59aWYoVz09PSJwYWdlLW5leHQifHxXPT09InBhZ2UtcHJldiIpe2NvbnN0IHk9UDtpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO2NvbnN0IF89WHIoKSxEPU51bWJlcih5Lm9mZnNldD8/MCksbGU9TWF0aC5taW4oXywoeS5ob3RlbHM/P1tdKS5sZW5ndGgpO2ooImxpc3RIb3RlbHMiLHsuLi55LmFzaz8/e30sb2Zmc2V0Olc9PT0icGFnZS1uZXh0Ij9EK2xlOk1hdGgubWF4KDAsRC1fKSxsaW1pdDpffSkudGhlbihhdCkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWlmKFc9PT0iZnVsbHNjcmVlbiIpe0FlLnJlcXVlc3REaXNwbGF5TW9kZSh7bW9kZToiZnVsbHNjcmVlbiJ9KS50aGVuKHk9PntEbj1TdHJpbmcoeT8ubW9kZT8/RG4pO2NvbnN0IF89UDtpZighXylyZXR1cm47Y29uc3QgRD1OdW1iZXIoXy50b3RhbD8/MCk7Qm4oKSYmXy52aWV3PT09ImhvdGVscyImJihOdW1iZXIoXy5vZmZzZXQ/PzApPjB8fChfLmhvdGVscz8/W10pLmxlbmd0aDxNYXRoLm1pbigxMixEKSk/aigibGlzdEhvdGVscyIsey4uLl8uYXNrPz97fSxsaW1pdDoxMn0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTp3ZShfKX0pLmNhdGNoKCgpPT5PKGMoIlRoaXMgYXBwIGNhbm5vdCBvcGVuIGZ1bGwgc2NyZWVuIGhlcmUuIiwi6L+Z6YeM5peg5rOV5YWo5bGP5omT5byA44CCIikpKTtyZXR1cm59aWYoVz09PSJtb3JlLWhvdGVscyIpe2NvbnN0IHk9UDtpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO2ooImxpc3RIb3RlbHMiLHsuLi55LmFzaz8/e30sb2Zmc2V0Ok51bWJlcih5Lm9mZnNldD8/MCkrKHkuaG90ZWxzPz9bXSkubGVuZ3RoLGxpbWl0OjEyfSx7Zm9sZDpfPT5fPy52aWV3PT09ImhvdGVscyI/ey4uLl8saG90ZWxzOlsuLi55LmhvdGVscz8/W10sLi4uXy5ob3RlbHM/P1tdXSxzaG93bjooeS5ob3RlbHM/P1tdKS5sZW5ndGgrKF8uaG90ZWxzPz9bXSkubGVuZ3RoLG9mZnNldDpOdW1iZXIoeS5vZmZzZXQ/PzApLHBsYWNlczp5LnBsYWNlcywuLi55LndpZGVuZWQ/e3dpZGVuZWQ6eS53aWRlbmVkfTp7fX06X30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIG1vcmUgaG90ZWxzLiIsIuayoeiDveWKoOi9veabtOWkmumFkuW6l+OAgiIpKSk7cmV0dXJufWlmKFc9PT0iaG9tZSIpe2ooImxpc3RIb3RlbHMiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKChXPT09Im1lbWJlciJ8fFc9PT0iZmluZC1ib29raW5nInx8Vz09PSJhc2stc2lnbi1pbiIpJiZfbilyZXR1cm47aWYoVz09PSJtZW1iZXIiKXtpZighcmUpcmV0dXJuO2NvbnN0IHk9e3ZpZXc6Im1lbWJlciIsbWVtYmVyOnJlfTt4bih5KSx3ZSh5KSxhdCgpO3JldHVybn1pZihXPT09ImFzay1zaWduLWluIil7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lnbmluIik7aWYoeSl5LmhpZGRlbj0hMTtlbHNle2NvbnN0IF89e3ZpZXc6Im1lbWJlci1zaWduLWluIn07eG4oXyksd2UoXyksYXQoKX1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW51bSIpPy5mb2N1cygpO3JldHVybn1pZihXPT09InNpZ24taW4iKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbnVtIik/LnZhbHVlLnRyaW0oKT8/IiIsXz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXN1ciIpPy52YWx1ZS50cmltKCk/PyIiO2lmKCF5fHwhXyl7TyhjKCJCb3RoIHRoZSBtZW1iZXJzaGlwIG51bWJlciBhbmQgdGhlIHN1cm5hbWUgb24gaXQsIHBsZWFzZS4iLCLor7flkIzml7bloavlhpnkvJrlkZjlj7flkozljaHkuIrnmoTlp5PmsI/jgIIiKSk7cmV0dXJufWooInNpZ25JbiIse251bWJlcjp5LHN1cm5hbWU6X30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBzaWduIGluLiIsIuayoeiDveeZu+W9leOAgiIpKSk7cmV0dXJufWlmKFc9PT0iZm9yZ2V0LXByZWZzIil7aigiZm9yZ2V0UHJlZmVyZW5jZXMiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgZm9yZ2V0IHRoZW0uIiwi5rKh6IO95riF6Zmk44CCIikpKTtyZXR1cm59Y29uc3Qgd3U9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3VnZ2VzdCIpO2lmKHd1IT09bnVsbCl7Y29uc3QgeT0oUD8uc3VnZ2VzdGlvbnM/P1tdKVtOdW1iZXIod3UpXTt5Py5hc2s/LnRvb2w/aihTdHJpbmcoeS5hc2sudG9vbCkseS5hc2suYXJncz8/e30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBkbyB0aGF0IGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveWujOaIkOOAgiIpKSk6QXJyYXkuaXNBcnJheSh5Py5hc2tzKSYmeS5hc2tzLmxlbmd0aD8oYXN5bmMoKT0+e2Zvcihjb25zdFtfLERdb2YgeS5hc2tzLmVudHJpZXMoKSlhd2FpdCBqKFN0cmluZyhELnRvb2wpLEQuYXJncz8/e30se3B1c2g6Xz09PTB9KX0pKCkuY2F0Y2goKCk9Pk8oYygiQ291bGQgbm90IHB1dCBhbGwgb2YgdGhlbSBpbiB0aGUgdHJpcCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73lhajpg6jliqDlhaXooYznqIvjgIIiKSkpOnk/LnNheSYmQWUuc2VuZE1lc3NhZ2Uoe3JvbGU6InVzZXIiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OlN0cmluZyh5LnNheSl9XX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBzZW5kIHRoYXQgdG8gdGhlIGNoYXQuIiwi5rKh6IO95Y+R6YCB5Yiw5a+56K+d44CCIikpKTtyZXR1cm59aWYoVz09PSJhc2stdHJpcC1hZ2FpbiIpe0FlLnNlbmRNZXNzYWdlKHtyb2xlOiJ1c2VyIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpjKCJQbGVhc2Ugc2hvdyBteSB0cmlwIGFnYWluLiIsIuivt+mHjeaWsOaYvuekuuaIkeeahOihjOeoi+OAgiIpfV19KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3Qgc2VuZCB0aGF0IHRvIHRoZSBjaGF0LiIsIuayoeiDveWPkemAgeWIsOWvueivneOAgiIpKSk7cmV0dXJufWlmKFc9PT0ic2lnbi1vdXQiKXtyZT1udWxsLGooInNpZ25PdXQiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3Qgc2lnbiBvdXQuIiwi5rKh6IO96YCA5Ye655m75b2V44CCIikpKTtyZXR1cm59aWYoVz09PSJhc2stYm9vayIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3JvdXAiKTt5JiZ5IT09Y3QmJihjdD15LHdlKFApKTtjb25zdCBfPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndWVzdCIpO18mJihfLmhpZGRlbj0hMSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImduYW1lIik/LmZvY3VzKCk7cmV0dXJufWlmKFc9PT0iYm9vayIpe2NvbnN0e3Bob25lUmVxdWlyZWQ6eX09ZnUoKSxfPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbmFtZSIpPy52YWx1ZS50cmltKCk/PyIiLEQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdtYWlsIik/LnZhbHVlLnRyaW0oKT8/IiIsbGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdwaG9uZSIpPy52YWx1ZS50cmltKCk/PyIiLFdlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbm90ZSIpPy52YWx1ZS50cmltKCk/PyIiLEJlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndGltZSIpPy52YWx1ZS50cmltKCk/PyIiLFRuPVsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1hc2tdW2FyaWEtcHJlc3NlZD0idHJ1ZSJdJyldLm1hcChIZz0+SGcuZGF0YXNldC5hc2s/PyIiKTsoQmU/QmU+PSIyMjowMCI6KHJlPy5wcmVmZXJlbmNlcz8/W10pLmluY2x1ZGVzKCJsYXRlLWFycml2YWwiKSkmJiFUbi5pbmNsdWRlcygibGF0ZS1hcnJpdmFsIikmJlRuLnB1c2goImxhdGUtYXJyaXZhbCIpO2NvbnN0IFR1PSEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyZW1lbWJlciIpPy5jaGVja2VkO1RlPXtuYW1lOl8sZW1haWw6RCwuLi55P3twaG9uZTpsZX06e30sbm90ZXM6V2UsYXJyaXZpbmdBdDpCZSxyZXF1ZXN0czpUbixyZW1lbWJlcjpUdX07Y29uc3Qgem49W107aWYoX3x8em4ucHVzaChbImduYW1lIixjKCJmdWxsIG5hbWUiLCLlp5PlkI0iKSxjKCJSZXF1aXJlZDogdGhlIGd1ZXN0J3MgZnVsbCBuYW1lLCBhcyBvbiB0aGVpciBJRC4iLCLlv4XloavvvJrlhaXkvY/kurrlp5PlkI3vvIzkuI7or4Hku7bkuIDoh7TjgIIiKV0pLEQuaW5jbHVkZXMoIkAiKXx8em4ucHVzaChbImdtYWlsIixjKCJlbWFpbCIsIumCrueusSIpLEQ/YygiVGhhdCBlbWFpbCBoYXMgbm8g4oCcQOKAnSBpbiBpdCDigJQgdGhlIGNvbmZpcm1hdGlvbiBuZWVkcyBhbiBhZGRyZXNzIGl0IGNhbiByZWFjaC4iLCLpgq7nrrHph4zmsqHmnInigJxA4oCd77yM6K+35aGr5YaZ6IO95pS25Yiw56Gu6K6k5L+h5oGv55qE5Zyw5Z2A44CCIik6YygiUmVxdWlyZWQ6IHlvdXIgZW1haWwuIFdpdGggaXQgYW5kIHRoZSBjb25maXJtYXRpb24gY29kZSwgeW91IGNhbiBmaW5kIHRoaXMgYm9va2luZyBhZ2FpbiBmcm9tIGFueSBjaGF0LiIsIuW/heWhq++8muaOpeaUtuehruiupOS/oeaBr+eahOmCrueuse+8jOWHreWug+WSjOehruiupOeggeaJvuWbnumihOiuouOAgiIpXSkseSYmbGUucmVwbGFjZSgvXEQvZywiIikubGVuZ3RoPDYmJnpuLnB1c2goWyJncGhvbmUiLGMoInBob25lIiwi5omL5py65Y+3IiksYygiUmVxdWlyZWQ6IGEgcGhvbmUgbnVtYmVyLCBzbyB0aGUgaG90ZWwgY2FuIHJlYWNoIHlvdS4iLCLlv4XloavvvJrmiYvmnLrlj7fvvIzmlrnkvr/phZLlupfogZTns7vkvaDjgIIiKV0pLG5TKHpuKSx6bi5sZW5ndGgpcmV0dXJuO2ooInJlcXVlc3RCb29raW5nIix7bmFtZTpfLGVtYWlsOkQsLi4ueT97cGhvbmU6bGV9Ont9LC4uLmtlJiZjdD97Z3JvdXA6Y3R9Ont9LC4uLldlP3tub3RlczpXZX06e30sLi4uQmU/e2Fycml2aW5nQXQ6QmV9Ont9LC4uLlRuLmxlbmd0aD97cmVxdWVzdHM6VG59Ont9LC4uLlR1P3tyZW1lbWJlclJlcXVlc3RzOiEwfTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBhc2sgZm9yIHRob3NlIHJvb21zLiIsIuayoeiDveaPkOS6pOmihOiuouOAgiIpKSk7cmV0dXJufWNvbnN0IF91PXQuZ2V0QXR0cmlidXRlKCJkYXRhLW9wZW4tYm9va2luZyIpO2lmKF91IT09bnVsbCYmUD8udmlldz09PSJib29raW5ncyIpe2NvbnN0IHk9KFAuYm9va2luZ3M/P1tdKS5maW5kKEQ9PlN0cmluZyhELmNvbmZpcm1hdGlvbkNvZGUpPT09X3UpO2lmKCF5KXJldHVybjtjb25zdCBfPXsuLi5QLHZpZXc6ImJvb2tpbmciLGJvb2tpbmc6eSxib29raW5nczp2b2lkIDAsdG90YWw6eS5xdW90ZT8udG90YWwsb3BlbmVkOiEwLHN1Z2dlc3Rpb25zOnZvaWQgMH07eG4oXyksd2UoXyksYXQoKTtyZXR1cm59aWYoVz09PSJwYXkiKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXVybCIpPz8iIixfPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvZGUiKT8/IiI7aWYoIXkpcmV0dXJuO0FlLm9wZW5MaW5rKHt1cmw6eX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBvcGVuIHRoZSBwYXltZW50IHBhZ2UuIiwi5rKh6IO95omT5byA5LuY5qy+6aG144CCIikpKTtjb25zdCBEPURhdGUucGFyc2UodC5nZXRBdHRyaWJ1dGUoImRhdGEtdW50aWwiKT8/IiIpfHxEYXRlLm5vdygpKzE1KjZlNDtndSgpLHplPXtjb2RlOl8sdW50aWw6RH0semUudGltZXI9c2V0VGltZW91dCgoKT0+YnUoXyksWmkpO3JldHVybn1pZihXPT09InBheS1jaGVjayIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIpPz8iIjt5JiZqZyh5KTtyZXR1cm59aWYoVz09PSJuaWdodGx5LWxpc3QiKXtjb25zdHtob3VybHk6eSwuLi5ffT11cyhQPy5hc2spO2ooImxpc3RIb3RlbHMiLF8pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX5YiX6KGo44CCIikpKTtyZXR1cm59aWYoVz09PSJib29raW5ncyIpe2ooImxpc3RCb29raW5ncyIse30pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHlvdXIgYm9va2luZ3MuIiwi5rKh6IO95Yqg6L295L2g55qE6aKE6K6i44CCIikpKTtyZXR1cm59aWYoVz09PSJ0cmlwIil7aigidmlld1RyaXAiLHt9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGUgdHJpcC4iLCLmsqHog73liqDovb3ooYznqIvjgIIiKSkpO3JldHVybn1pZigoVz09PSJob3VybHkifHxXPT09Im5pZ2h0bHkiKSYmUD8uaG90ZWw/LmlkKXtjb25zdCB5PVN0cmluZyhQLmhvdGVsLmlkKTtqKCJnZXRIb3RlbCIsVz09PSJob3VybHkiP3tob3RlbDp5LGhvdXJseTohMCxndWVzdHM6Uy5ndWVzdHN9Ontob3RlbDp5LC4uLkluKCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3QgbG9hZCB0aGF0IGhvdGVsLiIsIuayoeiDveWKoOi9vei/meWutumFkuW6l+OAgiIpKSk7cmV0dXJufWNvbnN0IFN1PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik7aWYoU3Upe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2kiKSxfPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvIik7eSYmXyYmKFMuY2hlY2tJbj15LFMuY2hlY2tPdXQ9XyksaigiZ2V0SG90ZWwiLHtob3RlbDpTdSwuLi5JbigpLC4uLlMuY2hlY2tJbiYmVT4xP3tyb29tczpVfTp7fX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgaG90ZWwuIiwi5rKh6IO95Yqg6L296L+Z5a626YWS5bqX44CCIikpKX19KTtjb25zdCBNaT0oKT0+e2lmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKSlyZXR1cm47Y29uc3QgZT10PT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KT8udmFsdWU/PyIiO1RlPXtuYW1lOmUoImduYW1lIiksZW1haWw6ZSgiZ21haWwiKSwuLi5mdSgpLnBob25lUmVxdWlyZWQ/e3Bob25lOmUoImdwaG9uZSIpfTp7fSxub3RlczplKCJnbm90ZSIpLGFycml2aW5nQXQ6ZSgiZ3RpbWUiKSxyZXF1ZXN0czpbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYXNrXVthcmlhLXByZXNzZWQ9InRydWUiXScpXS5tYXAodD0+dC5kYXRhc2V0LmFzaz8/IiIpLHJlbWVtYmVyOiEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyZW1lbWJlciIpPy5jaGVja2VkfX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGU9Pntjb25zdCB0PWUudGFyZ2V0Py5pZD8/IiI7WyJnbmFtZSIsImdtYWlsIiwiZ3Bob25lIiwiZ25vdGUiLCJndGltZSIsImdyZW1lbWJlciJdLmluY2x1ZGVzKHQpJiZNaSgpfSk7Y29uc3QgVGQ9KCk9Pntmb3IoO3ZlLmF0KC0xKT8ucGF5bG9hZD8udmlldz09PSJtZW1iZXIiJiYhcmU7KXZlPXZlLnNsaWNlKDAsLTEpO2NvbnN0IGU9dmUuYXQoLTEpO2lmKCFlfHxfbil7cmcoKTtyZXR1cm59dmU9dmUuc2xpY2UoMCwtMSksX3MrPTEsJHUoKSxCZygpO2NvbnN0IHQ9ZS52ZXJzaW9uPT09d3M/dm9pZCAwOkV3KGUucGF5bG9hZCk7dD8oUD1lLnBheWxvYWQsaih0LmtleSx0LmFyZ3Mse3B1c2g6ITF9KS5jYXRjaCgoKT0+d2UoZS5wYXlsb2FkLCEwKSkuZmluYWxseShhdCkpOih3ZShlLnBheWxvYWQsITApLGF0KCkpfSxEZz0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZXJlIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIWUpe08oYygiV2hlcmUgdG8/IEEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwuIiwi5oOz5Y675ZOq6YeM77yf6L6T5YWl5Z+O5biC44CB5Zu95a625oiW6YWS5bqX5ZCN44CCIikpO3JldHVybn1xaSgpO2NvbnN0IG49KFA/LnJlZ2lvbnM/P1tdKS5mbGF0TWFwKG89PihvLmNvdW50cmllcz8/W10pLmZsYXRNYXAocz0+W3MubmFtZSwuLi4ocy5jaXRpZXM/P1tdKS5tYXAocj0+ci5uYW1lKV0pKS5maW5kKG89Pm8udG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSk7aigibGlzdEhvdGVscyIsey4uLm4/e2NpdHk6bn06e3F1ZXJ5OmV9LC4uLkR0KCl9KS5jYXRjaCgoKT0+TyhjKCJDb3VsZCBub3Qgc2VhcmNoIGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveaQnOe0ouOAgiIpKSl9LHFpPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGNpIiksdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGNvIik7ZT8udmFsdWUmJihTLmNoZWNrSW49ZS52YWx1ZSksdD8udmFsdWUmJihTLmNoZWNrT3V0PXQudmFsdWUpLGU/LnZhbHVlJiYoWXI9ITApfTtsZXQgTGksSHQ9ITE7Y29uc3QgQmc9KCk9PntjbGVhclRpbWVvdXQoTGkpLEh0PSExfSxvUz1lPT5lPy52aWV3PT09ImhvdGVscyJ8fGU/LnZpZXc9PT0ibm8taG90ZWxzIiYmISFlPy5hc2ssTm49KGU9MCk9PntjbGVhclRpbWVvdXQoTGkpLEh0PSEwLExpPXNldFRpbWVvdXQoKCk9PntpZighb1MoUCkpe0h0PSExO3JldHVybn1pZihfbil7Tm4oMTUwKTtyZXR1cm59SHQ9ITEsaigibGlzdEhvdGVscyIsey4uLnVzKFA/LmFzayksLi4uRHQoKX0pLmNhdGNoKCgpPT5PKGMoIkNvdWxkIG5vdCBwcmljZSB0aG9zZSBuaWdodHMuIiwi5rKh6IO95Li66L+Z5Lqb5pel5pyf5oql5Lu344CCIikpKX0sZSl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGU9PntpZihlLnRhcmdldD8uaWQ9PT0id2hlcmUiJiZlLmtleT09PSJFbnRlciImJiFlLmlzQ29tcG9zaW5nKXtlLnByZXZlbnREZWZhdWx0KCksRGcoKTtyZXR1cm59aWYoZS5rZXk9PT0iRXNjYXBlIiYmTil7Y29uc3R7cGFpcjpufT1OO049bnVsbCxQdChuLGBbZGF0YS1jYWw9IiR7bn06aW4iXWApO3JldHVybn1jb25zdCB0PWUudGFyZ2V0OyF0fHx0LmdldEF0dHJpYnV0ZSgicm9sZSIpIT09ImJ1dHRvbiJ8fGUua2V5IT09IkVudGVyIiYmZS5rZXkhPT0iICJ8fChlLnByZXZlbnREZWZhdWx0KCksdC5jbGljaygpKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsZT0+e2lmKCFOfHxOLnBpY2tpbmchPT0ib3V0Inx8IU4uaW4pcmV0dXJuO2NvbnN0IHQ9ZS50YXJnZXQ/LmNsb3Nlc3Q/LigiLmNkW2RhdGEtZGF5XSIpLG49dCYmIXQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpP3QuZGF0YXNldC5kYXk/PyIiOiIiLG89Ti5pbjtmb3IoY29uc3QgcyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY2FsIC5jZFtkYXRhLWRheV0iKSl7Y29uc3Qgcj1zLmRhdGFzZXQuZGF5Pz8iIjtzLmNsYXNzTGlzdC50b2dnbGUoInJlYWNoIiwhIW4mJm4+byYmcj5vJiZyPG4pLHMuY2xhc3NMaXN0LnRvZ2dsZSgicmVhY2gtZW5kIiwhIW4mJm4+byYmcj09PW4pfX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dD8udHlwZT09PSJkYXRlIiYmKFlyPSEwKTtjb25zdCBvPXtkY2k6WyJkY2kiLCJkY28iXSxkY286WyJkY2kiLCJkY28iXSxsY2k6WyJsY2kiLCJsY28iXSxsY286WyJsY2kiLCJsY28iXX1bdD8uaWQ/PyIiXTtpZihvKXtjb25zdCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9bMF0pLHU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob1sxXSk7aWYoIWF8fCF1KXJldHVybjtpZih0LmlkPT09b1swXSYmYS52YWx1ZSl7Y29uc3QgZD1FdChhLnZhbHVlLDEpO3UubWluPWQsKCF1LnZhbHVlfHx1LnZhbHVlPD1hLnZhbHVlKSYmKHUudmFsdWU9ZCl9Uy5jaGVja0luPWEudmFsdWV8fFMuY2hlY2tJbixTLmNoZWNrT3V0PXUudmFsdWV8fFMuY2hlY2tPdXQsb1swXT09PSJsY2kiJiZObigzMDApO3JldHVybn1pZih0Py5pZCE9PSJjaSImJnQ/LmlkIT09ImNvIilyZXR1cm47Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2kiKSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbyIpO2lmKCFzfHwhcilyZXR1cm47aWYodC5pZD09PSJjaSImJnMudmFsdWUpe2NvbnN0IGE9RXQocy52YWx1ZSwxKTtyLm1pbj1hLCghci52YWx1ZXx8ci52YWx1ZTw9cy52YWx1ZSkmJihyLnZhbHVlPWEpfVMuY2hlY2tJbj1zLnZhbHVlfHxTLmNoZWNrSW4sUy5jaGVja091dD1yLnZhbHVlfHxTLmNoZWNrT3V0O2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5pZ2h0cyIpO2kmJihpLnRleHRDb250ZW50PV9nKCkpLFV0KCl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dD8udGFnTmFtZT09PSJJTUciJiZ0LmNsb3Nlc3QoIiNjb250ZW50IikmJnQucmVtb3ZlKCl9LCEwKTtjb25zdCBGZz0oZSx0KT0+e3RyeXthZyh0KTtjb25zdCBuPWU/SlNPTi5zdHJpbmdpZnkoZSk6IiI7aWYobiYmbj09PWhnJiZKU09OLnN0cmluZ2lmeShQKT09PW1nKXJldHVybjtlPy5zdGF5Py5jaGVja0luJiYoWXI9ITApLHZlPVtdLF9zKz0xLCR1KCksQmcoKSxKZT14ZyxOPW51bGwsd2UoZSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcigiW2NhcmRdIHJlbmRlciBmYWlsZWQiLG4pLEcoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoaXMgY2FyZCBjb3VsZCBub3QgYmUgZHJhd24uIEFzayBhZ2FpbiBpbiB0aGUgY2hhdC4iLCLov5nlvKDljaHniYfmsqHog73mmL7npLrvvIzor7flnKjlr7nor53ph4zlho3pl67kuIDmrKHjgIIiKX08L2Rpdj5gfX07QWUub250b29scmVzdWx0PWU9PkZnKGU/LnN0cnVjdHVyZWRDb250ZW50LGU/Ll9tZXRhKTtjb25zdCBVZz1lPT57QXJyYXkuaXNBcnJheShlPy5hdmFpbGFibGVEaXNwbGF5TW9kZXMpJiYoQ2c9ZS5hdmFpbGFibGVEaXNwbGF5TW9kZXMubWFwKFN0cmluZykpLHR5cGVvZiBlPy5kaXNwbGF5TW9kZT09InN0cmluZyImJmUuZGlzcGxheU1vZGUhPT1EbiYmKERuPWUuZGlzcGxheU1vZGUsUD8udmlldz09PSJob3RlbHMiJiZ3ZShQKSl9O2xldCB6ZDt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKT0+e2NsZWFyVGltZW91dCh6ZCksemQ9c2V0VGltZW91dCgoKT0+e2lmKFA/LnZpZXchPT0iaG90ZWxzInx8Qm4oKSlyZXR1cm47bHU9Y3UoKTtjb25zdCBlPU51bWJlcihQLnRvdGFsPz8wKS1OdW1iZXIoUC5vZmZzZXQ/PzApO1hyKGUpIT09eHMmJndlKFApfSwxNTApfSk7QWUub25ob3N0Y29udGV4dGNoYW5nZWQ9ZT0+e3RnKGUsb2cpLFVnKGUpLGV1KCl9O0FlLmNvbm5lY3QoKS50aGVuKCgpPT57Y29uc3QgZT1BZS5nZXRIb3N0Q29udGV4dCgpO3RnKGUsb2cpLFVnKGUpLGV1KCk7Y29uc3QgdD1lPy50b29sSW5mbz8ucmVzdWx0Py5zdHJ1Y3R1cmVkQ29udGVudDt0JiZGZyh0LGU/LnRvb2xJbmZvPy5yZXN1bHQ/Ll9tZXRhKX0pLmNhdGNoKCgpPT57RygiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIGhvc3QuIiwi5rKh6IO96L+e5o6l5Yiw5a6/5Li744CCIil9PC9kaXY+YH0pOzwvc2NyaXB0PgogICAgPHN0eWxlIHJlbD0ic3R5bGVzaGVldCIgY3Jvc3NvcmlnaW4+OnJvb3R7LS1raXQtYmc6ICNmZmZmZmY7LS1raXQtYmctc29mdDogI2Y2ZjdmOTstLWtpdC1mZzogIzFhMWYyYjstLWtpdC1mZy1zb2Z0OiAjNjI2YjdhOy0ta2l0LWZnLWZhaW50OiAjOGE5M2ExOy0ta2l0LWxpbmU6ICNlM2U3ZWQ7LS1raXQtYWNjZW50OiAjMWExZjJiOy0ta2l0LWFjY2VudC1mZzogI2ZmZmZmZjstLWtpdC1saW5rOiAjMjU2M2ViOy0ta2l0LWdvb2Q6ICMxYTdmNWE7LS1raXQtZ29vZC1iZzogI2RkZjNlNDstLWtpdC1iYWQ6ICNiMzI2MWU7LS1raXQtYmFkLWJnOiAjZmJlNmU0Oy0ta2l0LXdhcm46ICM4YTVhMDA7LS1raXQtd2Fybi1iZzogI2ZkZjBkNTstLWtpdC1yaW5nOiAjMjU2M2VifVtkYXRhLXRoZW1lPWRhcmtdey0ta2l0LWJnOiAjMWQxZjIzOy0ta2l0LWJnLXNvZnQ6ICMyNjI5MmU7LS1raXQtZmc6ICNlY2VlZjE7LS1raXQtZmctc29mdDogI2E0YWJiNjstLWtpdC1mZy1mYWludDogIzdjODQ5MTstLWtpdC1saW5lOiAjMzYzYTQxOy0ta2l0LWFjY2VudDogI2VjZWVmMTstLWtpdC1hY2NlbnQtZmc6ICMxZDFmMjM7LS1raXQtbGluazogIzdhYTdmZjstLWtpdC1nb29kOiAjNmZkM2EyOy0ta2l0LWdvb2QtYmc6ICMxZjNhMmQ7LS1raXQtYmFkOiAjZmY4YTgwOy0ta2l0LWJhZC1iZzogIzNkMjMyMjstLWtpdC13YXJuOiAjZjJjNDZiOy0ta2l0LXdhcm4tYmc6ICMzYTMwMjA7LS1raXQtcmluZzogIzdhYTdmZn06cm9vdHstLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnksIHZhcigtLWtpdC1iZykpOy0tYmctc29mdDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnksIHZhcigtLWtpdC1iZy1zb2Z0KSk7LS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCB2YXIoLS1raXQtZmcpKTstLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCB2YXIoLS1raXQtZmctc29mdCkpOy0tZmctZmFpbnQ6IHZhcigtLWNvbG9yLXRleHQtdGVydGlhcnksIHZhcigtLWtpdC1mZy1mYWludCkpOy0tbGluZTogdmFyKC0tY29sb3ItYm9yZGVyLXByaW1hcnksIHZhcigtLWtpdC1saW5lKSk7LS1hY2NlbnQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaW52ZXJzZSwgdmFyKC0ta2l0LWFjY2VudCkpOy0tYWNjZW50LWZnOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UsIHZhcigtLWtpdC1hY2NlbnQtZmcpKTstLWxpbms6IHZhcigtLWNvbG9yLXRleHQtaW5mbywgdmFyKC0ta2l0LWxpbmspKTstLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgdmFyKC0ta2l0LWdvb2QpKTstLWdvb2QtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcywgdmFyKC0ta2l0LWdvb2QtYmcpKTstLWJhZDogdmFyKC0tY29sb3ItdGV4dC1kYW5nZXIsIHZhcigtLWtpdC1iYWQpKTstLWJhZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIsIHZhcigtLWtpdC1iYWQtYmcpKTstLXdhcm46IHZhcigtLWNvbG9yLXRleHQtd2FybmluZywgdmFyKC0ta2l0LXdhcm4pKTstLXdhcm4tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtd2FybmluZywgdmFyKC0ta2l0LXdhcm4tYmcpKTstLXJpbmc6IHZhcigtLWNvbG9yLXJpbmctcHJpbWFyeSwgdmFyKC0ta2l0LXJpbmcpKTstLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZywgMTRweCk7LS1yYWRpdXMtc206IHZhcigtLWJvcmRlci1yYWRpdXMtc20sIDlweCk7LS1mb250OiB2YXIoLS1mb250LXNhbnMsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmKTstLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAiU0YgTW9ubyIsIE1lbmxvLCBtb25vc3BhY2UpOy0tc2hhZG93OiB2YXIoLS1zaGFkb3ctc20sIDAgMXB4IDJweCByZ2JhKDEwLCAyMCwgNDAsIC4wNCksIDAgMnB4IDVweCByZ2JhKDEwLCAyMCwgNDAsIC4wNCkpfSp7Ym94LXNpemluZzpib3JkZXItYm94fWJvZHl7bWFyZ2luOjA7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Y29sb3I6dmFyKC0tZmcpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0uY2FyZHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWF4LXdpZHRoOjU2MHB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLWxlZnQ6dmFyKC0taW5zZXQtbGVmdCwgMHB4KTtwYWRkaW5nLXJpZ2h0OnZhcigtLWluc2V0LXJpZ2h0LCAwcHgpfS5oZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjE0cHggMThweCAwfS5oZWFkIC50aXRsZXtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5oZWFkIC50aXRsZVtoaWRkZW5de2Rpc3BsYXk6bm9uZX0jY29udGVudHtwYWRkaW5nOjEwcHggMThweCAxOHB4fS5yZWZyZXNoe21hcmdpbi1sZWZ0OjhweDthbGlnbi1zZWxmOmNlbnRlcjtmbGV4Om5vbmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O3BhZGRpbmc6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0tZmctc29mdCk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjEycyxjb2xvciAuMTJzfS5yZWZyZXNoOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWZnKTtib3JkZXItY29sb3I6dmFyKC0tZmctc29mdCl9LnJlZnJlc2g6ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQ7b3BhY2l0eTouNn0ucmVmcmVzaFtoaWRkZW5de2Rpc3BsYXk6bm9uZX0ucmVmcmVzaCBzdmd7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtkaXNwbGF5OmJsb2NrfS5yZWZyZXNoLmJ1c3kgc3Zne2FuaW1hdGlvbjpraXQtc3BpbiAuN3MgbGluZWFyIGluZmluaXRlfUBrZXlmcmFtZXMga2l0LXNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0uZW1wdHl7cGFkZGluZzoxOHB4IDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC1zaXplOjEzcHh9LmhpbnR7bWFyZ2luLXRvcDo4cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tZmctc29mdCk7dGV4dC1hbGlnbjpjZW50ZXJ9Lm5vdGV7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtwYWRkaW5nOjAgMCAxMHB4fS5tb25ve2ZvbnQtZmFtaWx5OnZhcigtLW1vbm8pO2ZvbnQtc2l6ZToxMS41cHg7Y29sb3I6dmFyKC0tZmctZmFpbnQpfS5iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcH0uYmFkZ2Uub2t7Y29sb3I6dmFyKC0tZ29vZCk7YmFja2dyb3VuZDp2YXIoLS1nb29kLWJnKX0uYmFkZ2Uud2FybiwuYmFkZ2UudG9kb3tjb2xvcjp2YXIoLS13YXJuKTtiYWNrZ3JvdW5kOnZhcigtLXdhcm4tYmcpfS5iYWRnZS5lcnJ7Y29sb3I6dmFyKC0tYmFkKTtiYWNrZ3JvdW5kOnZhcigtLWJhZC1iZyl9LmJ1eXttYXJnaW4tdG9wOjE0cHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzoxMXB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1hY2NlbnQpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Y29sb3I6dmFyKC0tYWNjZW50LWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTA7Y3Vyc29yOnBvaW50ZXJ9LmJ1eTpkaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTtjb2xvcjp2YXIoLS1mZy1mYWludCk7Y3Vyc29yOmRlZmF1bHR9LmJ1eS5hbHQsLmdob3N0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tZmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSl9Lmdob3N0e2ZsZXg6MTttaW4taGVpZ2h0OjQwcHg7cGFkZGluZzo5cHggMTBweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tZmctc29mdCk7Y3Vyc29yOnBvaW50ZXJ9Lmxpbmt7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO3BhZGRpbmc6NnB4IDAgMDtjb2xvcjp2YXIoLS1saW5rKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnF0eXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHh9LnF0eSBidXR0b257d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjE3cHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcn0ucXR5IHNwYW57bWluLXdpZHRoOjI2cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2NTB9LmNrLXBhZ2Vye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4IDEycHg7bWFyZ2luLXRvcDoxNHB4fS5jay1wYWdlci1idG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O21pbi13aWR0aDoxMTJweDtoZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMsYm9yZGVyLWNvbG9yIC4xMnMsY29sb3IgLjEyc30uY2stcGFnZXItYnRuIHN2ZywuY2stcGFnZXItYWxsIHN2Z3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2ZsZXg6bm9uZX0uY2stcGFnZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWZnLWZhaW50KX0uY2stcGFnZXItYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0uY2stcGFnZXItYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWZnLWZhaW50KTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O29wYWNpdHk6LjY7Y3Vyc29yOmRlZmF1bHR9LmNrLXBhZ2VyLW57bWluLXdpZHRoOjhjaDt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5jay1wYWdlci1hbGx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3dpZHRoOmZpdC1jb250ZW50O2hlaWdodDozMnB4O21hcmdpbjo2cHggYXV0byAwO3BhZGRpbmc6MCAxMnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTJzLGNvbG9yIC4xMnN9LmNrLXBhZ2VyLWFsbDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2NvbG9yOnZhcigtLWZnKX0uY2stcGFnZXItYWxsOmZpcnN0LWNoaWxkLC5ncmlkKy5jay1wYWdlci1hbGx7bWFyZ2luLXRvcDoxNHB4fWJ1dHRvbjpmb2N1cy12aXNpYmxlLGE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1yaW5nKTtvdXRsaW5lLW9mZnNldDoycHh9QG1lZGlhKG1heC13aWR0aDo0MzBweCl7LmNhcmR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5oZWFke3BhZGRpbmc6MTJweCAxNHB4IDB9I2NvbnRlbnR7cGFkZGluZzo4cHggMTRweCAxNHB4fS5idXl7bWluLWhlaWdodDo0OHB4O2ZvbnQtc2l6ZToxNXB4fS5naG9zdHttaW4taGVpZ2h0OjQ0cHg7Zm9udC1zaXplOjEzLjVweH0uY2stcGFnZXItYnRue21pbi13aWR0aDoxMDRweDtoZWlnaHQ6NDBweH0uY2stcGFnZXItYWxse2hlaWdodDozNnB4fS5xdHkgYnV0dG9ue3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7Zm9udC1zaXplOjE5cHh9LnJlZnJlc2h7d2lkdGg6MzRweDtoZWlnaHQ6MzRweH0uaGludCwubm90ZSwuZW1wdHl7Zm9udC1zaXplOjEzcHh9fUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnJlZnJlc2guYnVzeSBzdmd7YW5pbWF0aW9uOm5vbmV9Knt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fX06cm9vdHstLWJmLXByaW1hcnk6ICMxZDRlZDg7LS1iZi1zdWNjZXNzOiAjMDU5NjY5Oy0tYmYtd2FybmluZzogI2Q5NzcwNjstLWJmLWVycm9yOiAjZWY0NDQ0Oy0tYmYtaW5mbzogIzI1NjNlYjstLWJmLXN1cmZhY2U6ICNmZmZmZmY7LS1jLWJnOiB2YXIoLS1iZi1zdXJmYWNlKTstLWMtc3VuazogI2Y0ZjZmYTstLWMtcmFpc2U6ICNmZmZmZmY7LS1jLWluazogIzBjMTQyNDstLWMtaW5rLTI6ICMzZjRjNjM7LS1jLWluay0zOiAjNWI2ODdlOy0tYy1saW5lOiAjZTNlOGYwOy0tYy1saW5lLTI6ICNjY2Q0ZTE7LS1jLXByaW1hcnk6IHZhcigtLWJmLXByaW1hcnkpOy0tYy1wcmltYXJ5LWhvdmVyOiAjMWE0NGMyOy0tYy1wcmltYXJ5LXByZXNzOiAjMTYzYWE2Oy0tYy1wcmltYXJ5LWluazogIzFkNGVkODstLWMtcHJpbWFyeS1zb2Z0OiAjZWRmMmZlOy0tYy1wcmltYXJ5LXNvZnQtMjogI2RiZTVmZDstLWMtb24tcHJpbWFyeTogI2ZmZmZmZjstLWMtc3VjY2VzczogdmFyKC0tYmYtc3VjY2Vzcyk7LS1jLXN1Y2Nlc3MtaW5rOiAjMDQ3ODU3Oy0tYy1zdWNjZXNzLXNvZnQ6ICNlN2Y2ZWY7LS1jLXdhcm5pbmc6IHZhcigtLWJmLXdhcm5pbmcpOy0tYy13YXJuaW5nLWluazogI2I0NTMwOTstLWMtd2FybmluZy1zb2Z0OiAjZmRmM2UyOy0tYy1lcnJvcjogdmFyKC0tYmYtZXJyb3IpOy0tYy1lcnJvci1pbms6ICNjNDJiMmI7LS1jLWVycm9yLXNvZnQ6ICNmZGVkZWQ7LS1jLWluZm86IHZhcigtLWJmLWluZm8pOy0tYy1pbmZvLWluazogIzFmNTVkNjstLWMtaW5mby1zb2Z0OiAjZWRmM2ZlOy0tYy1zdGFyOiAjYjc3OTFmOy0tYy1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA1JSksIDAgMXB4IDFweCByZ2IoMTYgMjQgNDAgLyAzJSk7LS1jLXNoYWRvdy0yOiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNiUpLCAwIDhweCAyNHB4IC0xMHB4IHJnYigxNiAyNCA0MCAvIDE4JSk7LS1jLXNoYWRvdy1jYXJkOiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNCUpLCAwIDEycHggMzJweCAtMThweCByZ2IoMTYgMjQgNDAgLyAyMiUpOy0tYy1zY3JpbTogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiKDggMTIgMjIgLyAwJSkgMzUlLCByZ2IoOCAxMiAyMiAvIDcyJSkgMTAwJSk7LS1yLWNhcmQ6IDIwcHg7LS1yLWxnOiAxNnB4Oy0tci1tZDogMTJweDstLXItc206IDlweDstLWYtc2FuczogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU0YgUHJvIFRleHQiLCAiU2Vnb2UgVUkgVmFyaWFibGUgVGV4dCIsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgIlBpbmdGYW5nIFNDIiwgIkhpcmFnaW5vIFNhbnMgR0IiLCAiTWljcm9zb2Z0IFlhSGVpIiwgc2Fucy1zZXJpZjstLWYtZGlzcGxheTogIklvd2FuIE9sZCBTdHlsZSIsICJQYWxhdGlubyBMaW5vdHlwZSIsIFBhbGF0aW5vLCAiQm9vayBBbnRpcXVhIiwgR2VvcmdpYSwgIlNvbmd0aSBTQyIsICJTVFNvbmciLCAiU2ltU3VuIiwgc2VyaWY7LS1mLW1vbm86IHVpLW1vbm9zcGFjZSwgIlNGIE1vbm8iLCAiSmV0QnJhaW5zIE1vbm8iLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTstLWVhc2U6IGN1YmljLWJlemllciguMiwgLjcsIC4yLCAxKX1bZGF0YS10aGVtZT1kYXJrXXstLWMtYmc6ICMxMTE3MjM7LS1jLXN1bms6ICMwYjEwMWE7LS1jLXJhaXNlOiAjMTgyMDMxOy0tYy1pbms6ICNlZWYyZjk7LS1jLWluay0yOiAjYjRiZmQxOy0tYy1pbmstMzogIzhmOWJiMTstLWMtbGluZTogIzI0MzA0ODstLWMtbGluZS0yOiAjMzU0MzVmOy0tYy1wcmltYXJ5OiAjM2E2OGYyOy0tYy1wcmltYXJ5LWhvdmVyOiAjMmY1ZGU2Oy0tYy1wcmltYXJ5LXByZXNzOiAjMjg1MmQyOy0tYy1wcmltYXJ5LWluazogIzkzYjJmZjstLWMtcHJpbWFyeS1zb2Z0OiAjMTgyNjRhOy0tYy1wcmltYXJ5LXNvZnQtMjogIzIxMzQ2NzstLWMtb24tcHJpbWFyeTogI2ZmZmZmZjstLWMtc3VjY2VzczogIzEyYjg4NjstLWMtc3VjY2Vzcy1pbms6ICM0ZmQ4YTY7LS1jLXN1Y2Nlc3Mtc29mdDogIzBmMmMyNzstLWMtd2FybmluZzogI2YwYTAzMjstLWMtd2FybmluZy1pbms6ICNmNmJkNWY7LS1jLXdhcm5pbmctc29mdDogIzMzMjUwZjstLWMtZXJyb3I6ICNmMjY0NjQ7LS1jLWVycm9yLWluazogI2ZmOGY4ZjstLWMtZXJyb3Itc29mdDogIzNhMWExZjstLWMtaW5mbzogIzViOGNmZjstLWMtaW5mby1pbms6ICM5ZGJhZmY7LS1jLWluZm8tc29mdDogIzE2MjMzZjstLWMtc3RhcjogI2YyYzQ2YjstLWMtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gMzAlKTstLWMtc2hhZG93LTI6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAzNSUpLCAwIDEwcHggMjhweCAtMTJweCByZ2IoMCAwIDAgLyA2MCUpOy0tYy1zaGFkb3ctY2FyZDogMCAxcHggMCByZ2IoMjU1IDI1NSAyNTUgLyAzJSkgaW5zZXQsIDAgMThweCA0MHB4IC0yNHB4IHJnYigwIDAgMCAvIDcwJSk7Y29sb3Itc2NoZW1lOmRhcmt9OnJvb3QsW2RhdGEtdGhlbWU9ZGFya117LS1iZzogdmFyKC0tYy1iZyk7LS1iZy1zb2Z0OiB2YXIoLS1jLXN1bmspOy0tZmc6IHZhcigtLWMtaW5rKTstLWZnLXNvZnQ6IHZhcigtLWMtaW5rLTIpOy0tZmctZmFpbnQ6IHZhcigtLWMtaW5rLTMpOy0tbGluZTogdmFyKC0tYy1saW5lKTstLWFjY2VudDogdmFyKC0tYy1wcmltYXJ5KTstLWFjY2VudC1mZzogdmFyKC0tYy1vbi1wcmltYXJ5KTstLWxpbms6IHZhcigtLWMtcHJpbWFyeS1pbmspOy0tZ29vZDogdmFyKC0tYy1zdWNjZXNzLWluayk7LS1nb29kLWJnOiB2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7LS1iYWQ6IHZhcigtLWMtZXJyb3ItaW5rKTstLWJhZC1iZzogdmFyKC0tYy1lcnJvci1zb2Z0KTstLXdhcm46IHZhcigtLWMtd2FybmluZy1pbmspOy0td2Fybi1iZzogdmFyKC0tYy13YXJuaW5nLXNvZnQpOy0tcmluZzogdmFyKC0tYy1wcmltYXJ5KTstLXJhZGl1czogdmFyKC0tci1jYXJkKTstLXJhZGl1cy1zbTogdmFyKC0tci1zbSk7LS1mb250OiB2YXIoLS1mLXNhbnMpOy0tbW9ubzogdmFyKC0tZi1tb25vKTstLXNoYWRvdzogdmFyKC0tYy1zaGFkb3ctY2FyZCl9W2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH1odG1se2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Ym9keXtwYWRkaW5nOjAgMCAxNHB4fWJvZHl7Zm9udC1mYW1pbHk6dmFyKC0tZi1zYW5zKTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLWMtaW5rKTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOiJrZXJuIiwiY3YxMSJ9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjc2MHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1jYXJkKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LWNhcmQpfWJ1dHRvbixpbnB1dHtmb250LWZhbWlseTppbmhlcml0fWJ1dHRvbnstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9OndoZXJlKGJ1dHRvbixhLGlucHV0LHN1bW1hcnksW3JvbGU9YnV0dG9uXSk6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9LnAtdG90YWwsLnAtd2FzLC5wLXVuaXQsLnQtZnJvbSwuc3VtLC5tb25leS1vdXQsLmZkLXByaWNlLC5jb2wtcHJpY2UsLnBzLXByaWNlLC5jb2RlLC5uLC53diwuY2R7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5oZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWluLWhlaWdodDo2MHB4O3BhZGRpbmc6MTJweCAxNnB4IDEwcHggMjBweH0uaG9tZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttaW4td2lkdGg6MDttYXJnaW46MCBhdXRvIDAgMDtwYWRkaW5nOjRweCA2cHggNHB4IDA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLXNtKTtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgdmFyKC0tZWFzZSl9LmhvbWU6aG92ZXJ7b3BhY2l0eTouNzh9LmhlYWQgLmJyYW5ke21heC1oZWlnaHQ6MzRweDttYXgtd2lkdGg6MTUwcHg7b2JqZWN0LWZpdDpjb250YWlufVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZHtiYWNrZ3JvdW5kOiNlOWVkZjR9LmhlYWQgLnRpdGxle2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjY4MDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5oZWFkIC5zdWJ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1NTA7dGV4dC1hbGlnbjplbmQ7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5oZWFkIC5zdWI6ZW1wdHl7ZGlzcGxheTpub25lfS5tZW1iZXJjaGlwLC5oZWFkdHJpcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2hlaWdodDozMnB4O3BhZGRpbmc6MCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjIwO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0ubWVtYmVyY2hpcDpob3ZlciwuaGVhZHRyaXA6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5oZWFkdHJpcHtiYWNrZ3JvdW5kOnZhcigtLWMtaW5rKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmspO2NvbG9yOnZhcigtLWMtYmcpO3BhZGRpbmc6MCAxMnB4IDAgMTBweH0uaGVhZHRyaXA6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLWluay0yKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmstMil9LnN1YmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjAgMjBweCAxMHB4fS5iYWNrYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHg7bWF4LXdpZHRoOjUwJTtoZWlnaHQ6MzBweDtwYWRkaW5nOjAgMTJweCAwIDhweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDA7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2N1cnNvcjpwb2ludGVyfS5iYWNrYnRuOmhvdmVye2NvbG9yOnZhcigtLWMtaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZSl9LmZsb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5iYWNrYnRuOm5vdChbaGlkZGVuXSkrLmZsb3d7bWFyZ2luLWlubGluZS1zdGFydDphdXRvfS5mbG93IGxpe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5mbG93IGxpK2xpOmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjE4cHg7aGVpZ2h0OjEuNXB4O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1saW5lLTIpfS5mbG93IC5mZG90e2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZmxvdyBsaS5kb25le2NvbG9yOnZhcigtLWMtaW5rLTIpfS5mbG93IGxpLmRvbmUgLmZkb3R7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnRyYW5zcGFyZW50fS5mbG93IGxpLmRvbmUgLmZkb3Q6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjZweDt0b3A6M3B4O3dpZHRoOjRweDtoZWlnaHQ6OHB4O2JvcmRlcjpzb2xpZCB2YXIoLS1jLW9uLXByaW1hcnkpO2JvcmRlci13aWR0aDowIDJweCAycHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uZmxvdyBsaS5kb25lK2xpOmJlZm9yZSwuZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF06YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KX0uZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF17Y29sb3I6dmFyKC0tYy1pbmspfS5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXSAuZmRvdHtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLXByaW1hcnktc29mdCl9LmJ1c3liYXJ7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCAwIGF1dG87aGVpZ2h0OjNweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWNhcmQpIHZhcigtLXItY2FyZCkgMCAwO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNhcmQuYnVzeSAuYnVzeWJhcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjQwJTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCx2YXIoLS1jLXByaW1hcnkpLHRyYW5zcGFyZW50KTthbmltYXRpb246YnVzeSAxLjFzIHZhcigtLWVhc2UpIGluZmluaXRlfUBrZXlmcmFtZXMgYnVzeXswJXt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDI2MCUpfX0uY2FyZC5idXN5ICNjb250ZW50e29wYWNpdHk6LjU1O3RyYW5zaXRpb246b3BhY2l0eSAuMnMgdmFyKC0tZWFzZSkgLjEyc30uY2FyZC5idXN5IGJ1dHRvbiwuY2FyZC5idXN5IGlucHV0e3BvaW50ZXItZXZlbnRzOm5vbmV9I2NvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTZweDtwYWRkaW5nOjRweCAyMHB4IDIwcHh9LmgtbmFtZXttYXJnaW46MDtmb250LXNpemU6MjFweDtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MS4yO2xldHRlci1zcGFjaW5nOi0uMDJlbX0uaC13aGVyZXttYXJnaW4tdG9wOjRweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweH0uaC1zdW17Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS42O2NvbG9yOnZhcigtLWMtaW5rLTIpfS5ub3Rle3BhZGRpbmc6MDtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNTU7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmVtcHR5e3BhZGRpbmc6MjhweCA4cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tYy1pbmstMyl9LnByb3Nle2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS42NTtjb2xvcjp2YXIoLS1jLWluay0yKTt3aGl0ZS1zcGFjZTpwcmUtbGluZX0ucHJvc2UgaDR7bWFyZ2luOjE0cHggMCA0cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MH0ucHJvc2UgaDQ6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5zZWN7bWFyZ2luOjRweCAwIC02cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY4MDtsZXR0ZXItc3BhY2luZzotLjAxZW19LnNlYy1ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoycHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MH0uaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS5lcnIsLndhcm5ub3RlLC51bnBhaWQsLmFza2VkLC5nYXB7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtwYWRkaW5nOjEycHggMTRweCAxMnB4IDE2cHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS41NX0uZXJyOmJlZm9yZSwud2Fybm5vdGU6YmVmb3JlLC51bnBhaWQ6YmVmb3JlLC5hc2tlZDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxMHB4IGF1dG8gMTBweCAwO3dpZHRoOjNweDtib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO2JhY2tncm91bmQ6Y3VycmVudENvbG9yfS5lcnJ7YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKX0ud2Fybm5vdGV7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LnVucGFpZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmstMil9LnVucGFpZDpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8pfS51bnBhaWQgYntjb2xvcjp2YXIoLS1jLWluZm8taW5rKTtmb250LXdlaWdodDo2ODB9LmFza2Vke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LmFza2VkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZS0yKX0uYXNrZWQgYntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5hc2tlZC5mbGFne2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpfS5hc2tlZC5mbGFnOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZyl9LmFza2VkIC5mb290e21hcmdpbi10b3A6NnB4fS5kZW1vc3RyaXB7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCAwIDEycHg7cGFkZGluZzo4cHggMjBweDtib3JkZXItYmxvY2s6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fS5kZW1vc3RyaXAgYntmbGV4Om5vbmU7cGFkZGluZzoxcHggN3B4O2JvcmRlci1yYWRpdXM6NnB4O2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDhlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9W2RhdGEtdGhlbWU9ZGFya10gLmRlbW9zdHJpcCBie2JhY2tncm91bmQ6IzJmNWZkNn0uZ297ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6OHB4O21pbi1oZWlnaHQ6NDRweDtwYWRkaW5nOjAgMThweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMDVlbTtsaW5lLWhlaWdodDoxLjI7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym94LXNoYWRvdzowIDFweCAjZmZmZmZmMjkgaW5zZXQsMCAxcHggMnB4ICMxMDE4MjgxZjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSx0cmFuc2Zvcm0gLjFzIHZhcigtLWVhc2UpfS5nbzpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1ob3Zlcik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeS1ob3Zlcil9LmdvOmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1wcmVzcyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMXB4KX0uZ28gLmljb3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5nbyAucHJpY2UtaW57cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTBweDttYXJnaW4taW5saW5lLXN0YXJ0OjJweDtib3JkZXItaW5saW5lLXN0YXJ0OjFweCBzb2xpZCByZ2IoMjU1IDI1NSAyNTUgLyAzMiUpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZ28uc29mdHtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JveC1zaGFkb3c6bm9uZX0uZ28uc29mdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0LTIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnktc29mdC0yKX0uZ28uaW52ZXJ0ZWR7YmFja2dyb3VuZDp2YXIoLS1jLWluayk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rKTtjb2xvcjp2YXIoLS1jLWJnKTtib3gtc2hhZG93Om5vbmV9LmdvLmludmVydGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1pbmstMik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rLTIpfS5nby5xdWlldHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7Y29sb3I6dmFyKC0tYy1pbmspO2JveC1zaGFkb3c6bm9uZX0uZ28ucXVpZXQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluay0zKX0uZ28uZGFuZ2Vye2JhY2tncm91bmQ6I2M0MmIyYjtib3JkZXItY29sb3I6I2M0MmIyYjtjb2xvcjojZmZmfS5nby5kYW5nZXI6aG92ZXJ7YmFja2dyb3VuZDojYTkyMjIyO2JvcmRlci1jb2xvcjojYTkyMjIyfS5nby5ibG9ja3t3aWR0aDoxMDAlfS5nby5iaWd7bWluLWhlaWdodDo1MnB4O2ZvbnQtc2l6ZToxNS41cHg7Ym9yZGVyLXJhZGl1czoxNHB4fS5nby5zbXttaW4taGVpZ2h0OjM2cHg7cGFkZGluZzowIDE0cHg7Zm9udC1zaXplOjEzcHg7Ym9yZGVyLXJhZGl1czoxMHB4fS5mb290e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fS5mb290Pi5nb3tmbGV4OjEgMSBhdXRvfS5saW5reXtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXdlaWdodDo2MDA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOjFweDt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4O2N1cnNvcjpwb2ludGVyfS5zdGVwe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHg7cGFkZGluZzoycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKX0uc3RlcCBidXR0b257ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyfS5zdGVwIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnN0ZXAgLm57bWluLXdpZHRoOjIycHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwfS5zdGVwLmxpZ2h0e2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO3BhZGRpbmc6MnB4fS5zdGVwLmxpZ2h0IGJ1dHRvbnt3aWR0aDozMHB4O2hlaWdodDozMHB4fS5zdGVwLmxpZ2h0IGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmFkZHtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uYWRkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5nby5hZGR7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bztib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5nby5hZGQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktaG92ZXIpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNoaXBzLC5wbGFjZXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9LmNoaXB7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttaW4taGVpZ2h0OjMwcHg7cGFkZGluZzowIDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MjB9YnV0dG9uLmNoaXB7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9YnV0dG9uLmNoaXA6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1pbmspfS5jaGlwIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5jaGlwLnBsYWNle21pbi1oZWlnaHQ6MzRweDtwYWRkaW5nOjAgMTRweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTYwfS5jaGlwLnBsYWNlLnRhYntmb250LXdlaWdodDo2NTB9LmNoaXAucGxhY2UudGFiW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0sLmNoaXAucGxhY2UudG9vbFthcmlhLWV4cGFuZGVkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1jLWluayk7YmFja2dyb3VuZDp2YXIoLS1jLWluayk7Y29sb3I6dmFyKC0tYy1iZyl9LmNoaXAucGxhY2UudGFiW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0gc21hbGx7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi43fS5jaGlwLnBsYWNlLmdyb3VwIGltZ3toZWlnaHQ6MjBweDt3aWR0aDphdXRvO2JvcmRlci1yYWRpdXM6NXB4fS5jaGlwLnNvcnRbYXJpYS1wcmVzc2VkPXRydWVdLC5jaGlwLmFza1thcmlhLXByZXNzZWQ9dHJ1ZV17Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LmNoaXAuc29ydFthcmlhLXByZXNzZWQ9dHJ1ZV0gc21hbGx7Y29sb3I6aW5oZXJpdH0uY2hpcC5hc2tbYXJpYS1wcmVzc2VkPXRydWVdOmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjZweDtoZWlnaHQ6MTBweDttYXJnaW46LTNweCAycHggMCAwO2JvcmRlcjpzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXdpZHRoOjAgMnB4IDJweCAwO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O2hlaWdodDoyNHB4O3BhZGRpbmc6MCA5cHg7Ym9yZGVyLXJhZGl1czo3cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYyMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmJhZGdlLmdvb2R7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmJhZGdlLndhcm57YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LmJhZGdlLmJhZHtiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspfS5iYWRnZS5pbmZve2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5mby1pbmspfS5iYWRnZXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHh9LndoZW5iYXJ7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z2FwOjEwcHg7YWxpZ24taXRlbXM6c3RyZXRjaH0ud2hlbi1kYXRlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvIDFmcjthbGlnbi1pdGVtczpzdHJldGNoO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO292ZXJmbG93OmhpZGRlbn0ud2hlbi10aWxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MnB4O21pbi13aWR0aDowO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0ud2hlbi10aWxlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ud2hlbi10aWxlW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMCB2YXIoLS1jLXByaW1hcnkpfS53aGVuLXRpbGU6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDotM3B4O2JvcmRlci1yYWRpdXM6MTJweH0ud2x7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ud3Z7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS53diBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjU1MH0ud2hlbi1zYXl7Z3JpZC1jb2x1bW46MSAvIC0xO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0ud2hlbmJhci5wZW5kaW5nIC53aGVuLWRhdGVze2JvcmRlci1zdHlsZTpkYXNoZWR9LndoZW5iYXIucGVuZGluZyAud3Z7Y29sb3I6dmFyKC0tYy1pbmstMyl9LndoZW4tbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyO3BhZGRpbmc6M3B4IDhweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjY1MDt3aGl0ZS1zcGFjZTpub3dyYXB9LndoZW4tc2lkZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6c3RyZXRjaDtnYXA6OHB4fS53aGVuLXJvb21ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O3BhZGRpbmc6NnB4IDEwcHggNnB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LndoZW4tcm9vbXMgLnN0ZXAubGlnaHR7Ym9yZGVyOjA7cGFkZGluZzowO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTZweH0ud2hlbi1zaWRlIC5nb3tib3JkZXItcmFkaXVzOjE0cHh9LmNhbHtncmlkLWNvbHVtbjoxIC8gLTE7cGFkZGluZzoxNHB4IDE0cHggMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3ctMik7YW5pbWF0aW9uOnJpc2UgLjE4cyB2YXIoLS1lYXNlKX1Aa2V5ZnJhbWVzIHJpc2V7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC00cHgpfX0uY2FsLXRvcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHh9LmNhbC1zYXl7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjUwO2NvbG9yOnZhcigtLWMtaW5rKX0uY2FsLXNheSBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2FsLW5hdntkaXNwbGF5OmZsZXg7Z2FwOjRweH0uY2FsLW5hdiBidXR0b257ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDozNHB4O2hlaWdodDozNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Y3Vyc29yOnBvaW50ZXJ9LmNhbC1uYXYgYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjM1O2N1cnNvcjpkZWZhdWx0fS5jYWwtbmF2IGJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmNhbC1tb250aHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjIwcHh9LmNhbC1tb250aCsuY2FsLW1vbnRoe2Rpc3BsYXk6bm9uZX0uY2FsLW10e21hcmdpbjowIDAgNnB4IDRweDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjY4MH0uY2FsLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNyxtaW5tYXgoMCwxZnIpKTtyb3ctZ2FwOjJweH0uY2FsLWRvd3twYWRkaW5nOjRweCAwIDZweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNke3Bvc2l0aW9uOnJlbGF0aXZlO21pbi13aWR0aDowO2hlaWdodDo0MHB4O3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo1NjA7Y3Vyc29yOnBvaW50ZXJ9LmNkPnNwYW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6bWluKDM4cHgsMTAwJSk7aGVpZ2h0OjM4cHg7bWFyZ2luOjFweCBhdXRvO2JvcmRlci1yYWRpdXM6OTk5cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMgdmFyKC0tZWFzZSl9LmNkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpPnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWMtbGluZS0yKX0uY2Q6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tYy1pbmstMyk7b3BhY2l0eTouNDU7Y3Vyc29yOmRlZmF1bHR9LmNkLnRvZGF5PnNwYW46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206NXB4O2xlZnQ6NTAlO3dpZHRoOjRweDtoZWlnaHQ6NHB4O21hcmdpbi1sZWZ0Oi0ycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcn0uY2QuYmV0d2VlbjpiZWZvcmUsLmNkLmluLmhhcy1vdXQ6YmVmb3JlLC5jZC5vdXQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MXB4IDA7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LmNkLm91dDpiZWZvcmV7cmlnaHQ6NTAlfS5jZC5pbj5zcGFuLC5jZC5vdXQ+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtmb250LXdlaWdodDo3MDB9LmNkLmluOmhvdmVyPnNwYW4sLmNkLm91dDpob3Zlcj5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKTtib3gtc2hhZG93Om5vbmV9LmNkLnJlYWNoOmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjFweCAwO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5jZC5yZWFjaC1lbmQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QucmVhY2gtZW5kPnNwYW57Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxLjVweCB2YXIoLS1jLXByaW1hcnkpfS5jZC5oYXMtcD5zcGFuOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0cHg7cmlnaHQ6NnB4O3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUtMil9LmNkLmJlc3Q+c3BhbjpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfS5jYWwtYmVzdHtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo2NTB9LmNhbC1iZXN0OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjdweDtoZWlnaHQ6N3B4O21hcmdpbi1pbmxpbmUtZW5kOjZweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX0uY2QuYmxhbmt7cG9pbnRlci1ldmVudHM6bm9uZX0uY2FsLWZvb3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTBweDttYXJnaW4tdG9wOjEwcHg7cGFkZGluZy10b3A6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmZsZXgtZGF0ZXN7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1mbG93OmNvbHVtbjtncmlkLWF1dG8tY29sdW1uczptaW5tYXgoMTA4cHgsMWZyKTtnYXA6NnB4O292ZXJmbG93LXg6YXV0bztzY3JvbGxiYXItd2lkdGg6bm9uZTtzY3JvbGwtc25hcC10eXBlOnggcHJveGltaXR5O3BhZGRpbmc6MnB4O21hcmdpbjotMnB4O21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzLmF0LWVuZHttYXNrLWltYWdlOm5vbmV9LmZke3Njcm9sbC1zbmFwLWFsaWduOmNlbnRlcn0uZmxleC1kYXRlczo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfS5mZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjJweDtwYWRkaW5nOjlweCAxMXB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LmZkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5mZC1kYXl7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo2MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5mZC1wcmljZXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5mZC5vbntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLXByaW1hcnkpfS5mZC5vbiAuZmQtZGF5e2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5mZC5iZXN0IC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uZmQuYmVzdCAuZmQtZGF5OmFmdGVye2NvbnRlbnQ6IiDCtyBMb3dlc3QiO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0OjcwMH0uZmQub3V0e2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3JkZXItc3R5bGU6ZGFzaGVkfS5mZC5vdXQgLmZkLXByaWNle2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjYwMH0uaGVsbG97ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4fS5oZWxsbyAuaC1uYW1le2ZvbnQtc2l6ZToyNHB4fS5zZWFyY2h7ZGlzcGxheTpncmlkO2dhcDoxMHB4O3BhZGRpbmc6MTJweDtib3JkZXItcmFkaXVzOjE4cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zZWFyY2ggLndoZXJle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzowIDE0cHg7bWluLWhlaWdodDo1MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZTowfS5zZWFyY2ggLndoZXJlOmZvY3VzLXdpdGhpbntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLXByaW1hcnktc29mdCl9LnNlYXJjaCAud2hlcmUgLmljb3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5zZWFyY2ggLndoZXJlIGlucHV0e2ZsZXg6MTttaW4td2lkdGg6MDtoZWlnaHQ6NTBweDtib3JkZXI6MDtvdXRsaW5lOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjU1MH0uc2VhcmNoIC53aGVyZSBpbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NDUwfS5zZWFyY2ggLndoZW4tZGF0ZXMsLnNlYXJjaCAud2hlbi1yb29tc3tib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5yZWdpb257ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5jb3VudHJ5bmFtZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmNvdW50cnluYW1lIHNtYWxse2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LmRlc3R7ZGlzcGxheTpncmlkO2dhcDo4cHg7cGFkZGluZzoxMHB4IDAgMTJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5kZXN0Omxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTowfS5kZXN0LWNvdW50cnl7anVzdGlmeS1zZWxmOnN0YXJ0O3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyfS5kZXN0LWNvdW50cnkgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5kZXN0LWNvdW50cnk6aG92ZXJ7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnRvb2xiYXJ7Z2FwOjhweH0uY2hpcC5wbGFjZS50b29se2dhcDo3cHg7Zm9udC13ZWlnaHQ6NjIwfS5jaGlwLnBsYWNlLnRvb2wgLmljb3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4O29wYWNpdHk6Ljh9LmZpbHRlci1wYW5lbHtkaXNwbGF5OmdyaWQ7Z2FwOjEycHg7cGFkZGluZzoxNHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5mZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fS5zb3J0cy1re21pbi13aWR0aDo1MnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmNpdHlncm91cHtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LmNpdHlncm91cCsuY2l0eWdyb3Vwe21hcmdpbi10b3A6OHB4fS5jaXR5bmFtZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uY2l0eW5hbWUgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDB9LnRpbGVze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjIwcHgsMWZyKSk7Z2FwOjE0cHh9LnRpbGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMThzIHZhcigtLWVhc2UpLGJveC1zaGFkb3cgLjE4cyB2YXIoLS1lYXNlKSx0cmFuc2Zvcm0gLjE4cyB2YXIoLS1lYXNlKX0udGlsZTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3ctMik7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9LnRpbGU6aG92ZXIgLnQtc2hvdCBpbWd7dHJhbnNmb3JtOnNjYWxlKDEuMDMpfS50LXNob3R7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjthc3BlY3QtcmF0aW86NCAvIDM7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmZ9LnQtc2hvdCBpbWcsLmhlcm8gaW1nLC50aHVtYiBpbWcsLnJvb20tc2hvdCBpbWd7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyO3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyB2YXIoLS1lYXNlKX0udC1tYXJre3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MDtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZTozMHB4O2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMDRlbTtvcGFjaXR5Oi45fS50LWJyYW5ke3Bvc2l0aW9uOmFic29sdXRlO2luc2V0LWJsb2NrLXN0YXJ0OjEwcHg7aW5zZXQtaW5saW5lLXN0YXJ0OjEwcHg7ei1pbmRleDoyO3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6IzBhMGUxODk0O2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wMmVtO2JhY2tkcm9wLWZpbHRlcjpibHVyKDZweCl9LnQtYm9keXtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6M3B4O3BhZGRpbmc6MTJweCAxNHB4IDE0cHh9LnQtbmFtZXt0ZXh0LXdyYXA6cHJldHR5O2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWxpbmUtY2xhbXA6MjtsaW5lLWNsYW1wOjI7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjUwO2xpbmUtaGVpZ2h0OjEuMztsZXR0ZXItc3BhY2luZzotLjAxZW19LnQtd2hlcmU6ZW1wdHl7ZGlzcGxheTpub25lfS50LW1ldGF7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21pbi13aWR0aDowfS50LW1ldGEgLnJhdGV7bWFyZ2luLWlubGluZS1zdGFydDphdXRvfS50LXdoZXJle21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbjtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS50LWZvb3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7bWFyZ2luLXRvcDphdXRvO3BhZGRpbmctdG9wOjEwcHh9LnQtZnJvbXtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3NTA7bGluZS1oZWlnaHQ6MS4xNTtsZXR0ZXItc3BhY2luZzotLjAxZW19LnQtZnJvbSBzbWFsbCwudC1zdWJ7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzowfS50LWZyb20gLnQtcHJle2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjU1MDtjb2xvcjp2YXIoLS1jLWluay0zKX0udC1mcm9tLnQtbm9uZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LnJhdGV7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2NTA7d2hpdGUtc3BhY2U6bm93cmFwfS5yYXRlIHN2Z3tjb2xvcjp2YXIoLS1jLWluayl9LnJhdGUgLnQtZnJvbXtkaXNwbGF5OmlubGluZX0ucmF0ZSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LnQtdGFnc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweDttYXJnaW4tdG9wOjhweH0udC10YWdzIC5wZXJre2ZvbnQtc2l6ZToxMnB4fS50aWxlLm92ZXJ7b3BhY2l0eTouOTJ9Lmhlcm97cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttYXJnaW46LTRweCAtMjBweCAwO2FzcGVjdC1yYXRpbzoxNiAvIDg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmZ9Lmhlcm8gaW1ne29iamVjdC1wb3NpdGlvbjpjZW50ZXIgNTglfS5oZXJvOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjE7YmFja2dyb3VuZDp2YXIoLS1jLXNjcmltKX0uaGVybyAudC1tYXJre2ZvbnQtc2l6ZTo0NHB4fS5oZXJvLXR4dHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIDAgMDt6LWluZGV4OjI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O3BhZGRpbmc6MCAyMHB4IDE4cHg7Y29sb3I6I2ZmZn0uaGVyby10eHQgLnQtYnJhbmR7cG9zaXRpb246c3RhdGljO2FsaWduLXNlbGY6ZmxleC1zdGFydH0uaG90ZWwtbmFtZXttYXJnaW46MDtoeXBoZW5zOm5vbmU7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MjhweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4xO2xldHRlci1zcGFjaW5nOi0uMDFlbTt0ZXh0LXdyYXA6YmFsYW5jZTt0ZXh0LXNoYWRvdzowIDFweCAxOHB4IHJnYigwIDAgMCAvIDMwJSl9Lmhlcm8td2hlcmV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4IDEwcHg7Y29sb3I6I2ZmZmZmZmU1O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU1MH0uaGVyby13aGVyZSAucmF0ZXtjb2xvcjojZmZmfS5oZXJvLXdoZXJlIC5yYXRlIHN2Z3tjb2xvcjojZmZkMjdhfS5oZXJvLXdoZXJlIC5yYXRlIHNtYWxse2NvbG9yOiNmZmZmZmZjNztmb250LXdlaWdodDo1MDB9LmFtZW57ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHggMTZweDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4fS5hbWVuIGxpe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHh9LmFtZW4gbGk6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6NXB4O2hlaWdodDo1cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7b3BhY2l0eTouN30ucm9vbXN7ZGlzcGxheTpncmlkO2dhcDoxMnB4fS5yb29te2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTE2cHggMWZyO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgImJ1eSBidXkiO2dhcDoxMnB4IDE0cHg7cGFkZGluZzoxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE4cyB2YXIoLS1lYXNlKSxib3gtc2hhZG93IC4xOHMgdmFyKC0tZWFzZSl9LnJvb206aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucm9vbS5oZWxke2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWMtcHJpbWFyeSl9LnJvb20tc2hvdHtncmlkLWFyZWE6c2hvdDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2FzcGVjdC1yYXRpbzoxO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZjtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToyMnB4fS5yb29tLW1haW57Z3JpZC1hcmVhOm1haW47ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O21pbi13aWR0aDowfS5yb29tLW5hbWV7bWFyZ2luOjA7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuMztsZXR0ZXItc3BhY2luZzotLjAxZW19LmZhY3Rze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MnB4IDEycHg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4fS5mYWN0cyBsaXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4fS5mYWN0cyAuaWNve3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7b3BhY2l0eTouODV9LnBlcmtze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDttYXJnaW46MnB4IDAgMDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS5wZXJre2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo3cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS4zNX0ucGVyayAuaWNve21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLWMtaW5rKX0ucGVyayBie2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXdlaWdodDo2NTB9LnBlcmsud2FybiwucGVyay53YXJuIC5pY28sLnBlcmsud2FybiBie2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5wZXJrLnNhdmUsLnBlcmsuc2F2ZSAuaWNvLC5wZXJrLnNhdmUgYntjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0ucm9vbS1idXl7Z3JpZC1hcmVhOmJ1eTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0ucm9vbS1idXkgLnByaWNle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjFweDttaW4td2lkdGg6MH0ucm9vbS1idXkgLmFjdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnAtdG90YWx7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1O2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LnAtdW5pdHtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1NTB9LnAtbmlnaHR7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9LnAtd2Fze2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0ucC1tZW1iZXJ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O21hcmdpbi10b3A6M3B4O3BhZGRpbmc6MXB4IDdweDtib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMH0ubGVmdHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LnJ0eXBlIC5yb29tLXNob3QsLnJ0eXBlIC5yb29tLW1haW4sLnJ0eXBlIC5yb29tLWJ1eXtncmlkLWFyZWE6YXV0b30ucnR5cGV7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LnJ0eXBlLmhlbGR7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSl9LnJ0eXBlLWhlYWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczo5NnB4IG1pbm1heCgwLDFmcik7Z2FwOjEycHg7cGFkZGluZzoxMnB4fS5ydHlwZS1oZWFkIC5yb29tLXNob3R7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjA7YXNwZWN0LXJhdGlvOjE7YWxpZ24tc2VsZjpzdGFydH0ucnR5cGUtbntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDB9LnJhdGVze2Rpc3BsYXk6Z3JpZH0ucnJhdGV7ZGlzcGxheTpncmlkO2dhcDoxMHB4O3BhZGRpbmc6MTJweCAxNHB4IDE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0ucnJhdGUuaGVsZHtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0ucmF0ZS1tYWlue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDttaW4td2lkdGg6MH0ucmF0ZS1uYW1le2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xpbmUtaGVpZ2h0OjEuM30ucnJhdGUgLnJvb20tYnV5e3BhZGRpbmctdG9wOjA7Ym9yZGVyLXRvcDowfS5zZWd7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo0cHg7cGFkZGluZzo0cHg7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc2VnLWJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6N3B4O21pbi1oZWlnaHQ6NDBweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2MjA7Y3Vyc29yOnBvaW50ZXJ9LnNlZy1iW2FyaWEtcHJlc3NlZD10cnVlXXtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93KX0uc3RhcnRze2Rpc3BsYXk6Z3JpZDtnYXA6OHB4O21hcmdpbi10b3A6NHB4fS5zdGFydHMgLmNoaXB7bWluLWhlaWdodDozNHB4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZ29vZC10by1rbm93LC5yb3dze2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0ucm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5yb3cud2l0aHRodW1ie2dyaWQtdGVtcGxhdGUtY29sdW1uczo2NHB4IG1pbm1heCgwLDFmcikgYXV0byBhdXRvfS50aHVtYntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMH0ucm93IC5ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDttaW4td2lkdGg6MH0ucm93IC5uYW1le2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xpbmUtaGVpZ2h0OjEuM30ucm93IC5tZXRhe2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS40NX0ucm93IC5wcmljZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2dhcDoxcHg7dGV4dC1hbGlnbjplbmR9LnJvdyAucC10b3RhbHtmb250LXNpemU6MTZweH0ucm93IC5hY3Rpb257ZGlzcGxheTpmbGV4O2dhcDo4cHh9LmRheXttYXJnaW46NHB4IDAgLTZweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmJhbmR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0byAxZnI7YWxpZ24taXRlbXM6Y2VudGVyO292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmJhbmQtZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7cGFkZGluZzoxMHB4IDE0cHg7dGV4dC1hbGlnbjpzdGFydH0uYmFuZC1kOmxhc3QtY2hpbGR7YWxpZ24taXRlbXM6ZmxleC1lbmQ7dGV4dC1hbGlnbjplbmR9LmJhbmQgLndoZW4tbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uY29uZiAuYmFuZHttYXJnaW4tdG9wOjZweDtib3JkZXItc3R5bGU6ZGFzaGVkO2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnJldmlldy1oe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweH0uc3Vtc3tkaXNwbGF5OmdyaWQ7Z2FwOjhweDtwYWRkaW5nOjE0cHggMTZweDtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3Vte2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTMuNXB4fS5zdW0gc3BhbjpsYXN0LWNoaWxke2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjplbmR9LnN1bS5nb29kIHNwYW4sLnN1bS5nb29kIHNwYW46bGFzdC1jaGlsZHtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo2NTB9LnN1bS50b3RhbHthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tdG9wOjRweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwfS5zdW0udG90YWwgc3BhbjpsYXN0LWNoaWxke2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0Ojc4MDtsZXR0ZXItc3BhY2luZzotLjAyZW19LnN1bS50b3RhbCBzbWFsbHtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0uZm9ybXtkaXNwbGF5OmdyaWQ7Z2FwOjE0cHg7cGFkZGluZzoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LmZvcm0taHttYXJnaW46MDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS50d297ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxMnB4fS5mb3JtIGxhYmVse2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjY1MH0uZm9ybSBpbnB1dFt0eXBlPXRleHRdLC5mb3JtIGlucHV0W3R5cGU9ZW1haWxdLC5mb3JtIGlucHV0W3R5cGU9dGVsXSwuZm9ybSBpbnB1dFt0eXBlPXRpbWVde3dpZHRoOjEwMCU7bWluLXdpZHRoOjA7aGVpZ2h0OjQ2cHg7cGFkZGluZzowIDEzcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm94LXNoYWRvdyAuMTVzIHZhcigtLWVhc2UpfS5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tYy1lcnJvcik7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1lcnJvci1zb2Z0KX0uZmllbGQtZXJye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo2cHg7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTUwO2xpbmUtaGVpZ2h0OjEuNH0uZmllbGQtZXJyIC5pY297d2lkdGg6MTVweDtoZWlnaHQ6MTVweDttYXJnaW4tdG9wOjFweH0uZm9ybSBpbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NDAwfS5mb3JtIGlucHV0OmZvY3Vze291dGxpbmU6MDtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLXByaW1hcnktc29mdCl9LmFza3N7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtwYWRkaW5nLXRvcDoxMnB4fS5hc2tzIHN1bW1hcnl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtjdXJzb3I6cG9pbnRlcjtsaXN0LXN0eWxlOm5vbmV9LmFza3Mgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlcntkaXNwbGF5Om5vbmV9LmFza3Mgc3VtbWFyeTphZnRlcntjb250ZW50OiIiO3dpZHRoOjdweDtoZWlnaHQ6N3B4O21hcmdpbjotM3B4IDAgMCBhdXRvO2JvcmRlcjpzb2xpZCB2YXIoLS1jLWluay0zKTtib3JkZXItd2lkdGg6MCAxLjc1cHggMS43NXB4IDA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyB2YXIoLS1lYXNlKX0uYXNrc1tvcGVuXSBzdW1tYXJ5OmFmdGVye21hcmdpbi10b3A6M3B4O3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9LmFza3Mgc3VtbWFyeSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LmFza3MtYm9keXtkaXNwbGF5OmdyaWQ7Z2FwOjEycHg7bWFyZ2luLXRvcDoxMnB4fS5mb3JtIGxhYmVsLnJlbWVtYmVye2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDB9LmZvcm0gbGFiZWwucmVtZW1iZXIgaW5wdXR7bWFyZ2luOjJweCAwIDA7YWNjZW50LWNvbG9yOnZhcigtLWMtcHJpbWFyeSl9LnRydXN0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjV9LnRydXN0IC5pY297bWFyZ2luLXRvcDoxcHg7Y29sb3I6dmFyKC0tYy1pbmstMil9LmJvb2tlZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MTBweCAwIDRweDt0ZXh0LWFsaWduOmNlbnRlcn0uYm9va2VkLW1hcmt7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo1NnB4O2hlaWdodDo1NnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzKTthbmltYXRpb246cG9wIC40NXMgdmFyKC0tZWFzZSl9LmJvb2tlZC1tYXJrIC5pY297d2lkdGg6MjhweDtoZWlnaHQ6MjhweH0uYm9va2VkLW1hcmsudGVzdHtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluZm8pfUBrZXlmcmFtZXMgcG9wezAle3RyYW5zZm9ybTpzY2FsZSguNik7b3BhY2l0eTowfTYwJXt0cmFuc2Zvcm06c2NhbGUoMS4wNik7b3BhY2l0eToxfX0uYm9va2VkLXR7bWFyZ2luOjA7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi0uMDJlbX0uYm9va2VkLXN7bWF4LXdpZHRoOjQ0Y2g7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjV9LmNvbmZ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO2dhcDo0cHg7cGFkZGluZzoxOHB4IDIwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTt0ZXh0LWFsaWduOmNlbnRlcn0uY29uZiAubm90ZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDhlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmNvZGV7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtZmFtaWx5OnZhcigtLWYtbW9ubyk7Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtfS5jb25mLnRpY2tldCAud2hlcmV7cG9zaXRpb246cmVsYXRpdmV9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmUsLmNvbmYudGlja2V0IC53aGVyZTphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTBweDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmV7bGVmdDotMzFweDtjbGlwLXBhdGg6aW5zZXQoMCAwIDAgNTAlKX0uY29uZi50aWNrZXQgLndoZXJlOmFmdGVye3JpZ2h0Oi0zMXB4O2NsaXAtcGF0aDppbnNldCgwIDUwJSAwIDApfS5jb25mIC53aGVyZXttYXJnaW4tdG9wOjhweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1jLWxpbmUtMik7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo2MDB9LmNvbmYgLndoZW57Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHh9Lm1vbmV5LW91dHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZzoxNHB4IDE2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwfS5tb25leS1vdXQgc3BhbjpsYXN0LWNoaWxke2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0Ojc4MDtsZXR0ZXItc3BhY2luZzotLjAyZW19LnF1aWV0LWVuZHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOi00cHh9Lmxpbmt5LmRhbmdlcntjb2xvcjp2YXIoLS1jLWVycm9yLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS5ob21lLWxpbmtze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cHggMTBweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweH0uYXNrZWQtbGluZXtmb250LXN0eWxlOml0YWxpY30ubGVnc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjEwcHh9LmxlZ3tkaXNwbGF5OmdyaWQ7Z2FwOjRweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKX0ubGVnLndhc3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmxlZy53YXMgLmxlZ3Z7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDtjb2xvcjp2YXIoLS1jLWluay0zKX0ubGVna3tjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5sZWd2e2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MH0ubGVnbXtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4fS5zdGF0ZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MjJweCAxMnB4IDhweDt0ZXh0LWFsaWduOmNlbnRlcn0uc3RhdGUtaWNve2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NTJweDtoZWlnaHQ6NTJweDttYXJnaW4tYm90dG9tOjRweDtib3JkZXItcmFkaXVzOjE2cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5zdGF0ZS1pY28gLmljb3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4fS5zdGF0ZS5lcnJvciAuc3RhdGUtaWNve2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yKX0uc3RhdGUubGltaXQgLnN0YXRlLWljb3tiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0uc3RhdGUtdHttYXJnaW46MDtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3MjA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uc3RhdGUtZHttYXgtd2lkdGg6NDZjaDttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNTV9LnN0YXRlIC5mb290e2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDo4cHh9LnN0YXRlIC5mb290Pi5nb3tmbGV4OjAgMSBhdXRvfS5za2Vse2Rpc3BsYXk6Z3JpZDtnYXA6MTRweH1bZGF0YS10aGVtZT1kYXJrXSAuc2t7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzE3MjAzMywjMjQzMDQ5LCMxNzIwMzMpfS5za3tib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdmFyKC0tYy1zdW5rKSAwJSx2YXIoLS1jLWxpbmUpIDUwJSx2YXIoLS1jLXN1bmspIDEwMCUpO2JhY2tncm91bmQtc2l6ZToyMDAlIDEwMCU7YW5pbWF0aW9uOnNoaW1tZXIgMS40cyBsaW5lYXIgaW5maW5pdGV9LnNrLWxvZ297ZGlzcGxheTpibG9jazt3aWR0aDoxMTJweDtoZWlnaHQ6MzBweH0uc2stYmFye2hlaWdodDo2MHB4O2JvcmRlci1yYWRpdXM6MTRweH0uc2stdGlsZXN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMjBweCwxZnIpKTtnYXA6MTRweH0uc2stdGlsZXtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LnNrLWltZ3thc3BlY3QtcmF0aW86NCAvIDM7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKX0uc2stbGluZXtoZWlnaHQ6MTRweDt3aWR0aDo4MCV9LnNrLWxpbmUuc2hvcnR7d2lkdGg6NDUlfUBrZXlmcmFtZXMgc2hpbW1lcnswJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjIwMCUgMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDAlIDB9fS5jbXAtd3JhcHtvdmVyZmxvdy14OmF1dG87bWFyZ2luLWlubGluZTotMnB4O3BhZGRpbmc6MnB4fS5jbXB7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNzZweCw5NnB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDEyNHB4LDFmcikpO2FsaWduLWl0ZW1zOnN0cmV0Y2g7Y29sdW1uLWdhcDoxMHB4fS5jbXAuZm91cntncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDU2cHgsNzJweCkgcmVwZWF0KHZhcigtLWNvbHMpLG1pbm1heCgxMDRweCwxZnIpKX0uY21wLWNvcm5lcntncmlkLWNvbHVtbjoxO2dyaWQtcm93OjEgLyBzcGFuIHZhcigtLWhlYWQtcm93cywgNSl9LmNtcC1oZWFke2Rpc3BsYXk6Z3JpZDtncmlkLXJvdzoxIC8gc3BhbiB2YXIoLS1oZWFkLXJvd3MsIDUpO2dyaWQtdGVtcGxhdGUtcm93czpzdWJncmlkO3Jvdy1nYXA6OHB4O2FsaWduLWNvbnRlbnQ6c3RhcnQ7bWluLXdpZHRoOjA7cGFkZGluZy1ib3R0b206MTRweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0uY21wLWhlYWQ+LmNvbC1uYW1lLC5jbXAtaGVhZD4uY29sLXByaWNlLC5jbXAtaGVhZD4ud2h5LC5jbXAtaGVhZD4ucGN7bWFyZ2luLWlubGluZToxMnB4fS5jbXAtaGVhZC5waWNre2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWMtcHJpbWFyeSl9LmNtcC1oZWFkIC50LXNob3R7YXNwZWN0LXJhdGlvOjE2IC8gMTA7d2lkdGg6MTAwJTtwYWRkaW5nOjA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXJ9LnBpY2ttYXJre3BhZGRpbmc6NHB4IDhweDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnBpY2ttYXJrLm5vbmV7dmlzaWJpbGl0eTpoaWRkZW59LmNvbC1uYW1le21hcmdpbi10b3A6MnB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjN9LmNvbC1ncm91cHtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NTAwfS5jb2wtcHJpY2V7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzgwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LmNvbC1wcmljZSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjU1MDtsZXR0ZXItc3BhY2luZzowfS5jb2wtcHJpY2Ugc21hbGwuc3Vie2Rpc3BsYXk6YmxvY2t9LndoeXtwYWRkaW5nLWlubGluZS1zdGFydDo5cHg7Ym9yZGVyLWlubGluZS1zdGFydDoycHggc29saWQgdmFyKC0tYy1wcmltYXJ5LXNvZnQtMik7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXN0eWxlOml0YWxpYztsaW5lLWhlaWdodDoxLjV9LndoeS5ub25le3BhZGRpbmc6MDtib3JkZXI6MH0ucGN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNDV9LnBjIGRpdntkaXNwbGF5OmZsZXg7Z2FwOjZweH0ucGMgLm17ZmxleDowIDAgYXV0bztmb250LXdlaWdodDo3NTB9LnBjIC5wcm8gLm17Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnBjIC5jb24gLm17Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNtcCAuaywuY21wIC52e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo4cHggMTBweDtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNDV9LmNtcCAua3twb3NpdGlvbjpzdGlja3k7aW5zZXQtaW5saW5lLXN0YXJ0OjA7Z3JpZC1jb2x1bW46MTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjYwMH0uY21wIC52LmFsdCwuY21wIC5rOmhhcygrLnYuYWx0KXtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmRheXN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZGF5cm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MzBweCAxZnI7Z2FwOjEycHh9LmRheW51bXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fS5kYXludW0gYntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmRheW51bSBpe2ZsZXg6MTt3aWR0aDoycHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5kYXlyb3c6bGFzdC1jaGlsZCAuZGF5bnVtIGl7ZGlzcGxheTpub25lfS5kYXlib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttaW4td2lkdGg6MDtwYWRkaW5nOjNweCAwIDE4cHh9LmRheWxhYmVse2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjN9LmRheWxhYmVsIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0uZGF5bm90ZXtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU1fS5tb21lbnRze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDttYXJnaW46MnB4IDAgMDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS5tb21lbnRzIGxpe2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6ODRweCAxZnI7Z2FwOjEwcHg7YWxpZ24taXRlbXM6YmFzZWxpbmV9Lm1vbWVudHMgLndoZW57b3ZlcmZsb3ctd3JhcDphbnl3aGVyZTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA1ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5tb21lbnRzIC53aGF0e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjFweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjR9Lm1vbWVudHMgLndoYXQgYntmb250LXdlaWdodDo2MjB9Lm1vbWVudHMgLndoYXQgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9LnBsYW4tc3RheXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwNHB4IDFmcjtnYXA6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtjdXJzb3I6cG9pbnRlcn0ucGxhbi1zdGF5OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnBsYW4tc3RheSAucHMtc2hvdHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6OTJweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmfS5wbGFuLXN0YXkgLnBzLXNob3QgaW1ne3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyfS5wbGFuLXN0YXkgLnBzLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo0cHg7bWluLXdpZHRoOjA7cGFkZGluZzoxMHB4IDEycHggMTBweCAwfS5wbGFuLXN0YXkgLm5hbWV7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuM30ucGxhbi1zdGF5IC5tZXRhe2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5wbGFuLXN0YXkgLnBzLXByaWNle2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NzAwfS5wbGFuLW5pZ2h0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjhweDtwYWRkaW5nLXRvcDo2cHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWMtbGluZS0yKTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyfS5wbGFuLWl0ZW17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKX0ucGxhbi1pdGVtIC5uYW1le2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjY1MH0ucGxhbi1pdGVtIC5tZXRhe2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5pbnN0YXRle3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDt3aGl0ZS1zcGFjZTpub3dyYXB9Lmluc3RhdGUueWVze2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5pbnN0YXRlLm5ve2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uZ2Fwe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uZ2FwIGJ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0Ojc4MDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LnN1Z2dlc3R7ZGlzcGxheTpncmlkO2dhcDo2cHg7cGFkZGluZy10b3A6MTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5zdWdnZXN0IC53bHttYXJnaW4tYm90dG9tOjJweH0uY2hpcC5uZXh0e2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O3dpZHRoOjEwMCU7bWluLWhlaWdodDo0NHB4O3BhZGRpbmc6OHB4IDE0cHg7Ym9yZGVyLXJhZGl1czoxMnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246c3RhcnR9LmNoaXAubmV4dCAuaWNve2ZsZXg6bm9uZTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uc3VnZ2VzdCAuY2hpcC5zYXkgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNrLXBhZ2VyLWJ0bntoZWlnaHQ6NDBweDtib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7Zm9udC13ZWlnaHQ6NjAwfS5jay1wYWdlci1ue2NvbG9yOnZhcigtLWMtaW5rLTMpfS5wLWxpbmV7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwfS5yb3cubGluZSAucC11bml0e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0ucm93LmxpbmUgLnBlcmtze21hcmdpbi10b3A6NHB4fS5tZW1iZXItb2ZmZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4fS5tZW1iZXItb2ZmZXIgLmljbywubWVtYmVyLW9mZmVyIC5saW5reXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uYXNrLWdyb3Vwe2Rpc3BsYXk6Z3JpZDtnYXA6OHB4fS5saW5rc3tkaXNwbGF5OmdyaWQ7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpfS5saW5rLXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O21pbi1oZWlnaHQ6NDZweDtwYWRkaW5nOjAgMTRweDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1NjA7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcn0ubGluay1yb3c6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDowfS5saW5rLXJvdzpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9Lmxpbmstcm93IC5pY297Y29sb3I6dmFyKC0tYy1pbmstMyl9LnN0cmlwLWh7bWFyZ2luLWJvdHRvbTotOHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMH0uZmQubG93ZXN0IC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uZmQubG93ZXN0e2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1jLXN1Y2Nlc3MpIDQ1JSx2YXIoLS1jLWxpbmUpKX0udGlsZS5sb3dlc3QgLnQtZnJvbXtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0udC1nb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LnQtZ28gLmljb3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4fS50aWxlOmhvdmVyIC50LWdve2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5yZW1pbmR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEwcHg7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NjA7bGluZS1oZWlnaHQ6MS41fS5yZW1pbmQgLmljb3ttYXJnaW4tdG9wOjFweH0uY2R7aGVpZ2h0OjUycHh9LmNkPnNwYW57d2lkdGg6bWluKDM2cHgsMTAwJSk7aGVpZ2h0OjM2cHg7bWFyZ2luLXRvcDowfS5jZC1we3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6MTtvdmVyZmxvdzpoaWRkZW47Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjkuNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzotLjAyZW07dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZC5iZXR3ZWVuOmJlZm9yZSwuY2QuaW4uaGFzLW91dDpiZWZvcmUsLmNkLm91dDpiZWZvcmUsLmNkLnJlYWNoOmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtpbnNldDoxcHggMCAxM3B4fS5jZC5oYXMtcD5zcGFuOmJlZm9yZXtkaXNwbGF5Om5vbmV9LmNkLmJlZm9yZTpub3QoOmRpc2FibGVkKXtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2Q6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjB9LmNkOmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9LmNhbC1tdHttYXJnaW4tbGVmdDowfVtkYXRhLXRoZW1lPWRhcmtdIC5jZDpkaXNhYmxlZHtvcGFjaXR5Oi42fS53di1lbXB0eXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LnNrLXNheXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LnN0ZXAgYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjM7Y3Vyc29yOmRlZmF1bHR9LnNlYXJjaC5yZXRyeXtkaXNwbGF5OmZsZXg7Z2FwOjhweDt3aWR0aDoxMDAlO21heC13aWR0aDo0NDBweDttYXJnaW46OHB4IGF1dG8gMDtwYWRkaW5nOjA7YmFja2dyb3VuZDpub25lfS5zZWFyY2gucmV0cnkgLndoZXJle2ZsZXg6MTttaW4taGVpZ2h0OjQ4cHh9LnNlYXJjaC5yZXRyeSAud2hlcmUgaW5wdXR7aGVpZ2h0OjQ2cHh9LnQtbmFtZSwuaG90ZWwtbmFtZSwucm9vbS1uYW1lLC5yYXRlLW5hbWUsLmNvbmYgLndoZXJlLC5yb3cgLm5hbWUsLmNvbC1uYW1le3dvcmQtYnJlYWs6a2VlcC1hbGw7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0uaGVhZHRyaXAtbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21pbi13aWR0aDoyMHB4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCA2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0Ojc1MH0uaGVhZCAuYnJhbmR7Ym94LXNpemluZzpjb250ZW50LWJveDtwYWRkaW5nOjVweCAxMHB4O2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7LmNhbC1tb250aHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LmNhbC1tb250aCsuY2FsLW1vbnRoe2Rpc3BsYXk6YmxvY2t9LnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE2OHB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAic2hvdCBidXkiO2FsaWduLWl0ZW1zOnN0YXJ0O3BhZGRpbmc6MTRweH0ucm9vbS1zaG90e2FzcGVjdC1yYXRpbzphdXRvO2FsaWduLXNlbGY6c3RyZXRjaDttaW4taGVpZ2h0OjE1MHB4fS5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMzJweCBtaW5tYXgoMCwxZnIpfS5oZXJve2FzcGVjdC1yYXRpbzoxNiAvIDd9LmhvdGVsLW5hbWV7Zm9udC1zaXplOjMycHh9fUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpey5oZWFke21pbi1oZWlnaHQ6NTZweDtwYWRkaW5nOjEwcHggMTJweCA4cHggMTZweH0uc3ViaGVhZHtwYWRkaW5nOjAgMTZweCA4cHh9LmRlbW9zdHJpcHtwYWRkaW5nOjhweCAxNnB4fSNjb250ZW50e2dhcDoxNHB4O3BhZGRpbmc6MnB4IDE2cHggMTZweH0uaGVyb3ttYXJnaW4taW5saW5lOi0xNnB4O2FzcGVjdC1yYXRpbzo0IC8gM30uaGVyby10eHR7cGFkZGluZzowIDE2cHggMTZweH0uaG90ZWwtbmFtZXtmb250LXNpemU6MjVweH0ud2hlbmJhcntncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0ud2hlbi1zaWRle2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0ud2hlbi1yb29tc3tmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS53aGVuLXNpZGUgLmdve21pbi1oZWlnaHQ6NDhweH0ud2hlbi1zaWRlOm5vdCg6aGFzKC5nbykpe2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LndoZW5iYXI6bm90KDpoYXMoLmdvKSl7Z2FwOjA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC53aGVuLWRhdGVze2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAud2hlbi1yb29tc3twYWRkaW5nOjhweCAxMHB4IDhweCAxNHB4O2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC5jYWx7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lfS50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoxMHB4fS50aWxle2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpzdHJldGNofS50LXNob3R7ZmxleDowIDAgMTEycHg7YXNwZWN0LXJhdGlvOmF1dG87bWluLWhlaWdodDoxMzJweH0udC1icmFuZHtpbnNldC1ibG9jay1zdGFydDo4cHg7aW5zZXQtaW5saW5lLXN0YXJ0OjhweDtwYWRkaW5nOjJweCA3cHg7Zm9udC1zaXplOjEwcHh9LnQtYm9keXtwYWRkaW5nOjExcHggMTJweCAxMnB4O21pbi13aWR0aDowfS50LW5hbWV7Zm9udC1zaXplOjE0LjVweH0udC1mcm9te2ZvbnQtc2l6ZToxN3B4fS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMTJweCAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byAxZnI7Y29sdW1uLWdhcDoxMnB4fS5zay1pbWd7Z3JpZC1yb3c6MSAvIHNwYW4gMzthc3BlY3QtcmF0aW86YXV0bztoZWlnaHQ6MTIwcHh9LnR3b3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5yb3csLnJvdy53aXRodGh1bWJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0b30ucm93IC50aHVtYntkaXNwbGF5Om5vbmV9LnJvdyAuYWN0aW9ue2dyaWQtY29sdW1uOjEgLyAtMTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnJvdyAuYWN0aW9uOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93IC5mbGFiZWx7ZGlzcGxheTpub25lfS5iYWNrYnRuOm5vdChbaGlkZGVuXSkrLmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdIC5mbGFiZWx7ZGlzcGxheTppbmxpbmV9LmZsb3cgbGkrbGk6YmVmb3Jle3dpZHRoOjEycHh9LmxlZ3N7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uY21we2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNjhweCw4NHB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDExOHB4LDFmcikpfS5nb3ttaW4taGVpZ2h0OjQ4cHh9LnJvb20tYnV5e2ZsZXgtd3JhcDp3cmFwfS5yb29tLWJ1eSAuYWN0aW9ue2ZsZXg6MSAxIDEwMCV9LnJvb20tYnV5IC5hY3Rpb24gLmdve2ZsZXg6MSAxIDB9LnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjc2cHggbWlubWF4KDAsMWZyKX0uZ28uc217bWluLWhlaWdodDo0MHB4fS5jaGlwLC5jaGlwLnBsYWNle21pbi1oZWlnaHQ6MzhweH0ubWVtYmVyY2hpcCwuaGVhZHRyaXB7aGVpZ2h0OjM2cHh9LnN0ZXAubGlnaHQgYnV0dG9uLC5zdGVwIGJ1dHRvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4fX0jY29udGVudC5lbnRlcj4qe2FuaW1hdGlvbjplbnRlciAuMjhzIHZhcigtLWVhc2UpIGJvdGh9I2NvbnRlbnQuZW50ZXI+Om50aC1jaGlsZCgyKXthbmltYXRpb24tZGVsYXk6LjAzc30jY29udGVudC5lbnRlcj46bnRoLWNoaWxkKDMpe2FuaW1hdGlvbi1kZWxheTouMDZzfSNjb250ZW50LmVudGVyPjpudGgtY2hpbGQobis0KXthbmltYXRpb24tZGVsYXk6LjA5c31Aa2V5ZnJhbWVzIGVudGVyezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg2cHgpfX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2UpeyosKjpiZWZvcmUsKjphZnRlcnthbmltYXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0uY2FyZC5idXN5IC5idXN5YmFyOmJlZm9yZXt3aWR0aDoxMDAlO3RyYW5zZm9ybTpub25lO29wYWNpdHk6LjZ9LnNre2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX19LmJvb2tlZC1tYXJrLnBheXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5wYXlib3h7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweDtwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ucGF5LWFtb3VudHtmb250LXNpemU6MzBweDtmb250LXdlaWdodDo3MjA7bGluZS1oZWlnaHQ6MS4xO2xldHRlci1zcGFjaW5nOi0uMDFlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7Y29sb3I6dmFyKC0tYy1pbmspfS5wYXktYnl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjV9LnBheS1ieSAuY291bnRkb3due2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30udW5wYWlkLnBhaWR7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCl9LnVucGFpZC5wYWlkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LnVucGFpZC5wYWlkIGJ7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmNhbC1ncmlke3Jvdy1nYXA6NHB4fS5jZHtoZWlnaHQ6NTBweH0uY2Q+c3BhbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxcHg7d2lkdGg6Y2FsYygxMDAlIC0gNHB4KTttYXgtd2lkdGg6NjRweDtoZWlnaHQ6MTAwJTttYXJnaW46MCBhdXRvO2JvcmRlci1yYWRpdXM6MTBweH0uY2Qtbntmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuMX0uY2QtcHtwb3NpdGlvbjpzdGF0aWM7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY2QubG93ZXN0IC5jZC1we2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0Ojc1MH0uY2QudG9kYXk+c3BhbjphZnRlcntkaXNwbGF5Om5vbmV9LmNkLnRvZGF5IC5jZC1ue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgMnB4O3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHh9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZSwuY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2luc2V0OjB9LmNkLmluLmhhcy1vdXQ6YmVmb3Jle2xlZnQ6NTAlfS5jZC5vdXQ6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QuaW4+c3BhbiwuY2Qub3V0PnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNkLmluIC5jZC1wLC5jZC5vdXQgLmNkLXB7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uY2Q6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjFweH0uY2QuaW46Zm9jdXMtdmlzaWJsZT5zcGFuLC5jZC5vdXQ6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmUtY29sb3I6dmFyKC0tYy1pbmspfS5jYWwtbGVnZW5ke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDttaW4td2lkdGg6MH0uY2FsLWxlZ2VuZCBzbWFsbHtmb250LXNpemU6MTEuNXB4O2xpbmUtaGVpZ2h0OjEuNDtjb2xvcjp2YXIoLS1jLWluay0zKX0uZmxleC1kYXRlc3tzY3JvbGwtc25hcC10eXBlOnggbWFuZGF0b3J5O3Njcm9sbC1wYWRkaW5nLWlubGluZToycHg7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4LCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzIC5mZHtzY3JvbGwtc25hcC1hbGlnbjpzdGFydH0uZmxleC1kYXRlcy5hdC1zdGFydHttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI4cHgpLHRyYW5zcGFyZW50KX0uZmxleC1kYXRlcy5hdC1lbmR7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4KX0uZmxleC1kYXRlcy5hdC1zdGFydC5hdC1lbmR7bWFzay1pbWFnZTpub25lfS5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXSwuZm9ybSBpbnB1dFthcmlhLWludmFsaWQ9dHJ1ZV06Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWMtZXJyb3IpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtZXJyb3Itc29mdCl9LmZvcm0tZXJye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjQ1fS5mb3JtLWVyciAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O21hcmdpbi10b3A6MXB4fS5zdGF0ZSAuZm9vdD4uZ297d2hpdGUtc3BhY2U6bm93cmFwfS5zdGF0ZSAubGlua3N7YWxpZ24tc2VsZjpzdHJldGNoO21hcmdpbi10b3A6NnB4O3RleHQtYWxpZ246c3RhcnR9LmxpbmstZ297ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250LXdlaWdodDo2NTB9LmxpbmstZ28gLmljb3tjb2xvcjppbmhlcml0fUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpey5zdGF0ZSAuZm9vdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24tc2VsZjpzdHJldGNofS5zdGF0ZSAuZm9vdD4uZ297d2lkdGg6MTAwJX19LmhlYWQgLmJyYW5ke21heC1oZWlnaHQ6MzhweDtwYWRkaW5nOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7cGFkZGluZzo0cHggOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2RmZTVlZTtmaWx0ZXI6YnJpZ2h0bmVzcyguOSl9LmJhbmQgLndoZW4tbntsaW5lLWhlaWdodDoxLjI1O3RleHQtYWxpZ246Y2VudGVyfS5iYW5kIC53aGVuLW4gc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtvcGFjaXR5Oi44NX0uaGVhZCAudGl0bGU6ZW1wdHl7ZGlzcGxheTpub25lfS5zay1sb2dve29yZGVyOi0xfS5za2Vse2dhcDoxMnB4fS5zay1zdWJ7d2lkdGg6NTglO2hlaWdodDoxNHB4O21hcmdpbi10b3A6LTZweH0uc2stYmFye2hlaWdodDoxMThweH0uc2stY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4fS5zay1jaGlwe3dpZHRoOjE2OHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHh9LnNrLWNoaXAuc2hvcnR7d2lkdGg6MTA0cHh9LnNrLXNheXtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uc3RlcCBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouNDV9Lm5ie2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlO292ZXJmbG93LXdyYXA6YW55d2hlcmV9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmUsLmNvbmYudGlja2V0IC53aGVyZTphZnRlcntjbGlwLXBhdGg6bm9uZTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jLWxpbmUpO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jLWxpbmUpfS5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jLWxpbmUpO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWMtbGluZSl9LnF1aWV0LWVuZHttYXJnaW4tdG9wOjZweH0uc3RlcCBidXR0b24sLnN0ZXAubGlnaHQgYnV0dG9uLC5jYWwtbmF2IGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4fS5jYWwtZm9vdCAubGlua3l7bWluLWhlaWdodDo0MHB4O3BhZGRpbmc6MCA2cHg7bWFyZ2luOi04cHggLTZweH0udC1tZXRhOm5vdCg6aGFzKC5yYXRlKSk6aGFzKC50LXdoZXJlOmVtcHR5KXtkaXNwbGF5Om5vbmV9LnN0YXRlIC5saW5rLXJvd3t3aWR0aDoxMDAlfS5saW5rLXJvdz5zcGFuOmZpcnN0LWNoaWxke2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOnN0YXJ0fS5saW5rLWdve2ZsZXg6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNvbmYgLndoZW4gLm5ie2Rpc3BsYXk6YmxvY2t9LmNvbmYgLndoZW4gLm5iK3NwYW5bYXJpYS1oaWRkZW5de2Rpc3BsYXk6bm9uZX0uc2lte2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1pbmxpbmUtZW5kOjZweDtwYWRkaW5nOjFweCA2cHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6dmFyKC0tZi1zYW5zKTtmb250LXNpemU6LjVlbTtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjAyZW07bGluZS1oZWlnaHQ6MS41O3ZlcnRpY2FsLWFsaWduOi4zNWVtO29wYWNpdHk6Ljh9LnQtbmFtZSAuc2ltLC5jb25mIC53aGVyZSAuc2lte2ZvbnQtc2l6ZToxMC41cHg7dmVydGljYWwtYWxpZ246LjE1ZW19LnNpbS1ub3Rle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo3cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fS5zaW0tbm90ZSAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O21hcmdpbi10b3A6MnB4fS5yb29tLWxlYWR7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjR9LmxlYWQta3tkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MXB4O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06bGFuZyh6aCkgLmxlYWQta3tsZXR0ZXItc3BhY2luZzouMDJlbX0uaC1mcmVle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttYXJnaW4tdG9wOjZweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0uaC1mcmVlIC5pY297d2lkdGg6MTRweDtoZWlnaHQ6MTRweH06cm9vdHstLXItbGc6IDEycHh9OnJvb3QgLmgtbmFtZXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfTpyb290IC53diw6cm9vdCAudC1mcm9tLDpyb290IC5wLXRvdGFsLDpyb290IC5mZC1wcmljZSw6cm9vdCAuZmQtZG4sOnJvb3QgLmNkLXB7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zIGxpbmluZy1udW1zfTpyb290IC53dntmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX06cm9vdCAudGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAudGlsZXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6c3RyZXRjaDtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC50aWxlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3gtc2hhZG93Om5vbmU7dHJhbnNmb3JtOm5vbmV9OnJvb3QgLnRpbGUubG93ZXN0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgYXV0byAwIDA7d2lkdGg6M3B4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX06cm9vdCAudC1zaG90e2ZsZXg6MCAwIDEwNHB4O3dpZHRoOjEwNHB4O21pbi1oZWlnaHQ6MDthc3BlY3QtcmF0aW86MTttYXJnaW46MTRweCAwIDE0cHggMTJweDtib3JkZXItcmFkaXVzOjEwcHg7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fTpyb290IC50LWJyYW5ke2Rpc3BsYXk6bm9uZX06cm9vdCAudC1ib2R5e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dyaWQtdGVtcGxhdGUtYXJlYXM6Im5hbWUgZm9vdCIgIm1ldGEgZm9vdCIgInRhZ3MgZm9vdCI7YWxpZ24tY29udGVudDpzdGFydDtnYXA6NXB4IDE0cHg7cGFkZGluZzoxNHB4IDEycHggMTRweCAxNHB4fTpyb290IC50LW5hbWV7Z3JpZC1hcmVhOm5hbWU7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTcuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjI7bGV0dGVyLXNwYWNpbmc6LS4wMDVlbTstd2Via2l0LWxpbmUtY2xhbXA6MztsaW5lLWNsYW1wOjN9OnJvb3QgLnQtbWV0YXtncmlkLWFyZWE6bWV0YTtmbGV4LXdyYXA6d3JhcDtnYXA6MnB4IDEwcHh9OnJvb3QgLnQtbWV0YSAucmF0ZXttYXJnaW4taW5saW5lLXN0YXJ0OjB9OnJvb3QgLnQtd2hlcmV7d2hpdGUtc3BhY2U6bm9ybWFsO292ZXJmbG93OnZpc2libGV9OnJvb3QgLnQtdGFnc3tncmlkLWFyZWE6dGFnczttYXJnaW4tdG9wOjNweH06cm9vdCAudC1mb290e2dyaWQtYXJlYTpmb290O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDttYXJnaW46MDtwYWRkaW5nOjA7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZnJvbXtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo3NTB9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOjc2cHg7bWFyZ2luLXRvcDoycHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO2ZvbnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0OjEuMzt3aGl0ZS1zcGFjZTpub3JtYWx9OnJvb3QgLnQtZ297ZGlzcGxheTpub25lfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LXNob3R7ZmxleC1iYXNpczoxMzZweDt3aWR0aDoxMzZweH06cm9vdCAudC1uYW1le2ZvbnQtc2l6ZToxOXB4fTpyb290IC50LWZyb20gc21hbGwsOnJvb3QgLnQtc3Vie21heC13aWR0aDpub25lfX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaGVyb3tvcmRlcjotNjthc3BlY3QtcmF0aW86MTYgLyA5fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5zaW0tbm90ZXtvcmRlcjotNTttYXJnaW4tdG9wOi02cHh9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LnNlZ3tvcmRlcjotNH06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4ud2hlbmJhcntvcmRlcjotM306cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uc3RyaXAtaHtvcmRlcjotMjttYXJnaW4tYm90dG9tOi04cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3Q6bGFuZyh6aCkgLnN0cmlwLWh7bGV0dGVyLXNwYWNpbmc6LjAyZW19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmZsZXgtZGF0ZXN7b3JkZXI6LTE7Z3JpZC1hdXRvLWZsb3c6Y29sdW1uO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heChtYXgtY29udGVudCwxZnIpO2dhcDowO21hcmdpbjowO3BhZGRpbmc6MDtvdmVyZmxvdy14OmF1dG87Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxMnB4O21hc2staW1hZ2U6bm9uZX06cm9vdCAuZmR7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHg7cGFkZGluZzo5cHggNnB4IDExcHg7Ym9yZGVyOjA7Ym9yZGVyLWlubGluZS1lbmQ6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzpub25lO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMjVzIHZhcigtLWVhc2UpLGNvbG9yIC4yNXMgdmFyKC0tZWFzZSl9OnJvb3QgLmZkOmxhc3QtY2hpbGR7Ym9yZGVyLWlubGluZS1lbmQ6MH06cm9vdCAuZmQtZGF5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDowO2NvbG9yOnZhcigtLWMtaW5rLTMpfTpyb290IC5mZC1tb24sOnJvb3QgLmZkLWRvd3tmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3QgLmZkLW1vbntjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX06cm9vdCAuZmQtZG57Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2NTB9OnJvb3QgLmZkLm9ue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2JveC1zaGFkb3c6bm9uZX06cm9vdCAuZmQub24gLmZkLWRheSw6cm9vdCAuZmQub24gLmZkLWRuLDpyb290IC5mZC5vbiAuZmQtbW9uLDpyb290IC5mZC5vbiAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX06cm9vdCAuZmQubG93ZXN0Om5vdCgub24pe2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpfTpyb290IC5mZC5iZXN0IC5mZC1kYXk6YWZ0ZXJ7Y29udGVudDpub25lfTpyb290IC5mZC1sb3d7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC1zaXplOjkuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3QgLmZkLm9uIC5mZC1sb3d7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAuaGVyb3thc3BlY3QtcmF0aW86MjEgLyA5fX06cm9vdCAucm9vbXN7Z2FwOjA7Ym9yZGVyLXRvcDoxLjVweCBzb2xpZCB2YXIoLS1jLWluayl9OnJvb3QgLnJ0eXBlLDpyb290IC5yb29te2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9OnJvb3QgLnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IiAibWFpbiIgImJ1eSI7cGFkZGluZzoxNnB4IDB9OnJvb3QgLnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MTJweDtwYWRkaW5nOjE2cHggMCA4cHh9OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FsaWduLXNlbGY6c3RhcnQ7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzthc3BlY3QtcmF0aW86MTYgLyA5O2JvcmRlci1yYWRpdXM6MTBweH06cm9vdCAucm9vbS1uYW1le2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0Ojc1MH06cm9vdCAucnJhdGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtwYWRkaW5nOjEycHggMDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lKX06cm9vdCAucnJhdGUgLnJvb20tYnV5LDpyb290IC5yb29tIC5yb29tLWJ1eXtib3JkZXItdG9wOjA7cGFkZGluZy10b3A6MH06cm9vdCAucC10b3RhbHtmb250LXNpemU6MjBweH1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjQwcHggbWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJzaG90IGJ1eSI7Z2FwOjEwcHggMThweH06cm9vdCAucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjQwcHggbWlubWF4KDAsMWZyKTtnYXA6MThweH06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjQgLyAzfTpyb290IC5ycmF0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2FsaWduLWl0ZW1zOnN0YXJ0O2dhcDoxOHB4fTpyb290IC5ycmF0ZSAucm9vbS1idXl7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO3RleHQtYWxpZ246ZW5kfTpyb290IC5ycmF0ZSAucm9vbS1idXkgLnByaWNle2FsaWduLWl0ZW1zOmZsZXgtZW5kfX06cm9vdCAuZ297d2hpdGUtc3BhY2U6bm93cmFwfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7OnJvb3QgLnRpbGUsOnJvb3QgLmZkLDpyb290IC50LXNob3QgaW1ne3RyYW5zaXRpb246bm9uZX19LmxlYWQta3tkaXNwbGF5OmlubGluZTttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1NTA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5sZWFkLWs6YWZ0ZXJ7Y29udGVudDoiOiAifTpsYW5nKHpoKSAubGVhZC1rOmFmdGVye2NvbnRlbnQ6Iu+8miJ9QG1lZGlhKG1heC13aWR0aDo1MjBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjg4cHg7d2lkdGg6ODhweH06cm9vdCAudC1ib2R5e2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBuYW1lIiAibWV0YSBtZXRhIiAidGFncyBmb290IjthbGlnbi1pdGVtczplbmR9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTdweDstd2Via2l0LWxpbmUtY2xhbXA6dW5zZXQ7bGluZS1jbGFtcDpub25lO2Rpc3BsYXk6YmxvY2t9OnJvb3QgLnQtdGFnc3thbGlnbi1zZWxmOmVuZDttYXJnaW4tdG9wOjZweH06cm9vdCAudC10YWdzOmVtcHR5e2dyaWQtY29sdW1uOjEgLyAtMX19OnJvb3QgLmZke3BhZGRpbmc6OXB4IDNweCAxMXB4fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTEuNXB4O2xldHRlci1zcGFjaW5nOi0uMDJlbX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7cGFkZGluZzo1cHggOXB4O2JvcmRlci1yYWRpdXM6OXB4O2JhY2tncm91bmQ6I2QzZDllMztib3gtc2hhZG93Om5vbmU7ZmlsdGVyOmJyaWdodG5lc3MoLjgpfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZC5kYXJrLWFydHtwYWRkaW5nOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZTtmaWx0ZXI6bm9uZX0ud2hlbmJhciAud2hlbi1yb29tcy53aGVuLXBhcnR5LC5zZWFyY2ggLndoZW4tcm9vbXMud2hlbi1wYXJ0eXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtnYXA6MDtwYWRkaW5nOjB9LnBhcnR5LXRpbGV7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2NvbHVtbi1nYXA6OHB4O3Jvdy1nYXA6MnB4O3dpZHRoOjEwMCU7bWluLWhlaWdodDo1MnB4O3BhZGRpbmc6OHB4IDEycHggOHB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9LnBhcnR5LXRpbGUgLndse2dyaWQtY29sdW1uOjF9LnBhcnR5LXZ7Z3JpZC1jb2x1bW46MTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30ucGFydHktdGlsZSAuaWNve2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MSAvIHNwYW4gMjtjb2xvcjp2YXIoLS1jLWluay0zKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgdmFyKC0tZWFzZSl9LnBhcnR5LXRpbGVbYXJpYS1leHBhbmRlZD10cnVlXSAuaWNve3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5wYXJ0eS10aWxlOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6LTJweDtib3JkZXItcmFkaXVzOjEycHh9LnBhcnR5LXBhbmVse2Rpc3BsYXk6Z3JpZDtnYXA6MnB4O3BhZGRpbmc6NHB4IDEwcHggOHB4IDE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0ucGFydHktcGFuZWxbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnBhcnR5LXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjAwfS5wYXJ0eS1yb3cgLnN0ZXAubGlnaHR7Ym9yZGVyOjA7cGFkZGluZzowfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnBhcnR5LXRpbGUgLmljb3t0cmFuc2l0aW9uOm5vbmV9fS5wYXJ0eS12e3doaXRlLXNwYWNlOm5vd3JhcH06cm9vdCAuZmxleC1kYXRlczpub3QoLmF0LWVuZCl7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzAwMCBjYWxjKDEwMCUgLSAyNHB4KSx0cmFuc3BhcmVudCl9OnJvb3QgLmZsZXgtZGF0ZXM6bm90KC5hdC1zdGFydCk6bm90KC5hdC1lbmQpe21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMwMDAgMTJweCwjMDAwIGNhbGMoMTAwJSAtIDI0cHgpLHRyYW5zcGFyZW50KX06cm9vdCAuZmxleC1kYXRlcy5hdC1lbmQ6bm90KC5hdC1zdGFydCl7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4KX06cm9vdCAuZmR7cGFkZGluZzo5cHggMnB4IDExcHh9OnJvb3QgLmZkLWxvd3tmb250LXNpemU6OXB4O2xldHRlci1zcGFjaW5nOjB9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMXB4fS5oLXdoZXJlIC5zaW17Zm9udC1zaXplOjEwcHg7dmVydGljYWwtYWxpZ246LjFlbX0uY29uZiAuYmFuZCAud3Z7Zm9udC1zaXplOjE3cHh9QG1lZGlhKG1heC13aWR0aDo0MjBweCl7LmNvbmYgLmJhbmQgLnd2IHNtYWxse2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjFweCAwIDB9LmNvbmYgLmJhbmQtZHtwYWRkaW5nOjlweCAxMHB4fX0ucGF5LWZvcntkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LnBheS1mb3IgLndoZXJle2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NjAwfS5wYXktZm9yIC5ub3Rle2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fXAucXVpZXQtZW5ke21hcmdpbjo2cHggMCAwO3RleHQtYWxpZ246Y2VudGVyfS5saW5rcyAubGluay1yb3d7Ym9yZGVyLXJhZGl1czowfSNjb250ZW50Omhhcygud2hlbmJhciAuY2FsKT4uc3RyaXAtaCwjY29udGVudDpoYXMoLndoZW5iYXIgLmNhbCk+LmZsZXgtZGF0ZXN7ZGlzcGxheTpub25lfS5jZC5iZWZvcmU6bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tYy1pbmspfS5jZC5pbjpmb2N1cy12aXNpYmxlPnNwYW4sLmNkLm91dDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZS1jb2xvcjp2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9LmNhbC1mb290IC5nb3ttaW4taGVpZ2h0OjM2cHh9OnJvb3QgLnQtZm9vdHtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NnB4fTpyb290IC50LWZvb3QgLnQtZnJvbXt0ZXh0LWFsaWduOmVuZH06cm9vdCAudC1nb3tkaXNwbGF5OmdyaWQ7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDttYXJnaW4tdG9wOjJweDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTMpfTpyb290IC50aWxlOmhvdmVyIC50LWdve2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjE1MnB4O3dpZHRoOjE1MnB4O2FzcGVjdC1yYXRpbzo0IC8gM319OnJvb3QgLnQtZnJvbS50LW5vbmV7bWF4LXdpZHRoOjEwOHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOjEwNHB4fS5wYXJ0eS1yb3cgLnN0ZXAgYnV0dG9uLC53aGVuLXJvb21zIC5zdGVwIGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5wYXJ0eS1yb3cgLnN0ZXAgYnV0dG9uOmRpc2FibGVkLC53aGVuLXJvb21zIC5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5zZWctYlthcmlhLXByZXNzZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxLjVweCB2YXIoLS1jLXByaW1hcnkpfS5yb29tLWhvdXJze2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDRweCAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byAxZnI7Y29sdW1uLWdhcDoxNHB4fS5zay1pbWd7Z3JpZC1yb3c6MSAvIHNwYW4gMzthc3BlY3QtcmF0aW86YXV0bztoZWlnaHQ6MTA0cHh9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE1MnB4IDFmcn0uc2staW1ne2hlaWdodDoxMTRweH19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmhlcm97YXNwZWN0LXJhdGlvOjIgLyAxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve2FzcGVjdC1yYXRpbzozIC8gMX19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmgtc3VtOm5vdCguc2ltLW5vdGUpLDpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5hbWVue29yZGVyOjF9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmdvb2QtdG8ta25vd3tvcmRlcjoyfTpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86MiAvIDF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzo0IC8gM319OnJvb3QgLnJvb20uaG91cmx5e2dyaWQtdGVtcGxhdGUtY29sdW1uczo5NnB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAiYnV5IGJ1eSJ9OnJvb3QgLnJvb20uaG91cmx5IC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2NvbHVtbi1nYXA6MjJweH06cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6MTA4cHg7d2lkdGg6MTA4cHg7YXNwZWN0LXJhdGlvOjF9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTdweH0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwOHB4IDFmcn0uc2staW1ne2hlaWdodDoxMDhweH19OnJvb3QgLnQtc3ViIC5uYntkaXNwbGF5OmJsb2NrfTpyb290IC50LXN1YiAudC1zZXB7ZGlzcGxheTpub25lfS5jaGlwOm5vdCgudG9vbCk6bm90KC5uZXh0KXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfWJ1dHRvbi5jaGlwOm5vdCgudG9vbCk6bm90KC5uZXh0KTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmNoaXBbYXJpYS1wcmVzc2VkPXRydWVdOm5vdCgudG9vbCl7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnN0ZXB7Z2FwOjRweDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uc3RlcCBidXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3RlcCBidXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC5yb3dze2dhcDowO2JvcmRlci10b3A6MS41cHggc29saWQgdmFyKC0tYy1pbmspfTpyb290IC5yb3dzPi5yb3d7cGFkZGluZzoxNHB4IDA7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ucGF5LWNoZWNre2p1c3RpZnktc2VsZjpjZW50ZXI7bWluLWhlaWdodDozNnB4O2ZvbnQtc2l6ZToxM3B4fS5zdGF0ZS1ke3RleHQtd3JhcDpwcmV0dHl9Lmhlcm8td2hlcmUgLnJhdGUgc3Zne2NvbG9yOiNmZmZ9LnN0cmlwLWtleXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6OHB4O2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LnN0cmlwLWtleTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLXN1Y2Nlc3MpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LWJvZHl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztncmlkLXRlbXBsYXRlLWFyZWFzOiJuYW1lIG5hbWUiICJtZXRhIG1ldGEiICJ0YWdzIGZvb3QiO2FsaWduLWl0ZW1zOmVuZH06cm9vdCAudC1uYW1le2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC1saW5lLWNsYW1wOnVuc2V0O2xpbmUtY2xhbXA6bm9uZX06cm9vdCAudC10YWdzOmVtcHR5e2dyaWQtY29sdW1uOjEgLyAtMX19OnJvb3QgLnQtZm9vdHtncmlkLWFyZWE6Zm9vdDtqdXN0aWZ5LXNlbGY6ZW5kfTpyb290IC50LXN1Ynt0ZXh0LWFsaWduOmVuZH1AbWVkaWEobWF4LXdpZHRoOjQyMHB4KXs6cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjEwLjVweDtsZXR0ZXItc3BhY2luZzotLjAzZW19OnJvb3QgLmZkLWRue2ZvbnQtc2l6ZToxOHB4fX0ucGFydHktdnt3aGl0ZS1zcGFjZTpub3JtYWx9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmFtZW57b3JkZXI6LTV9LnJldmlldy1oIC5oLXdoZXJle21hcmdpbi10b3A6MnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjYwMH0uYmFuZC1kOmxhc3QtY2hpbGR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt0ZXh0LWFsaWduOnN0YXJ0fS5yb29tLWhvdXJze2NvbG9yOnZhcigtLWMtaW5rLTIpfS5yb3cgLmFjdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnJvdyAuYWN0aW9uIC53bHttYXJnaW46MH06cm9vdHstLWMtYWNjZW50OiB2YXIoLS1jLWluayl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jYXJke2JvcmRlci10b3A6M3B4IHNvbGlkIHZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLnRpbGVzLDpyb290W2RhdGEtYWNjZW50XSAucm9vbXMsOnJvb3RbZGF0YS1hY2NlbnRdIC5yb3dze2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuaGVyby10eHQ6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDoyOHB4O2hlaWdodDoycHg7bWFyZ2luLWJvdHRvbToycHg7YmFja2dyb3VuZDp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5wYXktZm9yIC53aGVyZTpiZWZvcmUsOnJvb3RbZGF0YS1hY2NlbnRdIC5yZXZpZXctaCAuaC13aGVyZTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDttYXJnaW4tYm90dG9tOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmNvbmYgLndoZXJle2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuZmQub257Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCB2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jZC5pbj5zcGFuLDpyb290W2RhdGEtYWNjZW50XSAuY2Qub3V0PnNwYW57Ym94LXNoYWRvdzowIDAgMCAycHggdmFyKC0tYy1iZyksMCAwIDAgMy41cHggdmFyKC0tYy1hY2NlbnQpfS5ib29raW5nLXJvd3tjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uYm9va2luZy1yb3c6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfTpyb290IC5yb3dzPi5ib29raW5nLXJvd3twYWRkaW5nLWlubGluZTo4cHg7bWFyZ2luLWlubGluZTotOHB4O2JvcmRlci1yYWRpdXM6MTBweH0ub3Blbi1nb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTMpO2N1cnNvcjpwb2ludGVyfS5vcGVuLWdvOmhvdmVyLC5ib29raW5nLXJvdzpob3ZlciAub3Blbi1nb3tjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0ub3Blbi1nbzpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjFweH0uYm9va2VkLndhaXRpbmcgLmJvb2tlZC1tYXJre2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5ib29rZWQuZW5kZWQgLmJvb2tlZC1tYXJre2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0zKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucnR5cGV7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMDBweCBtaW5tYXgoMCwxZnIpO2NvbHVtbi1nYXA6MjBweDtwYWRkaW5nOjE2cHggMCA2cHh9OnJvb3QgLnJ0eXBlLWhlYWR7ZGlzcGxheTpjb250ZW50c306cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2dyaWQtY29sdW1uOjE7Z3JpZC1yb3c6MSAvIHNwYW4gMjthc3BlY3QtcmF0aW86NCAvIDN9OnJvb3QgLnJ0eXBlIC5yb29tLW1haW57Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoxO3BhZGRpbmctYm90dG9tOjRweH06cm9vdCAucnR5cGUgLnJhdGVze2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MjthbGlnbi1zZWxmOnN0YXJ0fTpyb290IC5ycmF0ZXtwYWRkaW5nOjEwcHggMDtnYXA6MTRweH06cm9vdCAucnJhdGUgLnJhdGUtbWFpbntnYXA6NHB4fTpyb290IC5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMDBweCBtaW5tYXgoMCwxZnIpO2dhcDo4cHggMjBweDtwYWRkaW5nOjE2cHggMH06cm9vdCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzo0IC8gM306cm9vdCAuZmxleC1kYXRlc3t3aWR0aDptYXgtY29udGVudDttYXgtd2lkdGg6MTAwJTtncmlkLWF1dG8tY29sdW1uczptaW5tYXgoODRweCwxMDRweCl9OnJvb3QgLmZke3BhZGRpbmc6OHB4IDZweCAxMHB4fX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucnJhdGUgLnJvb20tYnV5e2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE2cHh9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eSAucHJpY2V7YWxpZ24taXRlbXM6ZmxleC1lbmQ7dGV4dC1hbGlnbjplbmR9fTpyb290W2RhdGEtYWNjZW50XXstLWMtYWNjZW50OiB2YXIoLS1hY2NlbnQtcmF3KX06cm9vdFtkYXRhLXRoZW1lPWRhcmtdW2RhdGEtYWNjZW50LWRpbV17LS1jLWFjY2VudDogdmFyKC0tYy1saW5lLTIpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5mbGV4LWRhdGVze3dpZHRoOm1pbigxMDAlLGNhbGModmFyKC0tbiwgNykgKiAxMThweCkpO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heCgwLDFmcil9OnJvb3QgLmZke2dhcDozcHg7cGFkZGluZzoxMnB4IDhweCAxNHB4fTpyb290IC5mZC1kbntmb250LXNpemU6MjJweH06cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzowfX06cm9vdHstLWMtZm9jdXM6IHZhcigtLWMtcHJpbWFyeSl9OnJvb3RbZGF0YS1icmFuZF06bm90KFtkYXRhLXRoZW1lPWRhcmtdKXstLWMtcHJpbWFyeTogdmFyKC0tYnJhbmQpOy0tYy1wcmltYXJ5LWhvdmVyOiB2YXIoLS1icmFuZC1ob3Zlcik7LS1jLXByaW1hcnktcHJlc3M6IHZhcigtLWJyYW5kLXByZXNzKTstLWMtb24tcHJpbWFyeTogdmFyKC0tYnJhbmQtb24pOy0tYy1wcmltYXJ5LWluazogdmFyKC0tYnJhbmQtaW5rKTstLWMtcHJpbWFyeS1zb2Z0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYnJhbmQpIDEyJSwgI2ZmZmZmZik7LS1jLXByaW1hcnktc29mdC0yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYnJhbmQpIDIyJSwgI2ZmZmZmZik7LS1jLWZvY3VzOiB2YXIoLS1icmFuZC1mb2N1cyl9W2RhdGEtdGhlbWU9ZGFya106cm9vdFtkYXRhLWJyYW5kXTpub3QoW2RhdGEtYnJhbmQtZGFyay1kaW1dKXstLWMtcHJpbWFyeTogdmFyKC0tYnJhbmQpOy0tYy1wcmltYXJ5LWhvdmVyOiB2YXIoLS1icmFuZC1ob3Zlcik7LS1jLXByaW1hcnktcHJlc3M6IHZhcigtLWJyYW5kLXByZXNzKTstLWMtb24tcHJpbWFyeTogdmFyKC0tYnJhbmQtb24pOy0tYy1wcmltYXJ5LWluazogdmFyKC0tYnJhbmQtaW5rLWRhcmspOy0tYy1wcmltYXJ5LXNvZnQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1icmFuZCkgMTYlLCAjMTExNzIzKTstLWMtcHJpbWFyeS1zb2Z0LTI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1icmFuZCkgMjYlLCAjMTExNzIzKTstLWMtZm9jdXM6IHZhcigtLWJyYW5kLWZvY3VzLWRhcmspfS5iYWRnZS53YXJue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9LmJhZGdlLndhcm4gLmljb3t3aWR0aDoxMnB4O2hlaWdodDoxMnB4O2ZsZXg6bm9uZX0uaG91ci1ub3Rle2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweCAxMHB4O3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTJweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NTB9LmhvdXItbm90ZSAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5ob3VyLW5vdGUgc3BhbntmbGV4OjEgMSAyMDBweH0uaG91ci1ub3RlIC5saW5reXttaW4taGVpZ2h0OjMycHh9OnJvb3RbZGF0YS1mb250LW51bV0gOmlzKC50LWZyb20sLnN1bSwubW9uZXktb3V0LC5mZC1wcmljZSwuY29sLXByaWNlLC5wcy1wcmljZSwubiwud3YsLmNkLXAsLnAtdG90YWwsLmZkLWRuLC5wYXktYW1vdW50LC5wcmljZS1pbil7Zm9udC1mYW1pbHk6dmFyKC0tZi1udW0pfS5mYWlsZWR7bWFyZ2luLXRvcDoxOHB4fS5mYWlsZWQgLmZhaWx7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7cGFkZGluZzoxMnB4IDE0cHg7bWFyZ2luLXRvcDoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYmFkLWJnKX0uZmFpbGVkIC5mYWlsLWh7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Y29sb3I6dmFyKC0tYmFkKX0uZmFpbGVkIC5mYWlsLWggLndoZXJle2NvbG9yOnZhcigtLWZnKX0uZmFpbGVkIC5mYWlsLXdoeXttYXJnaW46OHB4IDAgMDtjb2xvcjp2YXIoLS1mZyl9LmZhaWxlZCAuZmFpbC1hbHRze21hcmdpbi10b3A6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWJnKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7cGFkZGluZzo4cHggMTBweH0uZmFpbGVkIC5hbHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nOjhweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpfS5mYWlsZWQgLmFsdDpmaXJzdC1vZi10eXBle2JvcmRlci10b3A6MH0uZmFpbGVkIC5hbHQtdHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDowfS5mYWlsZWQgLmFsdC10IHNtYWxse2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZmFpbGVkIC5mYWlsLWZvb3R7ZGlzcGxheTpmbGV4O2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tdG9wOjEwcHh9PC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgPCEtLSBBIGNhbGwgb3V0IHRvIHRoZSBzZXJ2ZXI6IGEgbGluZSBhbG9uZyB0aGUgdG9wIC0gc2VlIGBzZXRCdXN5YC4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImJ1c3liYXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iaGVhZCI+CiAgICAgICAgPCEtLSBUaGUgZ3JvdXAncyB3b3JkbWFyayBhcnJpdmVzIFdJVEggVEhFIERBVEEgYXMgYGxvZ29VcmxgLiBOb3RoaW5nIGlzCiAgICAgICAgICAgICBiYWtlZCBpbiBoZXJlOiBhIGxvZ28gY29tcGlsZWQgaW50byB0aGUgY2FyZCBpcyB0aGUgZmlyc3QgYnJhbmQncywKICAgICAgICAgICAgIGFuZCBldmVyeSBob3RlbCBncm91cCBhZnRlciB0aGVtIHdvdWxkIHdlYXIgaXQuIFRoZSBicmFuZCBpcyBhbHNvCiAgICAgICAgICAgICB0aGUgd2F5IGhvbWUsIG9uIGV2ZXJ5IHZpZXcgKHJvYmluLCAyMDI2LTA5LTE4KS4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaG9tZSIgaWQ9ImhvbWUiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiIGFyaWEtbGFiZWw9IkJhY2sgdG8gdGhlIGhvdGVscyI+CiAgICAgICAgICA8aW1nIGNsYXNzPSJicmFuZCIgaWQ9ImJyYW5kIiBhbHQ9IiIgaGlkZGVuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlIiBpZD0idGl0bGUiPjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzayBzay1sb2dvIiBpZD0ic2tsb2dvIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgogICAgICAgIDwvYnV0dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdWIiIGlkPSJzdWIiPjwvc3Bhbj4KICAgICAgICA8IS0tIFRoZSB0aWVyLCBvciB0aGUgd2F5IGluLiBBIG1lbWJlciByYXRlIGlzIGEgZmFjdCBhYm91dCBldmVyeSBwcmljZQogICAgICAgICAgICAgb24gdGhlIGNhcmQsIHNvIGl0IGJlbG9uZ3MgaW4gdGhlIGhlYWRlciByYXRoZXIgdGhhbiBvbiBvbmUgdmlldy4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibWVtYmVyY2hpcCIgaWQ9Im1lbWJlcmNoaXAiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImFzay1zaWduLWluIiBoaWRkZW4+PC9idXR0b24+CiAgICAgICAgPCEtLSBUaGUgdHJpcCwgZnJvbSB0aGUgdG9wOiBhIGZvb3Rlci1vbmx5IGNhcnQgbWVhbnMgc2Nyb2xsaW5nIHBhc3QKICAgICAgICAgICAgIHR3ZW50eSB0aWxlcyB0byByZWFjaCBpdCAodGhlIHNob3BwaW5nIGNhcmQsIDIwMjYtMDktMTcpLiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJoZWFkdHJpcCIgaWQ9ImhlYWR0cmlwIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJ0cmlwIiBoaWRkZW4gYXJpYS1sYWJlbD0iVmlldyB0aGUgdHJpcCI+CiAgICAgICAgICA8IS0tIEEgc3VpdGNhc2U6IGEgdHJpcCBvZiBzdGF5cywgbm90IGEgc2hvcHBpbmcgYmFnLiAtLT4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIgogICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICA8cmVjdCB4PSIzLjUiIHk9IjciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMi41IiByeD0iMi41IiAvPgogICAgICAgICAgICA8cGF0aCBkPSJNOSA3VjUuNUExLjUgMS41IDAgMCAxIDEwLjUgNGgzQTEuNSAxLjUgMCAwIDEgMTUgNS41VjdNMy41IDEyLjVoMTciIC8+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICAgIDxzcGFuIGlkPSJoZWFkdHJpcHdvcmQiPlRyaXA8L3NwYW4+PHNwYW4gY2xhc3M9ImhlYWR0cmlwLW4iIGlkPSJoZWFkdHJpcG4iPjA8L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8IS0tIEV2ZXJ5IHJhdGUgb24gYSBkZW1vbnN0cmF0aW9uIHdhcyBtYWRlIHVwOiBzYWlkIG9uY2UsIGhlcmUsIG9uIGV2ZXJ5CiAgICAgICAgICAgdmlldyAtIHNlZSBcYHBhaW50RGVtb1xgLiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZGVtb3N0cmlwIiBpZD0iZGVtb3N0cmlwIiByb2xlPSJub3RlIiBoaWRkZW4+PGIgaWQ9ImRlbW9sYWJlbCI+RGVtbzwvYj48c3BhbiBpZD0iZGVtb3RleHQiPjwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic3ViaGVhZCIgaWQ9InN1YmhlYWQiIGhpZGRlbj4KICAgICAgICA8IS0tIE9uZSBzdGVwIGJhY2sgSU5TSURFIHRoZSBjYXJkIC0gdGhlIHRocmVlIGhvdGVscyB0aGV5IHdlcmUgY29tcGFyaW5nCiAgICAgICAgICAgICB3aGVuIHRoZXkgdGFwcGVkIG9uZSAocm9iaW4sIDIwMjYtMDktMjEpLiBUaGUgYnJhbmQgYWJvdmUgZ29lcyBob21lLAogICAgICAgICAgICAgd2hpY2ggaXMgYSBkaWZmZXJlbnQgYW5zd2VyLiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJiYWNrYnRuIiBpZD0iYmFja2J0biIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYmFjayIgaGlkZGVuPjwvYnV0dG9uPgogICAgICAgIDwhLS0gQm9va2luZyBhIHJvb20gaXMgdGhyZWUgc3RlcHMsIGFuZCB0aGUgY2FyZCBzYXlzIHdoaWNoIG9uZSB0aGlzIGlzLiAtLT4KICAgICAgICA8b2wgY2xhc3M9ImZsb3ciIGlkPSJmbG93IiBhcmlhLWxhYmVsPSJCb29raW5nIHN0ZXBzIiBoaWRkZW4+CiAgICAgICAgICA8bGkgZGF0YS1zdGVwPSIxIj48c3BhbiBjbGFzcz0iZmRvdCI+MTwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhYmVsIiBpZD0iZmxvdzEiPkhvdGVsPC9zcGFuPjwvbGk+CiAgICAgICAgICA8bGkgZGF0YS1zdGVwPSIyIj48c3BhbiBjbGFzcz0iZmRvdCI+Mjwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhYmVsIiBpZD0iZmxvdzIiPlJvb208L3NwYW4+PC9saT4KICAgICAgICAgIDxsaSBkYXRhLXN0ZXA9IjMiPjxzcGFuIGNsYXNzPSJmZG90Ij4zPC9zcGFuPjxzcGFuIGNsYXNzPSJmbGFiZWwiIGlkPSJmbG93MyI+Qm9vazwvc3Bhbj48L2xpPgogICAgICAgIDwvb2w+CiAgICAgIDwvZGl2PgogICAgICA8IS0tIEJlZm9yZSB0aGUgZmlyc3QgYW5zd2VyOiB0aGUgc2hhcGVzIG9mIHdoYXQgaXMgY29taW5nLCBub3QgYSB3b3JkLiAtLT4KICAgICAgPGRpdiBpZD0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2tlbCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxhYmVsPSJMb2FkaW5nIj4KICAgICAgICAgIDwhLS0gVGhlIHNoYXBlcyBvZiB0aGUgbGlzdCB0aGF0IGlzIGNvbWluZywgd2hlcmUgdGhleSB3aWxsIGJlOiBhCiAgICAgICAgICAgICAgIHRpdGxlLCBpdHMgbGluZSwgdGhlIGRhdGVzLCB0aGUgc29ydCBhbmQgZmlsdGVycywgdGhlIHRpbGVzLiAtLT4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXNheSI+RmluZGluZyBob3RlbHPigKY8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrIHNrLWxpbmUgc2stc3ViIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzay1jaGlwcyI+PGRpdiBjbGFzcz0ic2sgc2stY2hpcCI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stY2hpcCBzaG9ydCI+PC9kaXY+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzay10aWxlcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXRpbGUiPjxkaXYgY2xhc3M9InNrIHNrLWltZyI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSBzaG9ydCI+PC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXRpbGUiPjxkaXYgY2xhc3M9InNrIHNrLWltZyI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stbGluZSBzaG9ydCI+PC9kaXY+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K', 'base64').toString('utf8');
|
|
6
6
|
/** sha256 of everything the card is built from (card-kit's source-hash.mjs) - the drift guard reads this. */
|
|
7
|
-
export const HOTEL_CARD_SOURCE_SHA = '
|
|
7
|
+
export const HOTEL_CARD_SOURCE_SHA = 'beb309bfd1439ecd3439b03b90a56432d85ef4815a6a3ed157e4c78dc17276a3';
|
|
8
8
|
//# sourceMappingURL=card.generated.js.map
|